IP Library Granted Patent US 11,157,509
Granted Patent B2
US 11,157,509 · App. 15/963,841 · Granted Oct 26, 2021

Methods for enhancing a legacy single tenant application system to a multi-tenant application system with minimal changes

Inventor: Ashish Gujarathi (Parkland, FL)
Assignee: Citrix Systems, Inc.
G06F16/258G06F9/547G06F16/40G06F16/90G06F16/9014G06F16/9566H04L67/02G06F8/76
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,157,509
App. No.
15/963,841
Filed
Apr 26, 2018
Granted
Oct 26, 2021
Kind
B2
Examiner
BUI, THUY T
Art Unit
2153
USPC
707/756
Abstract

Systems and methods for accessing single-tenant databases comprising a multi-tenant aware cluster manager in communication with instances of single-tenant databases are described. The cluster manager can establish a uniform resource locator (URL) unique for each tenant to access the cluster manager. Each of the instances of single-tenant databases can include data for a corresponding tenant. The cluster manager can receive a request from a client to access a database corresponding to the first tenant. The request can include the URL established for the first tenant. The cluster manager can identify the first tenant based on the URL of the request. The cluster manager can obtain, responsive to identification of the first tenant, a tenant context of the first tenant from a storage. The cluster manager can access, using the first tenant context and responsive to the request, a first instance of the single-tenant databases corresponding to the first tenant.

Claims (28)

1. A system for accessing single-tenant databases comprising a multi-tenant aware cluster manager in communication with a plurality of instances of the single-tenant databases, the system comprising one or more processors and a memory element storing executable instructions, which when processed by the one or more processors cause the system to:

establish a uniform resource locator (URL) unique for each tenant of a plurality of tenants to access the cluster manager, each of the plurality of instances of the single-tenant databases comprising data for a corresponding tenant of the plurality of tenants;

maintain a plurality of objects corresponding to each tenant of the plurality of tenants, the plurality of objects used for at least one of saving or tracking one or more states corresponding to each tenant of the plurality of tenants;

receive a request from a client of a first tenant of the plurality of tenants to modify an object stored in a database corresponding to the first tenant, the request comprising the URL established for the first tenant as a source address of the request, the source address used for identifying a source of the request;

identify, from the source address of the request to modify the object stored in the database, a tenant context including a tenant identifier of the first tenant based at least on the URL of the request;

store, in a thread-local storage accessible to the cluster manager and responsive to identifying the tenant context from the request to modify the object stored in the database, the tenant context identifying the first tenant to propagate the tenant context through one or more layers of code of the cluster manager;

obtain, responsive to the request forwarded to the cluster manager, the tenant context of the first tenant from the thread-local storage;

access, using the tenant context stored in the thread-local storage, a first instance of the plurality of instances of the single-tenant databases corresponding to the first tenant; and

access, via a container implemented using a hash map of the plurality of objects keyed by the tenant identifier, the object identified in the request using the tenant context stored in the thread-local storage to modify the object corresponding the request.

2. The system of claim 1 , wherein the tenant context comprises one of information to access the first instance of the single-tenant databases or information on a state of the first tenant in connection with use of the first instance of the single-tenant databases.

3. The system of claim 1 , wherein the one or more processors are further configured to cause the system to identify the tenant identifier based on information stored in a thread-local storage, the cluster manager maintaining a plurality of tenant contexts in a corresponding thread-local storage.

4. The system of claim 1 , wherein the one or more processors are further configured to cause the system to access the first instance of the plurality of instances of the single-tenant databases corresponding to the first tenant by accessing application programming interfaces of the cluster manager using one of the tenant identifier or the tenant context stored in a local-thread storage for the first tenant.

5. The system of claim 1 , wherein the one or more processors are further configured to cause the system to access the first instance of the plurality of instances of the single-tenant databases corresponding to the first tenant by accessing data from the first instance of the single-tenant databases, wherein each instance of the single-tenant databases is constructed to store data for a single tenant.

6. The system of claim 1 , wherein the one or more processors are further configured to cause the system to receive the request from the client by receiving a hypertext transfer protocol (HTTP) request from the client, the HTTP request comprising a header including the URL established for the first tenant.

7. A method comprising:

(a) establishing, by one or more processors in communication with a plurality of instances of single-tenant databases, a uniform resource locator (URL) unique for each tenant of a plurality of tenants to access a cluster manager, each of the plurality of instances of the single-tenant databases comprising data for a corresponding tenant of the plurality of tenants;

(b) maintaining, by the one or more processors, a plurality of objects corresponding to each tenant of the plurality of tenants, the plurality of objects used for at least one of saving or tracking one or more states corresponding to each tenant of the plurality of tenants;

(c) receiving, by the one or more processors, a request from a client of a first tenant of the plurality of tenants to modify an object stored in a database corresponding to the first tenant, the request comprising the URL established for the first tenant as a source address of the request, the source address used for identifying a source of the request;

(d) identifying, by the one or more processors, from the source address of the request to modify the object stored in the database, a tenant context including a tenant identifier of the first tenant based at least on the URL of the request;

(e) storing, by the one or more processors, in a thread-local storage accessible to the cluster manager and responsive to identifying the tenant context from the request to modify the object stored in the database, the tenant context identifying the first tenant to propagate the tenant context through one or more layers of code of the cluster manager;

(f) obtaining, by the one or more processors responsive to the request forwarded to the cluster manager, the tenant context of the first tenant from the thread-local storage;

(g) accessing, by the one or more processors using the tenant context stored in the thread-local storage, a first instance of the plurality of instances of the single-tenant databases corresponding to the first tenant; and

(h) accessing, by the one or more processors, via a container implemented using a hash map of the plurality of objects keyed by the tenant identifier, the object identified in the request using the tenant context stored in the thread-local storage to modify the object corresponding the request.

8. The method of claim 7 , wherein the tenant context comprises one of information to access the first instance of the single-tenant databases or information on a state of the first tenant in connection with use of the first instance of the single-tenant databases.

9. The method of claim 7 , further comprising identifying, by the one or more processors, the tenant context based on information stored in a thread-local storage, the cluster manager maintaining a plurality of tenant contexts in a corresponding thread-local storage.

10. The method of claim 7 , wherein (g) further comprises accessing, by the one or more processors, application programming interfaces of the cluster manager using one of the tenant identifier or the tenant identifier stored in a local-thread storage for the first tenant.

11. The method of claim 7 , wherein (g) further comprises accessing, by the one or more processors, data from the first instance of the single-tenant databases, wherein each instance of the single-tenant databases is constructed to store data for a single tenant.

12. The method of claim 7 , wherein (c) further comprises receiving, by the one or more processors, a hypertext transfer protocol (HTTP) request from the client, the HTTP request comprising a header including the URL established for the first tenant.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2018
From: GUJARATHI, ASHISH
To: CITRIX SYSTEMS, INC.
Reel/Frame 046037/0891 →
Continuity (2)
Provisional Application 62490892 · Apr 27, 2017
Related Publication 20180314746A1 · Nov 1, 2018