Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach
First Claim
1. A method of controlling use by concurrent users of a distributed resource on a network, wherein use of the resource is limited to a specified maximum number of concurrent users, the method comprising the computer-implemented steps of:
- providing a distributed lock manager process comprising a plurality of local lock manager processes executing on a corresponding plurality of hosts,wherein each of the plurality of local lock manager processes may grant a lock on the same resource at any time when a number of outstanding locks granted on the same resource is less than the specified maximum number of concurrent users;
associating a user identification for each user with one host of the plurality of hosts; and
responding to a request for the resource associated with a first user having a first user identification associated with a first host of the plurality of hosts by requesting a lock from a first local lock manager process executing on the first host.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of controlling concurrent users of a distributed resource on a network is disclosed. In one aspect, there are one or more local lock managers executing on corresponding hosts and cooperating as a distributed lock manager. The resource is limited to a maximum number of concurrent users. A user identification for each user is associated with one host. In response to a request associated with a particular user associated with a first host, a lock is requested from a first local lock manager process executing on the first host. A related method of handling a request for a count-limited resource includes receiving a request from a client process for the computer resource. If it is determined that the request exceeds a maximum count for the resource, then it is determined whether a current time is within a retry time period of the client'"'"'s first request. If it is determined the current time is within the retry time period, then it is automatically determined again whether the request exceeds the maximum count for the resource. If it is determined that the request does not exceed the maximum count, then the resource is provided to the client process.
289 Citations
36 Claims
-
1. A method of controlling use by concurrent users of a distributed resource on a network, wherein use of the resource is limited to a specified maximum number of concurrent users, the method comprising the computer-implemented steps of:
-
providing a distributed lock manager process comprising a plurality of local lock manager processes executing on a corresponding plurality of hosts, wherein each of the plurality of local lock manager processes may grant a lock on the same resource at any time when a number of outstanding locks granted on the same resource is less than the specified maximum number of concurrent users; associating a user identification for each user with one host of the plurality of hosts; and responding to a request for the resource associated with a first user having a first user identification associated with a first host of the plurality of hosts by requesting a lock from a first local lock manager process executing on the first host. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of controlling concurrent users of a distributed resource on a network, the resource limited to a maximum number of concurrent users, the method comprising the computer-implemented steps of:
-
receiving a request for the distributed resource from a client process for a user having a user identification; determining a home location associated with the user identification, the home location indicating a unique host among a plurality of hosts that execute a corresponding plurality of local lock manager processes of a distributed lock manager process, wherein each of the plurality of local lock manager processes may grant a lock on the same resource; sending a request for a lock object for the distributed resource to a first local lock manager process of the distributed lock manager process, the request including the home location; receiving the lock object for the distributed resource from a second local lock manager process executing on the unique host, if a number of outstanding locks granted by the second local lock manager process is less than a value of a local resource maximum defined for the second local lock manager process; and providing access to the resource to the first client only in response to receiving the lock object. - View Dependent Claims (10, 11, 12)
-
-
13. A method of controlling concurrent users of a distributed resource on a network, the distributed resource limited to a maximum number of concurrent users, the method comprising the steps of:
-
receiving at a first local lock manager process of a distributed lock manager process a request for a lock object for the distributed resource from a resource server, wherein the request includes data indicating a particular user home location; determining whether a second local lock manager process of the distributed lock manager process is associated with the particular user home location, and if so, requesting the lock object from the second local lock manager process, wherein the first local lock manager process may grant a lock on the same resource as the second local lock manager process. - View Dependent Claims (14, 15, 16, 17)
-
-
18. A method of distributing a resource on a network, the resource limited to a maximum number of concurrent users, the method comprising the steps of:
-
providing a distributed lock manager process comprising a plurality of local lock manager processes executing on a corresponding plurality of hosts, wherein each of the plurality of local lock manager processes may grant a lock on the same resource; generating a value for a local resource maximum number of users stored on each host of the plurality of hosts such that a summation over the plurality of hosts of the value for the local resource maximum yields an aggregate value that does not exceed the maximum number of concurrent users; determining whether to increase a first value in a first resource maximum stored on a first host of the plurality of hosts; and if it is determined to increase the first resource maximum, then decreasing by a particular amount a second value in a second resource maximum stored on a second host of the plurality of hosts, and increasing by the particular amount the first value in the first resource maximum stored on the first host, wherein each local lock manager process is configured to grant a lock for the resource if the number of outstanding locks granted by the local lock manager process is less than a value of the local resource maximum stored on the corresponding host. - View Dependent Claims (19, 20, 21, 22, 23)
-
-
24. A computer-readable storage medium storing one or more sequences of instructions for controlling a number of concurrent users of a distributed resource on a network, the resource limited to a maximum number of concurrent users, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
-
associating a user identification for each user with one host of a plurality of hosts on which are executing a corresponding plurality of local lock manager processes of a distributed lock manager process, wherein each of the plurality of local lock manager processes may grant a lock on the same resource at any time when a number of outstanding locks granted on the same resource is less than the specified maximum number of concurrent users; and responding to a request for the resource associated with a first user having a first user identification associated with a first host of the plurality of hosts by requesting a lock from a first local lock manager executing on the first host.
-
-
25. A computer-readable storage medium storing one or more sequences of instructions for controlling a number of concurrent users of a distributed resource on a network, the resource limited to a maximum number of concurrent users, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
-
receiving a request for the distributed resource from a client process for a user having a user identification; determining one home location associated with the user identification, the home location indicating a unique host among a plurality of hosts executing a corresponding plurality of local lock manager processes of a distributed lock manager process, wherein each of the plurality of local lock manager processes may grant a lock on the same resource; and sending a request for a lock object for the distributed resource to a first local lock manager process of the distributed lock manager process, the request including the home location; receiving the lock object for the distributed resource from a second local lock manager process executing on the unique host, if a number of outstanding locks granted by the second local lock manager process is less than a value of a local resource maximum defined for the second local lock manager process; and providing access to the resource to the first client in response to receiving the lock object.
-
-
26. A computer-readable storage medium storing one or more sequences of instructions for controlling a number of concurrent users of a distributed resource on a network, the distributed resource limited to a maximum number of concurrent users which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
-
receiving at a first local lock manager process of a distributed lock manager process a request for a lock object for the distributed resource from a resource server, the request including data indicating a particular user home location, and the first local lock manager process executing on a first host; determining whether a second local lock manager process of the distributed lock manager process is associated with the particular user home location, the second local lock manager process executing on a second host different from the first host, wherein the first local lock manager process may grant a lock on the same resource as the second local lock manager process; and if it is determined that the second local lock manager process is associated with the particular home location, then requesting the lock object from the second local lock manager process.
-
-
27. A computer-readable storage medium storing one or more sequences of instructions for distributing a resource on a network, the resource limited to a maximum number of concurrent users, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
-
generating a value for a local resource maximum number of users stored on each host of a plurality of hosts executing a corresponding plurality of local lock manager processes of a distributed lock manager process such that a summation over the plurality of hosts of the value for the local resource maximum yields an aggregate value that does not exceed the maximum number of concurrent users, wherein each of the plurality of local lock manager processes may grant a lock on the same resource; determining whether to increase a first value in a first resource maximum stored on a first host of the plurality of hosts; and if it is determined to increase the first resource maximum, then decreasing by a particular amount a second value in a second resource maximum stored on a second host of the plurality of hosts, and increasing by the particular amount the first value in the first resource maximum stored on the first host, wherein each local lock manager process is configured to grant a lock for the resource if the number of outstanding locks granted by the local lock manager process is less than a value of the local resource maximum stored on the corresponding host.
-
-
28. An apparatus for controlling a number of concurrent users of a distributed resource on a network, the resource limited to a maximum number of concurrent users, comprising:
-
means for associating a user identification for each of the concurrent users with a unique host; and means for responding to a request for the resource associated with a first user among the concurrent users who has a first user identification associated with a first host by requesting a lock from a local lock manager process executing on the first host, wherein the local lock manager process may grant a lock on the same resource as another local lock manager process at any time when a number of outstanding locks granted on the same resource is less than the maximum number of concurrent users.
-
-
29. An apparatus for controlling a number of concurrent users of a distributed resource on a network, the resource limited to a maximum number of concurrent users, comprising:
-
means for receiving a request for the distributed resource from a client process for a user having a user identification; means for determining one home location associated with the user identification, the home location indicating a unique host among a plurality of hosts executing a corresponding plurality of local lock manager processes of a distributed lock manager process, wherein each of the plurality of local lock manager processes may grant a lock on the same resource; means for sending a request for a lock object for the distributed resource to a first local lock manager process of the distributed lock manager process, the request including the home location; means for receiving the lock object for the distributed resource from a second local lock manager process executing on the unique host, if a number of outstanding locks granted by the second local lock manager process is less than a value of a local resource maximum defined for the second local lock manager process; and means for providing access to the resource to the first client in response to receiving the lock object.
-
-
30. An apparatus for controlling a number of concurrent users of a distributed resource on a network, the distributed resource limited to a maximum number of concurrent users, comprising:
-
means for receiving at a first local lock manager process of a distributed lock manager process a request for a lock object for the distributed resource from a resource server, the request including data indicating a particular user home location, and the first local lock manager process executing on a first host; means for determining whether a second local lock manager of the distributed lock manager is associated with the particular user home location, the second local lock manager process executing on a second host different from the first host, wherein the first local lock manager process may grant a lock on the same resource as the second local lock manager process; and means for requesting the lock object from the second local lock manager, if it is determined that the second local lock manager is associated with the particular home location.
-
-
31. An apparatus for distributing a resource on a network, the resource limited to a maximum number of concurrent users, comprising:
-
means for generating a value for a local resource maximum number of users stored on each host of a plurality of hosts in the network such that a summation over the plurality of hosts of the value for the local resource maximum yields an aggregate value that does not exceed the maximum number of concurrent users; means for determining whether to increase a first value in a first resource maximum stored on a first host of the plurality of hosts; and means for decreasing by a particular amount a second value in a second resource maximum stored on a second host of the plurality of hosts, if it is determined to increase the first resource maximum; means for increasing by the particular amount the first value in the first resource maximum stored on the first host, if it is determined to increase the first resource maximum; means for granting a lock for the resource if the number of outstanding locks granted by the local lock manager is less than a value of the local resource maximum stored on the corresponding host.
-
-
32. An apparatus for controlling use by concurrent users of a distributed resource on a network, wherein use of the resource is limited to a specified maximum number of concurrent users, comprising:
-
a host that is communicatively coupled to a network that contains the distributed resource and that comprises one or more processors and a computer-readable storage medium; one or more sequences of instructions stored in the computer-readable storage medium which, when executed by the one or more processors, cause the one or more processors to carry out the steps of; receiving, at a first local lock manager process of a distributed lock manager process, a request for a lock object for the distributed resource from a resource server, wherein the request includes data indicating a particular user home location; determining whether a second local lock manager process of the distributed lock manager process is associated with the particular user home location, and if so, requesting the lock object from the second local lock manager process, wherein the first local lock manager process may grant a lock on the same resource as the second local lock manager process. - View Dependent Claims (33, 34, 35, 36)
-
Specification