Negotiable locks for concurrent access of control data by multiple programs
First Claim
1. In a computing system supporting concurrent access to control data by a plurality of program sessions where each of the program sessions requests a lock on the control data for concurrent access by each program session, a method for controlling concurrent access to the control data comprising the machine executed steps of:
- receiving a request from a program session for a lock on the control data being accessed by the program session, wherein the control data is a set of rules for execution by the program session;
granting the holding of a lock on the control data;
receiving requests from other program sessions for additional locks on the control data, wherein at least one of the held lock and the requests for additional locks is an inferencing lock, wherein the inferencing lock allows a requesting program session to execute the control data;
determining whether each of the requests for an additional lock conflicts with any held lock on the control data, or whether each of the requests does not conflict with any held lock, or whether negotiation between the holder of the held lock and the requester of the additional lock is required;
granting an additional lock for each request that does not conflict with any held lock, wherein a reading update lock does not conflict with an inferencing lock, wherein the reading update lock indicates that the control data being locked will be modified;
for each request for an additional lock that conflicts with any held lock, determining whether the request and the conflicting held lock can be resolved by negotiation between the holder of the held lock and the requester of the additional lock;
denying those requests for additional locks where the request conflicts with any held lock and at least one of the held locks or requests cannot be resolved by negotiation between the holder of the held lock and the requester of the additional lock;
notifying program sessions holding locks and program sessions requesting locks if the requests and held locks are negotiable;
generating a success message indicating the negotiation has been successful or a failure message indicating the negotiation has failed, wherein said generating step further comprises the steps of;
detecting that a program session holding a lock has removed the held lock or has changed the held lock to a lock that does not conflict with each requested additional lock or that the requesting program sessions have changed the requested additional locks to locks that do not conflict with the held lock,sending a success message in response to any of the conditions detected by said detecting step, andsending a failure message if none of the conditions detected by said detecting step are detected;
granting the additional locks to sessions in response to the success message; and
denying the additional locks if there is a failure message.
1 Assignment
0 Petitions
Accused Products
Abstract
The control data locking protocol allows a concurrency control manager and data store to permit concurrent dynamic access between those creating or modifying control data and those using the data in their execution sessions. The invention applies to the use of production rules in inferencing sessions or to the use of ordered processing of flow rules by a workflow manager. The invention grants inference locks, read locks and write locks. Pre-lock notification with negotiation is implemented. Post-lock notification is also implemented. Those who are using the rules and those who are modifying them can specify whether changes should be incorporated immediately. In case two requested locks conflict, users resolve the conflict before both are granted. Controlled invocation of conversion processing converts session data as necessary to allow changes in control data to be made while the control data is being used in existing execution sessions.
79 Citations
14 Claims
-
1. In a computing system supporting concurrent access to control data by a plurality of program sessions where each of the program sessions requests a lock on the control data for concurrent access by each program session, a method for controlling concurrent access to the control data comprising the machine executed steps of:
-
receiving a request from a program session for a lock on the control data being accessed by the program session, wherein the control data is a set of rules for execution by the program session; granting the holding of a lock on the control data; receiving requests from other program sessions for additional locks on the control data, wherein at least one of the held lock and the requests for additional locks is an inferencing lock, wherein the inferencing lock allows a requesting program session to execute the control data; determining whether each of the requests for an additional lock conflicts with any held lock on the control data, or whether each of the requests does not conflict with any held lock, or whether negotiation between the holder of the held lock and the requester of the additional lock is required; granting an additional lock for each request that does not conflict with any held lock, wherein a reading update lock does not conflict with an inferencing lock, wherein the reading update lock indicates that the control data being locked will be modified; for each request for an additional lock that conflicts with any held lock, determining whether the request and the conflicting held lock can be resolved by negotiation between the holder of the held lock and the requester of the additional lock; denying those requests for additional locks where the request conflicts with any held lock and at least one of the held locks or requests cannot be resolved by negotiation between the holder of the held lock and the requester of the additional lock; notifying program sessions holding locks and program sessions requesting locks if the requests and held locks are negotiable; generating a success message indicating the negotiation has been successful or a failure message indicating the negotiation has failed, wherein said generating step further comprises the steps of; detecting that a program session holding a lock has removed the held lock or has changed the held lock to a lock that does not conflict with each requested additional lock or that the requesting program sessions have changed the requested additional locks to locks that do not conflict with the held lock, sending a success message in response to any of the conditions detected by said detecting step, and sending a failure message if none of the conditions detected by said detecting step are detected; granting the additional locks to sessions in response to the success message; and denying the additional locks if there is a failure message. - View Dependent Claims (2, 3)
-
-
4. In a computing system supporting concurrent access to control data by a first program and a second program where each of the first and second programs requests a lock on the control data being accessed by each program, a method for controlling concurrent access to the control data comprising the machine executed steps of:
-
receiving a request for a first lock on the control data being accessed by the first program, wherein the control data is a set of rules for execution by the first program; placing the first lock on access to the control data being accessed by the first program; receiving a request from the second program for a second lock on the control data locked by the first lock placed by the first program, wherein one of the first lock and the second lock is an inferencing lock, wherein the inference lock allows a requesting program to execute the control data; determining whether or not the request for the second lock conflicts with the first lock placed on the control data; granting the second lock if the request for the second lock does not conflict with the first lock, wherein a reading update lock does not conflict with an inferencing lock, and wherein a reading update lock indicates that the control data being locked will be modified; if the request for the second lock conflicts with the first lock, determining whether the first lock and the request for the second lock can be resolved by negotiation between the first program and the second program; denying the second lock if the request for the second lock conflicts with the first lock and the first lock and the request for the second lock cannot be resolved by negotiation between the first program and the second program; notifying the first program and the second program if the request for the second lock is negotiable; generating a success message indicating the first and second program have successfully negotiated the locks or a failure message indicating the first and second program did not resolve the conflict, wherein said generating step comprises the steps of; detecting that the first program has removed the first lock or has changed the first lock to a lock that does not conflict with the requested second lock or that the second program has changed the requested second lock to a lock that does not conflict with the first lock, sending a success message in response to any of the conditions being detected by said detecting step, and sending a failure message if said detecting step does not a removal or change of lock granting the second lock in response to the success message; and denying the second lock if there is a failure message. - View Dependent Claims (5, 6, 7, 8, 9, 10, 11)
-
-
12. Apparatus for use in a computing system supporting concurrent access to control data by a first program and a second program where each of the first and second programs requests a lock on the control data being accessed by each program comprising:
-
first means for receiving a request for a first lock on the control data being accessed by the first program, wherein the control data is a set of rules for execution by the first program; means responsive to the request for a first lock for placing the first lock on access to the control data being accessed by the first program; second means for receiving a request from the second program for a second lock on the control data locked by the first lock placed by the first program, wherein one of the first lock and the second lock is an inferencing lock, wherein the inferencing lock allows a requesting program to execute the control data; first determining means for determining if the request for the second lock conflicts with the first lock placed on access to the control data; means, responsive to said first determining means, for granting the second lock if the request for the second lock does not conflict, wherein a reading update lock does not conflict with an inferencing lock, and wherein a reading update lock indicates that the control data being locked will be modified; second determining means, responsive to said first determining means, for determining whether the first lock and the request for the second lock can be resolved by negotiation between the first program and the second program if the request for the second lock conflicts with the first lock; means, responsive to said second determining means, for denying the second lock if the request for the second lock conflicts with the first lock and the locks cannot be resolved by negotiation between the first program and the second program; means responsive to said second determining means for notifying the first program and the second program of a negotiable conflict between the first lock and the request for the second lock; means for executing negotiation of the negotiable conflict and sending a success message if the negotiation resolves the conflict and a failure message if the negotiation does not resolve the conflict, wherein said negotiating executing means further comprises; first means for detecting the first program has removed the first lock or has changed the first lock to a type that does not conflict with the requested second lock, second means for detecting the second program has changed the requested second lock to a type that does not conflict with the first lock, and means responsive to said first and second detecting means for sending a success message if the first lock is removed or the first lock or requested second lock are changed to be non-conflicting; means in response to the success message for granting the second lock; and means in response to the failure message for denying the second lock. - View Dependent Claims (13, 14)
-
Specification