US20060136926A1 - Allocating locks in a distributed environment - Google Patents
Allocating locks in a distributed environment Download PDFInfo
- Publication number
- US20060136926A1 US20060136926A1 US11/339,938 US33993806A US2006136926A1 US 20060136926 A1 US20060136926 A1 US 20060136926A1 US 33993806 A US33993806 A US 33993806A US 2006136926 A1 US2006136926 A1 US 2006136926A1
- Authority
- US
- United States
- Prior art keywords
- lock
- resource
- request
- computer
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99939—Privileged access
Definitions
- This invention relates generally to distributed computing environments and particularly to availability management of resources in a distributed environment. More particularly, the present invention relates to methods of “locking” distributed environment resources to prevent inappropriate access to such resources. More particularly still, the present invention relates to server-side allocation of locks in the WebDAV protocol.
- Distributed computer environments such as computer networks, provide significant advantages to multiple computer clients or users.
- distributed environments allow multiple clients to actually share many different computer resources including both hardware and software resources. Sharing software-related resources provides many known benefits, such as the fact that only one such resource needs to be created, updated and maintained.
- the Internet is one particular example of a distributed environment that provides access to a considerable number of software resources, which are available to client computer systems having Internet capabilities.
- One portion of the Internet is known as the World Wide Web which is generally a system of Internet servers that house software related resources that are formatted in a particular manner, such as with HTML (HyperText Markup Language).
- HTML HyperText Markup Language
- the protocol for accessing these particular resources is known as the HyperText Transfer Protocol or HTTP. It should be noted however that not all Internet servers are part of the World Wide Web.
- DAV World Wide Web Distributed Authoring and Versioning standard
- server computer systems provide various services in managing the various access requests made by clients.
- One particular service relates to managing resource availability for clients. That is, DAV provides methods that allow a client to lock a resource when using that resource so that subsequent users may not access that resource during that time. This locking scheme helps prevent the “lost update” problem associated with two or more users modifying a resource simultaneously such that editions are inadvertently lost.
- the DAV protocol is limited in its ability to satisfactorily allocate previously locked resources to requesting clients. That is, once a resource is unlocked, then the server computer system simply allocates the resource to the next client that sends a request for that resource. While relatively simple, the method of allocating the resource to the next request is unsatisfactory as it forces clients to repeatedly and almost continuously request a locked resource. Repeated requesting of a resource by a client significantly impacts the performance of the client computer system because the client computer system must devote its own resources to preparing and sending a request while these resources could be performing other tasks.
- the client computer systems typically employ a method of choosing a predetermined time interval between requests for locked resources. Unfortunately however, choosing a time interval that is too long may jeopardize the chances of accessing a resource as an intervening request by a different client may occur between the time of the unlock event and the next request. Indeed, since an intervening request may always appear prior to any other request, any particular client may suffer from lock starvation, i.e., a complete failure to gain access to a requested resource. Therefore, choosing a time interval necessarily requires the client to balance performance issues with the importance of accessing the resource. Achieving a satisfactory balance is difficult at best, and such guesswork cannot guarantee that a resource will ever be accessed, based on other client request rates.
- One method of solving this problem relates to evaluating an existing lock using a “lock discovery” method that evaluates an existing lock to determine properties such as whether a timeout period has been set.
- the timeout period for a resource is a values set by the owner or the server system and provides a means by which the server can limit the lifetime of a resource lock.
- the server may harvest the lock and reallocate the resource to the next client that requests the resource.
- a client may wait until that period has expired before sending another request for the resource.
- this solution is unsatisfactory since the lock creator typically chooses a timeout period that far outlasts the actual time needed for the resource.
- timeout period used in DAV, i.e., the time period by which the lock automatically expires
- the timeout period may actually be set for an infinite duration. This causes a significant problem, especially when the client does not explicitly release or unlock the resource when the client does not need the lock any longer. The problem is exacerbated when the client owning the lock orphans the lock and thus cannot explicitly release the resource. In such a case, there is essentially no method of killing or breaking the lock.
- the present invention relates to a system and method for managing the allocation of locks to clients.
- the system and method provides server-side control features related to resource requests for locked resources, such as establishing an expected lifetime property so that the sever may notify requesting clients as to the expected lifetime of a lock to improve client-side polling methods.
- the present invention relates to blocking a resource or otherwise maintaining subscriptions to lock-related events to effectively allow for asynchronous grants of a lock based on the time of the request to alleviate lock starvation.
- Another feature relates to a server-side lock function of breaking an existing lock or at least modifying/reducing a lock timeout period to prevent lost resources.
- the present invention relates to a system and method of managing a locked resource in a distributed environment that receives a request to access the resource from a requesting client computer system and determines whether the resource has a conflicting lock. Next, if the resource has a conflicting lock, information about the lock is returned to the requesting client computer system so that the client computer system may modify its retry strategy. On the other hand, if the resource does not have a conflicting lock, the requested access is allowed.
- the lock information is related to the expected lifetime of the lock and is set by the lock owner. In another embodiment, the lock information relates to the exclusivity of the lock.
- the present invention relates to a system and method of allocating access to a resource in a distributed environment.
- the invention receives a request to access the resource from a requesting client computer system and then determines whether the resource has a conflicting lock. If the resource has a conflicting lock, the invention blocks the resource for the requesting client computer system until the resource is free and then performs the requested access, allocating a new lock to the requesting computer system.
- the initial request for access has a request to block the resource.
- the request to block the resource may be a predetermined header having a time value for defining a time period to block the resource.
- the present invention relates to a system and method of unlocking a locked resource in a distributed environment, the locked resource having a lock object associated with a lock owner.
- the invention determines whether the request comprises a request to break the lock object and then determines whether the requesting client computer system is cleared to break the lock object. If so, the lock object is removed from the resource so that the requesting client may obtain access to the resource if desired.
- the lock owner is notified of the request to break the lock before removing the lock object and given time to perform actions relative to saving information or updating the existing lock.
- the invention may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product.
- the computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process.
- the computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
- FIG. 1 is a diagram of a distributed environment having a client computer system and a server computer system that communicate according to principles of the present invention.
- FIG. 2 is a functional diagram of a computer system that may incorporate aspects of the present invention.
- FIG. 3 is a block diagram illustrating software components of the present invention, including a services layer for managing the server-side lock allocation.
- FIG. 4 is a flow diagram illustrating the functional components of communicating lock information in response to a request for a locked resource and/or blocking a locked resource according to the present invention.
- FIG. 5 is a flow diagram illustrating the functional components of modifying a resource lock and/or breaking the resource lock according to an alternative embodiment of the present invention.
- FIG. 1 A distributed environment 100 incorporating aspects of the present invention is shown in FIG. 1 .
- the environment 100 has at least one client computer system, such as client computer systems 102 , 104 and 106 that interact with at least one server computer system, such as server computer system 108 over a distributed network, such as the Internet 110 .
- the client computer systems 102 , 104 and 106 request access to one or more server computer resources 112 . Additionally, there may be other client computer systems as indicated by ellipses 114 .
- the resources 112 relate to computer readable files or objects, such as text documents, application program modules, data objects, properties or attributes for data objects, among others.
- the resources may be HTML, XML, SGML files, or in other embodiments, the resources may be in another format.
- the protocol used by the systems 102 , 104 , 106 and 108 to communicate is the WebDAV (World Wide Web Distributed Authoring and Versioning, hereinafter “DAV”) protocol.
- DAV is an extension of the Hypertext Transfer Protocol version 1.1 (HTTP) and provides the methods and formats for allowing client computer systems, such as computer systems 102 , 104 and 106 to access and edit computer resources 112 .
- HTTP Hypertext Transfer Protocol version 1.1
- DAV also provides a set of headers and methods, which extend the HTTP to provide capabilities for property and namespace management, among other features as discussed in Proposed Standard RFC 2518.
- one client computer system accesses one of the resources 112 , that resource may be locked such that the other client computer systems, such as systems 104 and 106 are unable to access the resource.
- one or the other computer systems 104 and 106 may access the locked resource, but only for limited purposes, such as to write to the resource, read the resource or to delete the resource depending on the type of lock used on the resource by the first client computer system.
- the server computer system 108 services requests for resources 112 and allocates available resources accordingly. Moreover, the server computer system 108 denies requests for resources that are not available, i.e., those resources that have conflicting locks.
- a conflicting lock is a lock that conflicts with the particular type of request for the resource. For example, if the lock is an exclusive lock then it conflicts with any subsequent request, but if the lock is a non-exclusive lock that allows others to read the resource, then the lock does not conflict with requests to access the resource to read the resource.
- the server computer system 108 further provides services relating to providing information to the lock owner or another requesting client.
- the information provided to the client may be associated with the expected lifetime of an existing or conflicting lock or it may relate to other lock properties, such as the degree of exclusivity of a lock.
- the server computer system 108 provides methods of reducing the lifetime of a conflicting lock and/or breaking the conflicting lock.
- the server computer system allows for clients to subscribe to lock related events, such that the client may perform a specific request for a resource based on the occurrence of the event, e.g., an unlock event.
- the server computer system provides the client the ability to block a resource until it becomes available, and to therefore receive access to the resource once it is available, prior to other subsequent client requests.
- FIG. 2 illustrates an example of a suitable computing system environment 200 in which aspects of the present invention may be implemented as either a client computer system such as systems 102 , 104 or 106 or server computer system 108 .
- the computing system environment 200 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment 200 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 200 .
- Computer Environment 200 incorporates a general-purpose computing device in the form of a computer 202 .
- Components of computer 202 may include, but are not limited to, a processing unit 204 , a system memory 206 , and a system bus 208 that couples various system components including the system memory to the processing unit 204 .
- the system bus 208 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architectures (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
- ISA Industry Standard Architecture
- MCA Micro Channel Architectures
- EISA Enhanced ISA
- VESA Video Electronics Standards Association
- PCI Peripheral Component Interconnect
- Computer 202 typically includes a variety of computer readable media.
- Computer readable media can be any available media that can be accessed by computer 202 and includes both volatile and nonvolatile media, removable and non-removable media.
- Computer readable media may comprise computer storage media and communication media.
- Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDE-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 202 .
- Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
- the system memory 206 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 210 and random access memory (RAM) 212 .
- ROM read only memory
- RAM random access memory
- RAM 212 typically contains files and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 204 .
- FIG. 2 illustrates operating system 232 , application programs 234 , other program modules 236 , and program data 238 .
- the computer 202 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
- FIG. 2 illustrates a hard disk drive 216 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 218 that reads from or writes to a removable, nonvolatile magnetic disk 220 , and an optical disk drive 222 that reads from or writes to a removable, nonvolatile optical disk 224 such as a CD ROM or other optical media.
- removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
- the hard disk drive 216 is typically connected to the system bus 208 through a non-removable memory interface such as interface 226
- magnetic disk drive 218 and optical disk drive 222 are typically connected to the system bus 208 by a memory interfaces, such as interfaces 228 and 230 , respectively.
- hard disk drive 216 is illustrated as storing operating system 232 , application programs 234 , other program modules 236 , and program data 238 .
- a user may enter commands and information into the computer 202 through input devices such as a keyboard 240 and pointing device 242 , commonly referred to as a mouse, trackball or touch pad.
- Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
- These and other input devices are often connected to the processing unit 204 through an input interface 248 that is coupled to the system bus 208 .
- a monitor 250 or other type of display device may also be connected to the system bus 208 via video adapter 252 .
- computers may also include other peripheral output devices such as speakers and printer not shown.
- the computer 202 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 254 .
- the remote computer 254 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 202 .
- the computer 202 When used in a LAN networking environment, the computer 202 is connected to the LAN through a network interface or adapter 262 .
- the computer 202 When used in a WAN networking environment, the computer 202 typically includes a modem 264 or other means for establishing communications over the WAN, such as the Internet.
- the modem 264 which may be internal or external, may be connected to the system bus 208 via the user input interface 248 , or other appropriate mechanism.
- program modules depicted relative to the computer 202 may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
- the invention may be operational with numerous other general purpose or special purpose computing system environments or configurations.
- Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote computer storage media including memory storage devices.
- FIG. 3 illustrates an example of a software operating environment 300 in which the invention may be implemented.
- the software operating environment 300 is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention.
- Software environment 300 incorporates a Server System Resource Store 302 which defines the format and structure of data objects, such as data objects 304 and 306 .
- the Server System Resource Store 302 also provides the overall structure in which objects are named, stored and organized. Additionally, the store provides the protocols for accessing any object within the store 302 .
- Store 302 is an XML store and has data objects defined by the XML standard. However, it is contemplated that other data object configurations or collections may incorporate the aspects of the present invention.
- Data objects 304 and 306 are data objects that represent actual file-type data.
- the objects 304 and 306 may be accessed and/or modified by a user or another program module.
- the Store 302 may comprise many other objects as indicated by ellipses 312 .
- each data object 304 and 306 has some form of meta information object (not shown) that is associated with each object, the meta information comprises information such as the author of the object, the time the object was last accessed, among others.
- This meta information may be stored as part of the data object or as part of another object having a pointer or some other identifying element that associates the meta information object with its particular data object.
- a data object may also be associated with a lock object, such as objects 308 and 310 .
- Lock objects 308 and 310 are associated with data objects 304 and 306 , respectively.
- Lock objects comprise information related to whether its associated data object is locked and therefore inaccessible by other client computer systems.
- lock objects 304 and 306 may provide other properties, such as type properties relating to locking methods, and/or the servicing of lock token requests. As discussed below, one property that may be included in a lock object relates to an expected lifetime value.
- a lock object such as lock objects 308 and 310 , may be incorporated into its associated data object as part of a header or some other meta-information portion of the data object.
- the Environment 300 also has a services layer 314 , which relates to server functionality in servicing access requests for data objects 304 and 306 .
- the services layer 314 may provide various functions, such as ensuring that an object access request complies with the existing protocol; whether the request relates to either an existing object or, in DAV, to an object that is to be created; whether the module making the request has permission to make and perform the request; among others.
- the services layer 314 also manages the availability of resources based on lock analysis as discussed in more detail below.
- the services layer 314 receives requests over a distributed network environment, such as Internet 316 .
- the requests are made by client computer applications, such as applications 318 and 320 .
- application program 318 is a client application program that operates on a client system apart from a server system, wherein the server system is the physical location of the Store 302 . In other embodiments however, the application program, i.e., program 318 may actually be part of the server system.
- Applications 318 and 320 interact with the distributed network environment 316 through application program interfaces 322 and 324 , respectively.
- the access requests may involve requests to move, copy, delete, read, execute or update a resource or object, such as object 304 or object 306 .
- application programs 318 and 320 may cause the creation of lock objects 308 and 310 related to objects 304 and 306 respectively.
- the services layer 314 may create the lock objects, and associate the objects with the data objects.
- a lock object e.g., lock object 308
- another application may determine the existence of such a lock object and access the locked data object only in accordance with parameters set by the lock object, if at all.
- the services layer 314 actually performs the creation and management of the lock objects 308 and 310 .
- the services layer 314 receives a request from a client application program, such as application 318 .
- the services layer then processes the request, i.e., determines whether the client application may access the data object in the requested manner. If the application is able to access the data object in the requested manner, the services layer returns a lock token 326 to the client application program 318 and allows the requested access. If the services layer 314 determines that the application program may not access the requested data object due to the existence of a conflicting lock, access is denied.
- application program 320 attempts to access a data object that is locked by client application 318 , as evidenced by the lock token 326 .
- the application 320 When locked with a conflicting lock, such a case the application 320 typically cannot access that data object until client application 318 expressly frees the lock token 326 .
- the lock may be broken by the services layer or modified to free the lock prior to an express unlock request made by application 318 .
- the services layer 314 comprises a plurality of modules for performing separate functions relating to lock services and allocation.
- the services layer 314 comprises a receive module 328 and an allocation module 330 .
- the receive module 328 receives the request for a particular resource, such as resources 304 and 306 from a client application program and parses the request.
- the receive module 328 determines whether the resource is available with respect to any potentially conflicting lock objects. Assuming there is no conflicting lock, then allocation module 330 operates to allocate the resource to the requesting client application program. Otherwise, if the resource has a conflicting lock object, the allocation module 330 does not allocate the lock.
- the services layer 314 has a communication module 332 that provides information to the requesting client application relating to a denial of access to a requested resource.
- the information may involve a simple statement of denial or may also include the reason for the denial, e.g., the existence of a conflicting lock.
- the communication module 332 may provide even further information to the requesting client application program relating to specific properties of the conflicting lock object.
- the information provided by the communication module 332 allows the client application program to modify its requesting method, if necessary.
- the communication module may provide information such as the expected lifetime of the lock object.
- the information related to the expected lifetime of the lock object allows the client application program to determine when to send another access request.
- the communication module 332 may provide information related to the type or scope of the conflicting lock allowing the client to modify the type of request, if feasible, to gain access to the resource, albeit in another capacity.
- the services layer 314 , and its communication module 332 automatically returns information related to the specific properties of an existing lock when denying access to a requested resource.
- Alternative embodiments return such information when requested to do so by a client application program.
- the client application program may request the specific information in response to a received denial of access or the client application program may include such a request in its initial request for the resource itself.
- the communication module 332 determines the specific property information by evaluating meta information of the lock object.
- the meta information for the lock may include such information as the lock owner, the type and scope of the lock, the time the lock was created, the timeout period of the lock and/or the expected lifetime of the lock.
- the type and scope of the lock may refer to whether the lock is mandatory or advisory, whether the lock may be shared and, if sharable, to what extent, e.g., to read only.
- the timeout period of the lock typically refers to a time set by the protocol defining such locks and may be longer or shorter than the expected lifetime of the lock.
- the expected lifetime of the lock relates to a time value set either by the lock owner or by default and may include, explicitly or implicitly, the number of expected refresh instances.
- the expected lifetime value relates to a value near the actual lifetime of a resource lock.
- the expected lifetime value will most likely be less than the timeout value, although not required.
- Other potential clients may discover the expected lifetime value, which allows these clients to poll for lock availability in a more efficient manner.
- the expected lifetime value requested by the client application program is not used by the server system to break or harvest locks for being stale in the way the timeout value is used. Instead the expected lifetime value is primarily a source of information for other client applications so lock owners may supply a sincere guess as to the time the resource will actually be used without risking a timeout situation and losing the lock.
- an “expectedlifetime” request header may be used.
- the expectedlifetime header is analogous to a “timeout” request header and has the same value format.
- the header should only be used in requests to create or to modify a lock. Again, the purpose of the header is to indicate how long the client expects to need a lock so that other clients that fail to acquire a conflicting lock may determine a meaningful time to retry.
- the element may be extended to support the expectedlifetime property in order to implement this aspect of the invention.
- the expectedlifetime property may therefore be a new type of DAV property having the same live/dead degree of freedom as other DAV properties, i.e., where a live property is managed at a server and dead property is managed at the client.
- the value relates to a time value and may be updated and or modified by the client application program.
- DTD The document type definitions used to define the expectedlifetime property are shown in Table 1. Although DTDs are shown, schemas could also be used. TABLE 1 Sample DTD Definitions For Expected Lifetime Property 1 Name: activelock Namespace: DAV: Purpose: Describes a lock on a resource. Description: This element describes an active lock on a resource. Although shown as having owner, timeout and expectedlifetime properties, other properties may also exist, such as lockscope, locktype, depth, etc. ⁇ !ELEMENT activelock (owner?, timeout?, expectedlifetime?)> 2 Name: expectedlifetime Namespace: DAV: Purpose: Defines how long the client expects to hold the lock without explicitly unlocking or modifying the lock. Value: Time value, such as “TimeType” used for the timeout property. ⁇ !ELEMENT expectedlifetime (#PCDATA)>
- the expected lifetime request header defines a time value, such as an integer value related to the number of seconds the client expects to use the resource.
- the expected lifetime information may be delivered to a subsequent client application program in response to a request for the locked resource.
- the client may use this information to determine when to repeat the request for the resource.
- the client application program may improve its performance by freeing resources for other tasks that might otherwise be used in requesting a resource during a timeframe in which the resource is most likely locked and therefore unaccessible.
- the services layer 314 may also, or alternatively, include a blocking module 334 , which blocks future requests for a particular, locked resource. That is, when a client application program locks a resource and another client application issues a request for that resource and that request is denied due to the existing lock, the later client application program may establish a block for the resource. The block operates to prevent other client applications from obtaining the resource. More particularly, the block operates to prevent others from obtaining the resource after the initial client application program has unlocked the resource thereby allowing the subsequent client application program which established the block to access the resource.
- a blocking module 334 which blocks future requests for a particular, locked resource. That is, when a client application program locks a resource and another client application issues a request for that resource and that request is denied due to the existing lock, the later client application program may establish a block for the resource. The block operates to prevent other client applications from obtaining the resource. More particularly, the block operates to prevent others from obtaining the resource after the initial client application program has unlocked the resource thereby allowing the subsequent client
- the client application program In order to establish a block, the client application program indicates that such a block should be created.
- the blocking module 334 may store an identification value for the blocking client application program. Since all requests for the resource go through layer 314 , the layer 314 and its blocking module 334 does not allow any other client application programs to gain access to a blocked resource. Once the resource is free of the conflicting lock, the blocking module 334 may then notify the client that established the block of the status of the resource to allow that client to make another request. Alternatively, the blocking module 334 may actually provide access to the resource once the resource is free.
- the blocking module 334 may automatically and repeatedly poll the resource to determine its status, e.g., locked or free. Alternatively, the blocking module may simply wait for future requests for the resource, whether made by the blocking client application program or another, and make the determination at that time. In the latter case, the blocking application program would most likely be set to repeatedly request the resource to ensure access. Blocking in this manner allows clients to avoid the starvation issues associated with polling lock acquisitions.
- the requesting client may supply a “block header” to the server to indicate that a block should be established.
- a “maxwaittime” request header may be used.
- the maxwaittime header has the same value format as the timeout request header and is used primarily in lock and update lock requests.
- the maxwaittime header indicates a time period for blocking the resource, which is related to the time that the client is willing to wait for the lock to be unlocked.
- the header must have at least one value and may have several as is the case with timeout request headers in DAV.
- the services layer modifies the lock object to include the max wait time valve as a stored property within, or associated with, the lock object. This allows others to simply test the lock to determine whether another client has created a block and for how long.
- the services layer 314 may also comprise a breaking module 336 , which provides a lock breaking function.
- a breaking module 336 which provides a lock breaking function.
- the breaking module may first determine whether the resource has actually been orphaned or whether the resource is still in use. If the resource is still in use, the server may send a notice to the owner indicating the impending lock break function. Additionally, since the breaking module 336 may also break locks on resources that have not been orphaned, the breaking module may perform a security check to ensure that the requesting application program has adequate security clearance to perform the breaking function.
- the breaking module 336 can not only break locks, i.e., completely eradicate a lock object, but can also modify the remaining lifetime of a lock to effectively cause the end of a lock at a predetermined time.
- the modification may also test for security clearance and/or provide the lock owner with information related to the modification to its lock.
- the protocol such as DAV
- the protocol is extended to allow clients or other principals to issue an “unlock” request for a lock token originally acquired by another principal.
- the unlock request may specifically indicate that a lock break is intended within a new request-header.
- the request should be able to specify a latency before the break actually occurs to allow the server computer system to notify the client that owns the lock that a break is about to occur and give it sufficient time to store any pending changes covered by that lock.
- a “breaklatency” request header may be implemented in the protocol.
- the breaklatency header is used in unlock requests made by those other than the lock owner and indicates how long the server should wait before actually breaking the corresponding lock.
- the presence of a breaklatency header indicates that the request is not a normal unlock request, i.e., an unlock request made by the existing lock owner.
- the server is not required to wait the requested latency period.
- the server may return a status code indicating the perceived likelihood of whether the unlock request, i.e., the lock break will succeed. Alternatively, the server sends a response following the breaking of the lock, if at all.
- Table 2 includes an example of the breaklatency request header. In this example the latency is 60 seconds and the request succeeds. The “204” code is used for successful unlock responses. In this example, the nonce, response, and opaque fields have not been calculated in the Authorization request header.
- suitably privileged or authorized principals are allowed to issue a lock or an update-lock request that effectively reduces the timeout of an existing lock owned by another client.
- the server may perform the decision as to which principal(s) may be suitably authorized, i.e., it may be a server-level decision.
- the developer may also provide an indication as to which systems may be authorized. If the original lock owner fails to request access that would result in the lock being refreshed, an effective lock break will have occurred.
- the breaklatency request header may be used in lock and update-lock requests. Furthermore, the presence of the breaklatency request header indicates that the request is by one other than the lock owner and therefore normal security checks do not apply, and stricter checks may be implemented.
- FIG. 4 is a flow chart of the operational characteristics related to allocating resources, returning information related to a locked resource and blocking locked resources.
- an object such as object 304 and/or 306 shown in FIG. 3
- a Server System Resource Store such as store 302 .
- the object may not exist prior to flow 400 .
- a lock object may be created in parallel with the creation of a data object, or the lock object may be created and later associated with the data object once the data object is created.
- Process 400 generally begins with receive operation 402 , wherein the receive operation 402 relates to the receipt, by the server system of any access request related to an object.
- the access attempt may be performed by a third party application, such as application 318 or 320 ( FIG. 3 ) or by the services layer 314 , among others.
- the access request incorporates information related to the type of access that is being requested, i.e., to read, to write, to delete, etc. Additionally, the request information may also include information as to the type of lock to be created and applied while the object is in use. Moreover, the request information may also include a request for existing lock information if a conflicting lock exists, blocking information and or breaking information as discussed below.
- determination act 404 determines whether the access may be allowed by determining whether a conflicting lock exists.
- a conflicting lock is a lock owned by another client application program and wherein the scope of the lock is set such that the subsequent request cannot be allowed, e.g., the lock is an exclusive lock or the lock only allows others to read the resource but the subsequent request is to write to the resource.
- the term conflicting lock is used since some locks may not conflict with subsequent requests since locks may provide limited sharing capabilities, e.g., where the lock allows others to read the resource and the subsequent request is to read the resource.
- Determining whether the resource has a conflicting lock involves requesting lock properties from the resource object itself.
- the resource may be associated with a lock object, such as objects 308 and 310 ( FIG. 3 ) and the lock objects may be evaluated to determine the type of lock, if any, presently being enforced for the requested resource.
- the determination relates to an evaluation of a look-up table that is managed by the services layer 314 .
- Yet other embodiments may incorporate other means of providing information related to whether an object is locked and, if so, the type of lock.
- Provide-access operation 406 provides the requesting client application access to the requested resource. Additionally, operation 406 may perform the creation and/or association of a new lock object or other lock-related data structure with the requested object. The type of lock object that is created relates to the type requested by the client application. Further, should a lock be created by operation 406 , then the lock object generated by operation 406 may then be evaluated during other access requests until the lock object is removed or invalidated. Following operation 406 , flow 400 ends at 408 .
- determination act 404 determines that the requested resource may not be accessed, i.e., that a conflicting lock exists, then flow branches YES to parse operation 410 .
- Parse operation 410 parses the incoming request to determine if the request has headers or other indicators that information is requested, that a block is requested, etc. Once parsed, determination operation 412 determines whether the request includes a request for lock information.
- requested lock information such as expected lifetime or type and scope information.
- return operation 414 automatically returns lock information regardless of whether the initial request asks for this type of information. However, given that some client applications are not prepared to use such information, it may be preferred to perform the test operation 412 to determine whether the client application desires such information.
- the type of information returned to the client application may be either a value related to the expected lifetime of the lock, as set by the lock owner, or it may also relate to the type and scope of the lock. This information allows the client to tailor its next request for the resource, either to a request that does not conflict with the existing lock or to adjust the timing of the next request to increase the probability that the resource will be free at that time.
- test operation 416 determines whether a block should be established.
- Alternative embodiments may determine whether a block should be established independently of determination operation 412 , e.g., following parse operation 410 .
- Test operation 416 tests the initial request to determine whether a block should be placed on the resource. If not, then flow branches NO to end operation 408 .
- the client may send a subsequent request intended to actually establish the block and this subsequent request is analyzed by an operation similar to test operation 416 .
- One method of determining whether a block should be established relates to testing the initial request for the existence of a “maxwaittime” header.
- the mere presence of a maxwaittime header may indicate the desire to establish a block.
- Alternative embodiments may have predetermined flags that can be set to indicate the desire to establish a block.
- a message may be sent to the client inquiring as to whether a block should be set. In such a case the response to the inquiry is evaluated to determine whether a block should be established.
- a block should be established, as determined by operation 416 , flow branches YES to establish operation 418 .
- Establish operation 418 establishes the block for a particular resource. In such a case any further or subsequent requests for that resource by any other client application programs other than the block owner are denied.
- the block itself may be another type of property associated with the resource that can be evaluated to determine if a requesting client should be allowed access to a resource.
- only requests for conflicting locks cause a denial, such that the block is effective against potentially conflicting lock requests but does not cause a denial of access when the resulting access does not conflict.
- the block has a lifetime established by the blocking client. Upon expiration of the lifetime of the block, operation 420 determines whether a conflicting lock still exists on the requested resource. If not, then flow branches NO to provide operation 406 , which allows access to the resource. If so, then a message is sent to the client application to indicating that the block has expired and that the lock still exists and then flow branches YES to end operation 408 .
- the block provides an indication that the subsequent client is interested in obtaining access to the resource.
- the server can then inform the subsequent or blocking client that the resource is free.
- the block acts as a subscription to a lock-related event. This type of service may be provided in combination with determination act 420 shown in FIG. 4 .
- the services layer may provide services related to breaking and/or modifying existing locks.
- FIG. 5 is a flow chart of the operational characteristics related to breaking or modifying an existing lock object. As described above with respect to FIG. 4 , prior to the beginning of flow 500 an object, such as object 304 and/or 306 shown in FIG. 3 , exist within a Server System Resource Store, such as store 302 .
- Flow 500 begins with receive operation 502 , wherein the receive operation 502 relates to the receipt, by the server system of any read, execution, or update access request for an object.
- the access attempt may be performed by a third party application, such as application 318 or 320 ( FIG. 3 ) or by the services layer 314 , or by yet other client-type requesting entities.
- the request itself may include information as to the type of access sought, any lock types to be created and enforced during the access, and/or a request for a lock token, etc. Additionally, the request may indicate whether an existing lock should be broken and/or modified, if one is present. Alternatively, the received request may simply be a request to break or modify a lock, apart from a request to access a resource.
- determination act 504 determines whether the requested resource is locked. Thus, determination act 504 determines whether the resource is locked by another client application program by either searching for a lock object associated with the resource, analyzing properties of the resource object itself, or by searching for lock information in a look-up table type of data structure. In either situation, the server analyzes any lock information for the requested object and determines whether an associated lock conflicts with the type of access requested. In the alternative embodiment wherein the request relates to a request to break or modify a lock, then determination act 504 simply determines whether the lock exists.
- flow 500 branches NO to provide-access operation 506 .
- Provide-access operation 506 is similar to provide operation 406 described above in conjunction with FIG. 4 and may also include creation of a lock for the requesting client. Once access has been provided, then flow 500 ends at end operation 508 .
- provide operation 506 may send a message to the client that the lock does not exist and flow branches to end operation 508 .
- test act 510 tests the request to determine whether the lock should be broken outright. Testing whether the lock is to broken relates to checking the request for an indication that lock should be broken, e.g., by the presence of breaklatency header. If this header is present, then flow branches YES to check security operation 512 .
- Check security operation 512 determines whether the client application program has the requisite capabilities to perform the lock break. If not then the process ends and the lock is not broken. However, if the client application program does have the requisite security then the lock may be broken (or modified). In an embodiment, determining whether a client application program has the requisite security clearance involves testing the request to break the lock. In the request, the client application program may include information related to the whether the client can read or write to the resource. Depending on the level of permission allowed the client, the server may determine if the security check has been satisfied. Although a security check should be done to prevent uncontrolled lock harvesting, it is not necessary to the understanding of the present invention and practically any number of security validation techniques may be used to determine whether the client is able to break a lock.
- notify step 514 notifies the lock owner that the lock is about to be broken or modified. Notifying the lock owner of an impending lock break may provide the owner time to perform a lock refresh action or some other action that may stop the break function. Alternatively, the notification may provide the owner time to perform another action, e.g., a save to prevent lost updates. Notify step 514 is an optional step in that some server systems may not notify the owner of the lock, yet such a notification may be preferred to protect owners from lost updates.
- break operation 516 breaks the lock. Following break operation 516 , flow 500 ends at end operation 508 .
- test act 510 determines that the request does not indicate that the lock should be broken, e.g., by the absence of a predetermined header, then flow branches NO to test operation 518 .
- Test operation 518 tests the initial request to determine whether the lock should be modified. Such a modification may relate to actually reducing the timeout period or modifying the sharing capabilities of the lock. The modification may, in essence, change the properties of a lock to thereby enable another client to access the resource. Determining whether the initial request includes a request to modify the lock may involve a test for the presence of an “update” or “modify” lock header in the request. The mere presence of one of these headers may provide the server an ability to determine whether the request is for modification of the lock.
- test operation 518 determines that the request does not request lock modification, then flow branches NO to end operation 508 . However, if test operation 518 determines that the lock is to be modified, then flow branches YES to check operation 512 .
- Check operation 512 determines whether the client application program requesting the lock modification has the requisite security to perform such an action. Once the security check has completed, notify operation 514 notifies the lock owner that a modification is about to occur. As discussed above, notify operation is optional but may provide the lock owner time to perform a save or refresh act to prevent loss.
- modify operation 516 performs the lock modification.
- the lock modification process may involve changing the locks properties, e.g., the timeout value, the sharing capabilities, etc.
- the modification process may involve creating a new lock object, associating the new lock object with the resource and then deleting or harvesting the old lock object.
- the actual modification process may be performed in other ways, but the end result is a lock object having different or modified properties.
- the above described system and method provides a significant advantage over prior methods of managing resource locks in a distributed environment.
- the communication of both expected lifetime information for a lock significantly improves the planning and selection of request timing issues and performance for client application programs.
- the ability to block a resource pending an unlock event further increases performance for client applications.
- the breaking and modification of existing locks also improves overall control of lock allocation and management.
- the invention described herein may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product.
- the computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process.
- the computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
A system and method for managing the allocation of resources and locks to client computer systems. The system and method provides server-side control features related to resource requests for locked resources, such as establishing an expected lifetime property so that the sever may notify requesting clients as to the expected lifetime of a lock to improve client-side polling methods. The system and method relates to blocking a resource or otherwise maintaining subscriptions to lock-related events to effectively allow for asynchronous grants of a lock based on the time of the request to alleviate lock starvation. Another feature relates to a server-side lock function of breaking an existing lock or at least modifying/reducing a lock timeout period to prevent lost resources.
Description
- This application is a continuation of co-pending U.S. Patent Application for “METHOD AND SYSTEM FOR ALLOCATING LOCKS IN A DISTRIBUTED ENVIRONMENT,” filed on Nov. 13, 2001 and assigned Ser. No. 09/992,603, the complete disclosure of which is hereby incorporated by reference in its entirety.
- This invention relates generally to distributed computing environments and particularly to availability management of resources in a distributed environment. More particularly, the present invention relates to methods of “locking” distributed environment resources to prevent inappropriate access to such resources. More particularly still, the present invention relates to server-side allocation of locks in the WebDAV protocol.
- Distributed computer environments, such as computer networks, provide significant advantages to multiple computer clients or users. In particular, distributed environments allow multiple clients to actually share many different computer resources including both hardware and software resources. Sharing software-related resources provides many known benefits, such as the fact that only one such resource needs to be created, updated and maintained.
- The Internet is one particular example of a distributed environment that provides access to a considerable number of software resources, which are available to client computer systems having Internet capabilities. One portion of the Internet is known as the World Wide Web which is generally a system of Internet servers that house software related resources that are formatted in a particular manner, such as with HTML (HyperText Markup Language). The protocol for accessing these particular resources is known as the HyperText Transfer Protocol or HTTP. It should be noted however that not all Internet servers are part of the World Wide Web.
- Historically, most resources on the Internet corresponded to web page files that included only static HTML code, and thus were only available for display. However, recent advances are being made in the representative functionality provided to client systems to provide more interaction between the client and server systems. For instance, clients may effectively author resources on a server system from client systems over distributed networks, including the Internet. Indeed, much time and effort has been spent on the development of a WebDAV protocol or standard, which stands for the World Wide Web Distributed Authoring and Versioning standard, referred to herein as simply “DAV.” DAV provides a set of headers and methods which extend HTTP to provide capabilities for managing properties, namespace and other items from a client system in order to allow client computer systems to access server-side resources for the purpose of editing those resources. Proposed Standard RFC 2518, which is a document written by the IETF and approved by the IESG, published February 1999, describes DAV in more detail.
- As part of the DAV standard, server computer systems provide various services in managing the various access requests made by clients. One particular service relates to managing resource availability for clients. That is, DAV provides methods that allow a client to lock a resource when using that resource so that subsequent users may not access that resource during that time. This locking scheme helps prevent the “lost update” problem associated with two or more users modifying a resource simultaneously such that editions are inadvertently lost.
- Unfortunately however, the DAV protocol is limited in its ability to satisfactorily allocate previously locked resources to requesting clients. That is, once a resource is unlocked, then the server computer system simply allocates the resource to the next client that sends a request for that resource. While relatively simple, the method of allocating the resource to the next request is unsatisfactory as it forces clients to repeatedly and almost continuously request a locked resource. Repeated requesting of a resource by a client significantly impacts the performance of the client computer system because the client computer system must devote its own resources to preparing and sending a request while these resources could be performing other tasks.
- In order to improve performance, the client computer systems typically employ a method of choosing a predetermined time interval between requests for locked resources. Unfortunately however, choosing a time interval that is too long may jeopardize the chances of accessing a resource as an intervening request by a different client may occur between the time of the unlock event and the next request. Indeed, since an intervening request may always appear prior to any other request, any particular client may suffer from lock starvation, i.e., a complete failure to gain access to a requested resource. Therefore, choosing a time interval necessarily requires the client to balance performance issues with the importance of accessing the resource. Achieving a satisfactory balance is difficult at best, and such guesswork cannot guarantee that a resource will ever be accessed, based on other client request rates.
- One method of solving this problem relates to evaluating an existing lock using a “lock discovery” method that evaluates an existing lock to determine properties such as whether a timeout period has been set. In DAV, the timeout period for a resource is a values set by the owner or the server system and provides a means by which the server can limit the lifetime of a resource lock. Upon expiration of the timeout period, the server may harvest the lock and reallocate the resource to the next client that requests the resource. By discovering the timeout period, a client may wait until that period has expired before sending another request for the resource. Unfortunately however, this solution is unsatisfactory since the lock creator typically chooses a timeout period that far outlasts the actual time needed for the resource. Indeed, since the nature of a requested timeout period relates to when the lock expires or may be harvested by the server, clients typically choose as long a period as possible. If not, the lock owner risks having a lock expire before the owner is finished with the resource. Consequently, subsequent clients cannot rely on the timeout period as a means for realistically determining when to retry a request.
- Another drawback associated with the timeout period used in DAV, i.e., the time period by which the lock automatically expires, is that the timeout period may actually be set for an infinite duration. This causes a significant problem, especially when the client does not explicitly release or unlock the resource when the client does not need the lock any longer. The problem is exacerbated when the client owning the lock orphans the lock and thus cannot explicitly release the resource. In such a case, there is essentially no method of killing or breaking the lock.
- It is with respect to these and other considerations that the present invention has been made.
- The present invention relates to a system and method for managing the allocation of locks to clients. The system and method provides server-side control features related to resource requests for locked resources, such as establishing an expected lifetime property so that the sever may notify requesting clients as to the expected lifetime of a lock to improve client-side polling methods. Also, the present invention relates to blocking a resource or otherwise maintaining subscriptions to lock-related events to effectively allow for asynchronous grants of a lock based on the time of the request to alleviate lock starvation. Another feature relates to a server-side lock function of breaking an existing lock or at least modifying/reducing a lock timeout period to prevent lost resources.
- In accordance with certain aspects, the present invention relates to a system and method of managing a locked resource in a distributed environment that receives a request to access the resource from a requesting client computer system and determines whether the resource has a conflicting lock. Next, if the resource has a conflicting lock, information about the lock is returned to the requesting client computer system so that the client computer system may modify its retry strategy. On the other hand, if the resource does not have a conflicting lock, the requested access is allowed. In an embodiment, the lock information is related to the expected lifetime of the lock and is set by the lock owner. In another embodiment, the lock information relates to the exclusivity of the lock.
- In accordance with other aspects, the present invention relates to a system and method of allocating access to a resource in a distributed environment. The invention receives a request to access the resource from a requesting client computer system and then determines whether the resource has a conflicting lock. If the resource has a conflicting lock, the invention blocks the resource for the requesting client computer system until the resource is free and then performs the requested access, allocating a new lock to the requesting computer system. In an embodiment the initial request for access has a request to block the resource. The request to block the resource may be a predetermined header having a time value for defining a time period to block the resource.
- In accordance with yet other aspects, the present invention relates to a system and method of unlocking a locked resource in a distributed environment, the locked resource having a lock object associated with a lock owner. Upon receiving a request to access the locked resource from a client computer system other than the lock owner, the invention determines whether the request comprises a request to break the lock object and then determines whether the requesting client computer system is cleared to break the lock object. If so, the lock object is removed from the resource so that the requesting client may obtain access to the resource if desired. In an embodiment, the lock owner is notified of the request to break the lock before removing the lock object and given time to perform actions relative to saving information or updating the existing lock.
- The invention may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product. The computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
- A more complete appreciation of the present invention and its improvements can be obtained by reference to the accompanying drawings, which are briefly summarized below, to the following detail description of presently preferred embodiments of the invention, and to the appended claims.
-
FIG. 1 is a diagram of a distributed environment having a client computer system and a server computer system that communicate according to principles of the present invention. -
FIG. 2 is a functional diagram of a computer system that may incorporate aspects of the present invention. -
FIG. 3 is a block diagram illustrating software components of the present invention, including a services layer for managing the server-side lock allocation. -
FIG. 4 is a flow diagram illustrating the functional components of communicating lock information in response to a request for a locked resource and/or blocking a locked resource according to the present invention. -
FIG. 5 is a flow diagram illustrating the functional components of modifying a resource lock and/or breaking the resource lock according to an alternative embodiment of the present invention. - A distributed
environment 100 incorporating aspects of the present invention is shown inFIG. 1 . Theenvironment 100 has at least one client computer system, such asclient computer systems server computer system 108 over a distributed network, such as theInternet 110. Theclient computer systems server computer resources 112. Additionally, there may be other client computer systems as indicated by ellipses 114. Theresources 112 relate to computer readable files or objects, such as text documents, application program modules, data objects, properties or attributes for data objects, among others. The resources may be HTML, XML, SGML files, or in other embodiments, the resources may be in another format. - In an embodiment of the invention, the protocol used by the
systems computer systems computer resources 112. As stated in the Background Section above, DAV also provides a set of headers and methods, which extend the HTTP to provide capabilities for property and namespace management, among other features as discussed in Proposed Standard RFC 2518. - As one client computer system, such as
system 102, accesses one of theresources 112, that resource may be locked such that the other client computer systems, such assystems other computer systems - The
server computer system 108 services requests forresources 112 and allocates available resources accordingly. Moreover, theserver computer system 108 denies requests for resources that are not available, i.e., those resources that have conflicting locks. A conflicting lock is a lock that conflicts with the particular type of request for the resource. For example, if the lock is an exclusive lock then it conflicts with any subsequent request, but if the lock is a non-exclusive lock that allows others to read the resource, then the lock does not conflict with requests to access the resource to read the resource. - In an embodiment of the invention, the
server computer system 108 further provides services relating to providing information to the lock owner or another requesting client. The information provided to the client may be associated with the expected lifetime of an existing or conflicting lock or it may relate to other lock properties, such as the degree of exclusivity of a lock. In another embodiment, theserver computer system 108 provides methods of reducing the lifetime of a conflicting lock and/or breaking the conflicting lock. In yet another embodiment, the server computer system allows for clients to subscribe to lock related events, such that the client may perform a specific request for a resource based on the occurrence of the event, e.g., an unlock event. In yet another embodiment, the server computer system provides the client the ability to block a resource until it becomes available, and to therefore receive access to the resource once it is available, prior to other subsequent client requests. These features are described in more detail below. -
FIG. 2 illustrates an example of a suitablecomputing system environment 200 in which aspects of the present invention may be implemented as either a client computer system such assystems server computer system 108. Thecomputing system environment 200 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should thecomputing environment 200 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in theexemplary operating environment 200. -
Environment 200 incorporates a general-purpose computing device in the form of acomputer 202. Components ofcomputer 202 may include, but are not limited to, aprocessing unit 204, a system memory 206, and asystem bus 208 that couples various system components including the system memory to theprocessing unit 204. Thesystem bus 208 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architectures (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus. -
Computer 202 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed bycomputer 202 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDE-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed bycomputer 202. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media. - The system memory 206 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 210 and random access memory (RAM) 212. A basic input/output system 214 (BIOS), containing the basic routines that help to transfer information between elements within
computer 202, such as during start-up, is typically stored inROM 210, whileRAM 212 typically contains files and/or program modules that are immediately accessible to and/or presently being operated on by processingunit 204. By way of example, and not limitation,FIG. 2 illustratesoperating system 232,application programs 234,other program modules 236, andprogram data 238. - The
computer 202 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 2 illustrates ahard disk drive 216 that reads from or writes to non-removable, nonvolatile magnetic media, amagnetic disk drive 218 that reads from or writes to a removable, nonvolatilemagnetic disk 220, and anoptical disk drive 222 that reads from or writes to a removable, nonvolatileoptical disk 224 such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. Thehard disk drive 216 is typically connected to thesystem bus 208 through a non-removable memory interface such asinterface 226, andmagnetic disk drive 218 andoptical disk drive 222 are typically connected to thesystem bus 208 by a memory interfaces, such asinterfaces - The drives and their associated computer storage media discussed above and illustrated in
FIG. 2 , provide storage of computer readable instructions, data structures, program modules and other data for thecomputer 202. InFIG. 2 , for example,hard disk drive 216 is illustrated as storingoperating system 232,application programs 234,other program modules 236, andprogram data 238. - A user may enter commands and information into the
computer 202 through input devices such as akeyboard 240 andpointing device 242, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to theprocessing unit 204 through aninput interface 248 that is coupled to thesystem bus 208. Amonitor 250 or other type of display device may also be connected to thesystem bus 208 viavideo adapter 252. In addition to the monitor, computers may also include other peripheral output devices such as speakers and printer not shown. - The
computer 202 may operate in a networked environment using logical connections to one or more remote computers, such as aremote computer 254. Theremote computer 254 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to thecomputer 202. - When used in a LAN networking environment, the
computer 202 is connected to the LAN through a network interface oradapter 262. When used in a WAN networking environment, thecomputer 202 typically includes amodem 264 or other means for establishing communications over the WAN, such as the Internet. Themodem 264, which may be internal or external, may be connected to thesystem bus 208 via theuser input interface 248, or other appropriate mechanism. In a networked environment, program modules depicted relative to thecomputer 202, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. - In addition to the
environment 200 shown inFIG. 2 , the invention may be operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. - Moreover, the present invention may be described in the general context of a software operating environment, e.g., computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
-
FIG. 3 illustrates an example of asoftware operating environment 300 in which the invention may be implemented. Thesoftware operating environment 300 is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention.Software environment 300 incorporates a ServerSystem Resource Store 302 which defines the format and structure of data objects, such as data objects 304 and 306. Typically, the ServerSystem Resource Store 302 also provides the overall structure in which objects are named, stored and organized. Additionally, the store provides the protocols for accessing any object within thestore 302. In an embodiment,Store 302 is an XML store and has data objects defined by the XML standard. However, it is contemplated that other data object configurations or collections may incorporate the aspects of the present invention. Data objects 304 and 306 are data objects that represent actual file-type data. Theobjects Store 302 may comprise many other objects as indicated byellipses 312. - Typically, each data object 304 and 306 has some form of meta information object (not shown) that is associated with each object, the meta information comprises information such as the author of the object, the time the object was last accessed, among others. This meta information may be stored as part of the data object or as part of another object having a pointer or some other identifying element that associates the meta information object with its particular data object.
- In addition to the meta information objects, a data object may also be associated with a lock object, such as
objects data objects -
Environment 300 also has aservices layer 314, which relates to server functionality in servicing access requests fordata objects services layer 314 may provide various functions, such as ensuring that an object access request complies with the existing protocol; whether the request relates to either an existing object or, in DAV, to an object that is to be created; whether the module making the request has permission to make and perform the request; among others. Theservices layer 314 also manages the availability of resources based on lock analysis as discussed in more detail below. - The
services layer 314 receives requests over a distributed network environment, such asInternet 316. The requests are made by client computer applications, such asapplications application program 318 is a client application program that operates on a client system apart from a server system, wherein the server system is the physical location of theStore 302. In other embodiments however, the application program, i.e.,program 318 may actually be part of the server system.Applications network environment 316 through application program interfaces 322 and 324, respectively. The access requests may involve requests to move, copy, delete, read, execute or update a resource or object, such asobject 304 orobject 306. - With respect to the lock objects 308 and 310, in an embodiment of the invention,
application programs objects services layer 314 may create the lock objects, and associate the objects with the data objects. Once a lock object, e.g.,lock object 308, has been created, another application may determine the existence of such a lock object and access the locked data object only in accordance with parameters set by the lock object, if at all. - In one particular example, the
services layer 314 actually performs the creation and management of the lock objects 308 and 310. Theservices layer 314 receives a request from a client application program, such asapplication 318. The services layer then processes the request, i.e., determines whether the client application may access the data object in the requested manner. If the application is able to access the data object in the requested manner, the services layer returns alock token 326 to theclient application program 318 and allows the requested access. If theservices layer 314 determines that the application program may not access the requested data object due to the existence of a conflicting lock, access is denied. - To further this example, assume
application program 320 attempts to access a data object that is locked byclient application 318, as evidenced by thelock token 326. When locked with a conflicting lock, such a case theapplication 320 typically cannot access that data object untilclient application 318 expressly frees thelock token 326. However, as discussed in more detail below, the lock may be broken by the services layer or modified to free the lock prior to an express unlock request made byapplication 318. - In an embodiment of the invention, the
services layer 314 comprises a plurality of modules for performing separate functions relating to lock services and allocation. For instance, theservices layer 314 comprises a receivemodule 328 and anallocation module 330. The receivemodule 328 receives the request for a particular resource, such asresources module 328 determines whether the resource is available with respect to any potentially conflicting lock objects. Assuming there is no conflicting lock, thenallocation module 330 operates to allocate the resource to the requesting client application program. Otherwise, if the resource has a conflicting lock object, theallocation module 330 does not allocate the lock. - In an embodiment, the
services layer 314 has acommunication module 332 that provides information to the requesting client application relating to a denial of access to a requested resource. The information may involve a simple statement of denial or may also include the reason for the denial, e.g., the existence of a conflicting lock. Thecommunication module 332 may provide even further information to the requesting client application program relating to specific properties of the conflicting lock object. The information provided by thecommunication module 332 allows the client application program to modify its requesting method, if necessary. For example, the communication module may provide information such as the expected lifetime of the lock object. The information related to the expected lifetime of the lock object allows the client application program to determine when to send another access request. As another example, thecommunication module 332 may provide information related to the type or scope of the conflicting lock allowing the client to modify the type of request, if feasible, to gain access to the resource, albeit in another capacity. - In one embodiment, the
services layer 314, and itscommunication module 332 automatically returns information related to the specific properties of an existing lock when denying access to a requested resource. Alternative embodiments, however, return such information when requested to do so by a client application program. In the latter case, the client application program may request the specific information in response to a received denial of access or the client application program may include such a request in its initial request for the resource itself. - The
communication module 332 determines the specific property information by evaluating meta information of the lock object. The meta information for the lock may include such information as the lock owner, the type and scope of the lock, the time the lock was created, the timeout period of the lock and/or the expected lifetime of the lock. The type and scope of the lock may refer to whether the lock is mandatory or advisory, whether the lock may be shared and, if sharable, to what extent, e.g., to read only. The timeout period of the lock typically refers to a time set by the protocol defining such locks and may be longer or shorter than the expected lifetime of the lock. - The expected lifetime of the lock relates to a time value set either by the lock owner or by default and may include, explicitly or implicitly, the number of expected refresh instances. Thus, the expected lifetime value relates to a value near the actual lifetime of a resource lock. The expected lifetime value will most likely be less than the timeout value, although not required. Other potential clients may discover the expected lifetime value, which allows these clients to poll for lock availability in a more efficient manner. Importantly, the expected lifetime value requested by the client application program is not used by the server system to break or harvest locks for being stale in the way the timeout value is used. Instead the expected lifetime value is primarily a source of information for other client applications so lock owners may supply a sincere guess as to the time the resource will actually be used without risking a timeout situation and losing the lock.
- In DAV, in order to implement an expected lifetime property associated with lock objects, an “expectedlifetime” request header may be used. The expectedlifetime header is analogous to a “timeout” request header and has the same value format. The header should only be used in requests to create or to modify a lock. Again, the purpose of the header is to indicate how long the client expects to need a lock so that other clients that fail to acquire a conflicting lock may determine a meaningful time to retry.
- In an embodiment having an “activelock” XML element, such as the activelock element in DAV, the element may be extended to support the expectedlifetime property in order to implement this aspect of the invention. The expectedlifetime property may therefore be a new type of DAV property having the same live/dead degree of freedom as other DAV properties, i.e., where a live property is managed at a server and dead property is managed at the client. The value relates to a time value and may be updated and or modified by the client application program.
- The document type definitions (DTD) used to define the expectedlifetime property are shown in Table 1. Although DTDs are shown, schemas could also be used.
TABLE 1 Sample DTD Definitions For Expected Lifetime Property 1 Name: activelock Namespace: DAV: Purpose: Describes a lock on a resource. Description: This element describes an active lock on a resource. Although shown as having owner, timeout and expectedlifetime properties, other properties may also exist, such as lockscope, locktype, depth, etc. <!ELEMENT activelock (owner?, timeout?, expectedlifetime?)> 2 Name: expectedlifetime Namespace: DAV: Purpose: Defines how long the client expects to hold the lock without explicitly unlocking or modifying the lock. Value: Time value, such as “TimeType” used for the timeout property. <!ELEMENT expectedlifetime (#PCDATA)> - As shown in Table 1, the new expectedliftetime property has been defined for DAV. The expected lifetime request header defines a time value, such as an integer value related to the number of seconds the client expects to use the resource. The request header may appear as follows: Expectedlifetime=“Expectedlifetime” “:” 1#TimeType. Unlike timeout request headers, an expectedlifetime request header has a single value.
- As discussed above, the expected lifetime information may be delivered to a subsequent client application program in response to a request for the locked resource. The client, in turn, may use this information to determine when to repeat the request for the resource. By determining when to repeat the request, the client application program may improve its performance by freeing resources for other tasks that might otherwise be used in requesting a resource during a timeframe in which the resource is most likely locked and therefore unaccessible.
- While the expected lifetime information allows the client to better determine when to repeat a request, the
services layer 314 may also, or alternatively, include a blocking module 334, which blocks future requests for a particular, locked resource. That is, when a client application program locks a resource and another client application issues a request for that resource and that request is denied due to the existing lock, the later client application program may establish a block for the resource. The block operates to prevent other client applications from obtaining the resource. More particularly, the block operates to prevent others from obtaining the resource after the initial client application program has unlocked the resource thereby allowing the subsequent client application program which established the block to access the resource. - In order to establish a block, the client application program indicates that such a block should be created. Next, the blocking module 334 may store an identification value for the blocking client application program. Since all requests for the resource go through
layer 314, thelayer 314 and its blocking module 334 does not allow any other client application programs to gain access to a blocked resource. Once the resource is free of the conflicting lock, the blocking module 334 may then notify the client that established the block of the status of the resource to allow that client to make another request. Alternatively, the blocking module 334 may actually provide access to the resource once the resource is free. - Once a block is in place, in order to determine the status of a resource, the blocking module 334 may automatically and repeatedly poll the resource to determine its status, e.g., locked or free. Alternatively, the blocking module may simply wait for future requests for the resource, whether made by the blocking client application program or another, and make the determination at that time. In the latter case, the blocking application program would most likely be set to repeatedly request the resource to ensure access. Blocking in this manner allows clients to avoid the starvation issues associated with polling lock acquisitions.
- In an embodiment, such as in the DAV environment, the requesting client may supply a “block header” to the server to indicate that a block should be established. In a particular embodiment, a “maxwaittime” request header may be used. The maxwaittime header has the same value format as the timeout request header and is used primarily in lock and update lock requests. The maxwaittime header indicates a time period for blocking the resource, which is related to the time that the client is willing to wait for the lock to be unlocked. The request header may appear as follows: Maxwaittime=“Maxwaittime” “:” 1#TimeType. The header must have at least one value and may have several as is the case with timeout request headers in DAV.
- Once received, the services layer modifies the lock object to include the max wait time valve as a stored property within, or associated with, the lock object. This allows others to simply test the lock to determine whether another client has created a block and for how long.
- In some cases, waiting for a lock to be freed, either by timing out or by an exclusive unlock event is not sufficient. Thus, the
services layer 314 may also comprise abreaking module 336, which provides a lock breaking function. In essence, given that locks in certain protocols, such as DAV, can have infinite timeout or lifetime periods, there must be a way to break a lock, especially under certain situations, e.g., where a client has orphaned the resource and is unable to unlock the resource. In order to break a lock, however, the breaking module may first determine whether the resource has actually been orphaned or whether the resource is still in use. If the resource is still in use, the server may send a notice to the owner indicating the impending lock break function. Additionally, since thebreaking module 336 may also break locks on resources that have not been orphaned, the breaking module may perform a security check to ensure that the requesting application program has adequate security clearance to perform the breaking function. - In an alternative embodiment, the
breaking module 336 can not only break locks, i.e., completely eradicate a lock object, but can also modify the remaining lifetime of a lock to effectively cause the end of a lock at a predetermined time. In such a case, the modification may also test for security clearance and/or provide the lock owner with information related to the modification to its lock. - In order to implement the breaking module, i.e., the ability to break a lock, the protocol, such as DAV, is extended to allow clients or other principals to issue an “unlock” request for a lock token originally acquired by another principal. In order to prevent mistakes, the unlock request may specifically indicate that a lock break is intended within a new request-header. Furthermore, the request should be able to specify a latency before the break actually occurs to allow the server computer system to notify the client that owns the lock that a break is about to occur and give it sufficient time to store any pending changes covered by that lock.
- In order to achieve these functions, a “breaklatency” request header may be implemented in the protocol. The breaklatency header is used in unlock requests made by those other than the lock owner and indicates how long the server should wait before actually breaking the corresponding lock. The presence of a breaklatency header indicates that the request is not a normal unlock request, i.e., an unlock request made by the existing lock owner. In an embodiment, the server is not required to wait the requested latency period. Prior to breaking the lock, the server may return a status code indicating the perceived likelihood of whether the unlock request, i.e., the lock break will succeed. Alternatively, the server sends a response following the breaking of the lock, if at all.
- In an embodiment, such as the DAV environment, the breaklatency request header may appear as follows: BreakLatency=“Breaklatency” “:” 1#TimeType. Unlike a timeout request header, the breaklatency request header has one value. The following table, Table 2, includes an example of the breaklatency request header. In this example the latency is 60 seconds and the request succeeds. The “204” code is used for successful unlock responses. In this example, the nonce, response, and opaque fields have not been calculated in the Authorization request header.
TABLE 2 Example Use of a Breaklatency Request Header >>Request UNLOCK /container/ HTTP/1.1 Host: webdav.microsoft.com Breaklatency: Second-60 Lock-Token: <opaquelocktoken: e71d4fae-4may-22d6-fea5-00a0c91e6be4> Authorization: Digest username=“jgoldick”, realm=“jgoldick@webdav.microsoft.com”, nonce=“...”, uri=“/container/”, response=“...”, opaque=“...” >>Response HTTP/1.1 204 No Content - In an alternative implementation, suitably privileged or authorized principals are allowed to issue a lock or an update-lock request that effectively reduces the timeout of an existing lock owned by another client. The server may perform the decision as to which principal(s) may be suitably authorized, i.e., it may be a server-level decision. Alternatively, the developer may also provide an indication as to which systems may be authorized. If the original lock owner fails to request access that would result in the lock being refreshed, an effective lock break will have occurred. In order to implement locking and updating by others, the breaklatency request header may be used in lock and update-lock requests. Furthermore, the presence of the breaklatency request header indicates that the request is by one other than the lock owner and therefore normal security checks do not apply, and stricter checks may be implemented.
- More details of an update lock technique that may be used to change a breaklatency request may be found in the U.S. patent application Ser. No. 09/992,525, entitled METHOD AND SYSTEM FOR MODIFYING LOCK PROPERTIES IN A DISTRIBUTED ENVIRONMENT, incorporated herein by reference for all that it discloses and teaches, filed concurrently herewith, and assigned to the Assignee of the present application.
-
FIG. 4 is a flow chart of the operational characteristics related to allocating resources, returning information related to a locked resource and blocking locked resources. Prior to the beginning offlow 400 an object, such asobject 304 and/or 306 shown inFIG. 3 , may already exist within a Server System Resource Store, such asstore 302. In such an embodiment, once the object has been created, then any later attempt to access that object initiates theflow 400 shown and described with respect toFIG. 4 . In an alternative embodiment however, e.g., such as when the DAV protocol is used, the object may not exist prior toflow 400. In such a case, a lock object may be created in parallel with the creation of a data object, or the lock object may be created and later associated with the data object once the data object is created. -
Process 400 generally begins with receiveoperation 402, wherein the receiveoperation 402 relates to the receipt, by the server system of any access request related to an object. The access attempt may be performed by a third party application, such asapplication 318 or 320 (FIG. 3 ) or by theservices layer 314, among others. The access request incorporates information related to the type of access that is being requested, i.e., to read, to write, to delete, etc. Additionally, the request information may also include information as to the type of lock to be created and applied while the object is in use. Moreover, the request information may also include a request for existing lock information if a conflicting lock exists, blocking information and or breaking information as discussed below. - Following receive
operation 402,determination act 404 determines whether the access may be allowed by determining whether a conflicting lock exists. A conflicting lock is a lock owned by another client application program and wherein the scope of the lock is set such that the subsequent request cannot be allowed, e.g., the lock is an exclusive lock or the lock only allows others to read the resource but the subsequent request is to write to the resource. The term conflicting lock is used since some locks may not conflict with subsequent requests since locks may provide limited sharing capabilities, e.g., where the lock allows others to read the resource and the subsequent request is to read the resource. - Determining whether the resource has a conflicting lock, in an embodiment of the invention, involves requesting lock properties from the resource object itself. In such a case, the resource may be associated with a lock object, such as
objects 308 and 310 (FIG. 3 ) and the lock objects may be evaluated to determine the type of lock, if any, presently being enforced for the requested resource. In other embodiments, the determination relates to an evaluation of a look-up table that is managed by theservices layer 314. Yet other embodiments may incorporate other means of providing information related to whether an object is locked and, if so, the type of lock. - If
determination act 404 determines that the requested resource may be accessed, i.e., that no conflicting lock exists, flow branches NO to provide-access operation 406. Provide-access operation 406 provides the requesting client application access to the requested resource. Additionally, operation 406 may perform the creation and/or association of a new lock object or other lock-related data structure with the requested object. The type of lock object that is created relates to the type requested by the client application. Further, should a lock be created by operation 406, then the lock object generated by operation 406 may then be evaluated during other access requests until the lock object is removed or invalidated. Following operation 406, flow 400 ends at 408. - If
determination act 404 determines that the requested resource may not be accessed, i.e., that a conflicting lock exists, then flow branches YES to parseoperation 410. Parseoperation 410 parses the incoming request to determine if the request has headers or other indicators that information is requested, that a block is requested, etc. Once parsed,determination operation 412 determines whether the request includes a request for lock information. - If the request includes a request for information, then flow branches YES to
operation 414 which returns requested lock information, such as expected lifetime or type and scope information. In alternative embodiments,return operation 414 automatically returns lock information regardless of whether the initial request asks for this type of information. However, given that some client applications are not prepared to use such information, it may be preferred to perform thetest operation 412 to determine whether the client application desires such information. - The type of information returned to the client application may be either a value related to the expected lifetime of the lock, as set by the lock owner, or it may also relate to the type and scope of the lock. This information allows the client to tailor its next request for the resource, either to a request that does not conflict with the existing lock or to adjust the timing of the next request to increase the probability that the resource will be free at that time.
- Following the return of
lock information operation 414, the flow ends atend operation 408. - If determine
operation 412 determines that the request does not include a call for returned lock information then flow branches NO to testoperation 416, which determines whether a block should be established. Alternative embodiments may determine whether a block should be established independently ofdetermination operation 412, e.g., following parseoperation 410.Test operation 416 tests the initial request to determine whether a block should be placed on the resource. If not, then flow branches NO to endoperation 408. In other embodiments, the client may send a subsequent request intended to actually establish the block and this subsequent request is analyzed by an operation similar to testoperation 416. - One method of determining whether a block should be established relates to testing the initial request for the existence of a “maxwaittime” header. The mere presence of a maxwaittime header may indicate the desire to establish a block. Alternative embodiments may have predetermined flags that can be set to indicate the desire to establish a block. In yet another embodiment, a message may be sent to the client inquiring as to whether a block should be set. In such a case the response to the inquiry is evaluated to determine whether a block should be established.
- If a block should be established, as determined by
operation 416, flow branches YES to establishoperation 418. Establishoperation 418 establishes the block for a particular resource. In such a case any further or subsequent requests for that resource by any other client application programs other than the block owner are denied. The block itself may be another type of property associated with the resource that can be evaluated to determine if a requesting client should be allowed access to a resource. In an alternative embodiment, only requests for conflicting locks cause a denial, such that the block is effective against potentially conflicting lock requests but does not cause a denial of access when the resulting access does not conflict. - In an embodiment, the block has a lifetime established by the blocking client. Upon expiration of the lifetime of the block,
operation 420 determines whether a conflicting lock still exists on the requested resource. If not, then flow branches NO to provide operation 406, which allows access to the resource. If so, then a message is sent to the client application to indicating that the block has expired and that the lock still exists and then flow branches YES to endoperation 408. - In another embodiment, once the lock is released or harvested by the server computer system, then the block provides an indication that the subsequent client is interested in obtaining access to the resource. In such a case, the server can then inform the subsequent or blocking client that the resource is free. Thus, the block acts as a subscription to a lock-related event. This type of service may be provided in combination with
determination act 420 shown inFIG. 4 . - In accordance with other aspects of the present invention, the services layer may provide services related to breaking and/or modifying existing locks.
FIG. 5 is a flow chart of the operational characteristics related to breaking or modifying an existing lock object. As described above with respect toFIG. 4 , prior to the beginning offlow 500 an object, such asobject 304 and/or 306 shown inFIG. 3 , exist within a Server System Resource Store, such asstore 302. -
Flow 500 begins with receiveoperation 502, wherein the receiveoperation 502 relates to the receipt, by the server system of any read, execution, or update access request for an object. The access attempt may be performed by a third party application, such asapplication 318 or 320 (FIG. 3 ) or by theservices layer 314, or by yet other client-type requesting entities. The request itself may include information as to the type of access sought, any lock types to be created and enforced during the access, and/or a request for a lock token, etc. Additionally, the request may indicate whether an existing lock should be broken and/or modified, if one is present. Alternatively, the received request may simply be a request to break or modify a lock, apart from a request to access a resource. - Once the request has been received,
determination act 504 determines whether the requested resource is locked. Thus,determination act 504 determines whether the resource is locked by another client application program by either searching for a lock object associated with the resource, analyzing properties of the resource object itself, or by searching for lock information in a look-up table type of data structure. In either situation, the server analyzes any lock information for the requested object and determines whether an associated lock conflicts with the type of access requested. In the alternative embodiment wherein the request relates to a request to break or modify a lock, thendetermination act 504 simply determines whether the lock exists. - If
determination act 504 determines that the type of request does not conflict with any lock objects associated with the requested object, flow 500 branches NO to provide-access operation 506. Provide-access operation 506 is similar to provide operation 406 described above in conjunction withFIG. 4 and may also include creation of a lock for the requesting client. Once access has been provided, then flow 500 ends atend operation 508. - In alternative embodiments wherein the request is to break a lock, provide operation 506 may send a message to the client that the lock does not exist and flow branches to end
operation 508. - If
determination act 502 determines there is a lock associated with the requested resource that conflicts with the requested access, then flow 500 branches YES to testact 510.Test act 510 tests the request to determine whether the lock should be broken outright. Testing whether the lock is to broken relates to checking the request for an indication that lock should be broken, e.g., by the presence of breaklatency header. If this header is present, then flow branches YES to checksecurity operation 512. - Check
security operation 512 determines whether the client application program has the requisite capabilities to perform the lock break. If not then the process ends and the lock is not broken. However, if the client application program does have the requisite security then the lock may be broken (or modified). In an embodiment, determining whether a client application program has the requisite security clearance involves testing the request to break the lock. In the request, the client application program may include information related to the whether the client can read or write to the resource. Depending on the level of permission allowed the client, the server may determine if the security check has been satisfied. Although a security check should be done to prevent uncontrolled lock harvesting, it is not necessary to the understanding of the present invention and practically any number of security validation techniques may be used to determine whether the client is able to break a lock. - Following the
security check operation 512, notifystep 514 notifies the lock owner that the lock is about to be broken or modified. Notifying the lock owner of an impending lock break may provide the owner time to perform a lock refresh action or some other action that may stop the break function. Alternatively, the notification may provide the owner time to perform another action, e.g., a save to prevent lost updates. Notifystep 514 is an optional step in that some server systems may not notify the owner of the lock, yet such a notification may be preferred to protect owners from lost updates. - Once the notification has been completed, break operation 516 breaks the lock. Following break operation 516, flow 500 ends at
end operation 508. - If
test act 510 determines that the request does not indicate that the lock should be broken, e.g., by the absence of a predetermined header, then flow branches NO to testoperation 518.Test operation 518 tests the initial request to determine whether the lock should be modified. Such a modification may relate to actually reducing the timeout period or modifying the sharing capabilities of the lock. The modification may, in essence, change the properties of a lock to thereby enable another client to access the resource. Determining whether the initial request includes a request to modify the lock may involve a test for the presence of an “update” or “modify” lock header in the request. The mere presence of one of these headers may provide the server an ability to determine whether the request is for modification of the lock. - If
test operation 518 determines that the request does not request lock modification, then flow branches NO to endoperation 508. However, iftest operation 518 determines that the lock is to be modified, then flow branches YES to checkoperation 512. Checkoperation 512, as discussed above determines whether the client application program requesting the lock modification has the requisite security to perform such an action. Once the security check has completed, notifyoperation 514 notifies the lock owner that a modification is about to occur. As discussed above, notify operation is optional but may provide the lock owner time to perform a save or refresh act to prevent loss. - Following the notification, modify operation 516 performs the lock modification. The lock modification process may involve changing the locks properties, e.g., the timeout value, the sharing capabilities, etc. In alternative embodiments, the modification process may involve creating a new lock object, associating the new lock object with the resource and then deleting or harvesting the old lock object. In yet other embodiments, the actual modification process may be performed in other ways, but the end result is a lock object having different or modified properties. Once modified, flow 500 ends at
end operation 508. - The above described system and method provides a significant advantage over prior methods of managing resource locks in a distributed environment. In particular, the communication of both expected lifetime information for a lock significantly improves the planning and selection of request timing issues and performance for client application programs. Additionally, the ability to block a resource pending an unlock event further increases performance for client applications. The breaking and modification of existing locks also improves overall control of lock allocation and management.
- As discussed above, the invention described herein may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product. The computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
- Additionally, although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Therefore, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.
Claims (22)
1. A computer implemented method of managing a locked resource in a distributed environment, the method comprising:
receiving a request to access the resource, wherein the request originates from a requesting client computer system;
determining whether the resource has a conflicting lock;
if the resource has a conflicting lock, returning lock information to the requesting client computer system, so that the retry strategy of the requesting client computer system may be modified; and
if the resource does not have a conflicting lock, performing the requested access.
2. A computer implemented method as defined in claim 1 , wherein the lock information is related to expected lifetime of the lock.
3. A computer implemented method as defined in claim 2 , wherein the conflicting lock is owned by a lock owner and wherein the lock owner sets the expected lifetime of the lock.
4. A computer implemented method as defined in claim 2 , wherein the requesting client computer system modifies a request strategy based on the returned information.
5. A computer implemented method as defined in claim 4 , wherein the request strategy relates to a time period between requests for the resource.
6. A computer program product readable by a computer and encoding instructions for executing the method recited in claim 5 .
7. A computer implemented method as defined in claim 1 , wherein the lock information relates to sharing property values of the lock.
8. A computer implemented method as defined in claim 7 , wherein the request has a predetermined type and wherein the request strategy relates to the type of request.
9. A computer program product readable by a computer and encoding instructions for executing the method recited in claim 1 .
10. A computer-readable medium having stored thereon a locked resource, wherein the locked resource comprises:
a resource object data section for storing actual object data; and
a lock object, wherein the lock object may comprise an expected lifetime property.
11. A computer implemented method of allocating access to a resource in a distributed environment, the method comprising:
receiving a request to access the resource, wherein the request originates from a requesting client computer system;
determining whether the resource has a conflicting lock;
if the resource has a conflicting lock, blocking the resource for the requesting client computer system until the resource is free; and
performing the requested access, allocating a new lock to the requesting computer system.
12. A computer implemented method as defined in claim 11 , wherein the request for access to the resource further comprises a request to block the resource.
13. A computer implemented method as defined in claim 11 , wherein the request to block the resource is a predetermined header having a time value for defining a time period to block the resource.
14. A computer implemented method of unlocking a locked resource in a distributed environment, the locked resource having a lock object associated with a lock owner, the method comprising:
receiving a request to access the locked resource, wherein the request originates from a requesting client computer system other than the lock owner and wherein the request comprises a request to break the lock object;
identifying the request to break the lock object;
determining whether the requesting client computer system is cleared to break the lock object; and
removing the lock object from the resource if the requesting client computer system is cleared to break the lock object.
15. A computer implemented method as defined in claim 14 , further comprising:
notifying the lock owner that the lock object of the request to break the lock before removing the lock object.
16. A computer implemented method program product readable by a computer and encoding instructions for executing the method recited in claim 14 .
17. A computer system for managing resources in a distributed environment, the distributed environment having a plurality of resources and wherein at least one resource is associated with a lock object, the system comprising:
a receive module for receiving a request from a requesting client application program to access at least one resource in the distributed environment;
a determination module for determining whether the resource has a conflicting lock object associated with the requested resource; and
a communication module for returning lock information to the requesting client application program if the resource has a conflicting lock object, wherein the lock information returned to the requesting client application program relates to an expected lifetime of the conflicting lock object.
18. A system as defined in claim 17 , wherein:
an owning client application program owns a lock object for the requested resource; and
the owning client application program determines the expected lifetime of the lock object.
19. A system as defined in claim 18 , wherein the requesting client application program modifies a request strategy based on received information from the communication module.
20. A system as defined in claim 17 , further comprising:
a blocking module for blocking the locked resource for the requesting client application program until the resource is released; and
an allocation module for allocating a new lock to the requesting client application program following the release of the resource.
21. A system as defined in claim 17 , wherein the receive module is adapted to receive a request to break an existing lock object, the system further comprising:
a breaking module for removing the existing lock object for the requested resource in response to a received request to break an existing lock object.
22. A system as defined in claim 21 , wherein the requesting client application program requests to break the existing lock object associated with the requested resource.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/339,938 US20060136926A1 (en) | 2001-11-13 | 2006-01-25 | Allocating locks in a distributed environment |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/992,603 US7028300B2 (en) | 2001-11-13 | 2001-11-13 | Method and system for managing resources in a distributed environment that has an associated object |
US11/339,938 US20060136926A1 (en) | 2001-11-13 | 2006-01-25 | Allocating locks in a distributed environment |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/992,603 Continuation US7028300B2 (en) | 2001-11-13 | 2001-11-13 | Method and system for managing resources in a distributed environment that has an associated object |
Publications (1)
Publication Number | Publication Date |
---|---|
US20060136926A1 true US20060136926A1 (en) | 2006-06-22 |
Family
ID=25538520
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/992,603 Expired - Lifetime US7028300B2 (en) | 2001-11-13 | 2001-11-13 | Method and system for managing resources in a distributed environment that has an associated object |
US11/339,938 Abandoned US20060136926A1 (en) | 2001-11-13 | 2006-01-25 | Allocating locks in a distributed environment |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/992,603 Expired - Lifetime US7028300B2 (en) | 2001-11-13 | 2001-11-13 | Method and system for managing resources in a distributed environment that has an associated object |
Country Status (1)
Country | Link |
---|---|
US (2) | US7028300B2 (en) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093524A1 (en) * | 2001-11-13 | 2003-05-15 | Microsoft Corporation | Method and system for locking resources in a distributed environment |
US20030105871A1 (en) * | 2001-11-13 | 2003-06-05 | Microsoft Corporation, | Method and system for modifying lock properties in a distributed environment |
US20040088573A1 (en) * | 2002-10-31 | 2004-05-06 | Prabahar Jeyaram | Method and apparatus for providing dynamic locks for global resources |
US20060136637A1 (en) * | 2001-11-13 | 2006-06-22 | Microsoft Corporation | Locking multiple resources in a distributed environment |
US20090106247A1 (en) * | 2007-10-23 | 2009-04-23 | Daughtry Chenita D | Method and system for allowing multiple users to access and unlock shared electronic documents in a computer system |
US20090193122A1 (en) * | 2008-01-29 | 2009-07-30 | International Business Machines Corporation | Methods and systems for migrating network resources to improve network utilization |
US20090282043A1 (en) * | 2008-05-07 | 2009-11-12 | Srinivas Ganesh Dharmavaram | System And Method For Concurrency Control Of Logically Grouped Shared Objects In A Multi-User Environment |
US20100223242A1 (en) * | 2006-12-11 | 2010-09-02 | Simdesk Technologies | File Operations with Multiple Level File Locking Techniques |
US20110184924A1 (en) * | 2010-01-22 | 2011-07-28 | Microsoft Corporation | Storing temporary state data in separate containers |
US20110214024A1 (en) * | 2010-02-26 | 2011-09-01 | Bmc Software, Inc. | Method of Collecting and Correlating Locking Data to Determine Ultimate Holders in Real Time |
US20110213874A1 (en) * | 2010-02-26 | 2011-09-01 | Layton Jeffrey T | Lost computing resource notification |
US20130275401A1 (en) * | 2012-04-13 | 2013-10-17 | Desire2Learn Incorporated | Method and system for electronic content locking |
US9055067B1 (en) * | 2012-03-26 | 2015-06-09 | Amazon Technologies, Inc. | Flexible-location reservations and pricing for network-accessible resource capacity |
US10061777B1 (en) | 2017-04-04 | 2018-08-28 | International Business Machines Corporation | Testing of lock managers in computing environments |
US11113261B2 (en) * | 2018-01-19 | 2021-09-07 | Sap Se | Data locking |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7331043B2 (en) * | 2001-06-26 | 2008-02-12 | Sun Microsystems, Inc. | Detecting and mitigating soft errors using duplicative instructions |
JP3901484B2 (en) * | 2001-10-05 | 2007-04-04 | 株式会社ジェイテクト | Electric power steering device |
US7028300B2 (en) * | 2001-11-13 | 2006-04-11 | Microsoft Corporation | Method and system for managing resources in a distributed environment that has an associated object |
US7260555B2 (en) | 2001-12-12 | 2007-08-21 | Guardian Data Storage, Llc | Method and architecture for providing pervasive security to digital assets |
US8006280B1 (en) | 2001-12-12 | 2011-08-23 | Hildebrand Hal S | Security system for generating keys from access rules in a decentralized manner and methods therefor |
US7930756B1 (en) | 2001-12-12 | 2011-04-19 | Crocker Steven Toye | Multi-level cryptographic transformations for securing digital assets |
US7565683B1 (en) | 2001-12-12 | 2009-07-21 | Weiqing Huang | Method and system for implementing changes to security policies in a distributed security system |
US10033700B2 (en) | 2001-12-12 | 2018-07-24 | Intellectual Ventures I Llc | Dynamic evaluation of access rights |
US7178033B1 (en) | 2001-12-12 | 2007-02-13 | Pss Systems, Inc. | Method and apparatus for securing digital assets |
US7783765B2 (en) * | 2001-12-12 | 2010-08-24 | Hildebrand Hal S | System and method for providing distributed access control to secured documents |
US10360545B2 (en) | 2001-12-12 | 2019-07-23 | Guardian Data Storage, Llc | Method and apparatus for accessing secured electronic data off-line |
US7380120B1 (en) | 2001-12-12 | 2008-05-27 | Guardian Data Storage, Llc | Secured data format for access control |
US7921288B1 (en) | 2001-12-12 | 2011-04-05 | Hildebrand Hal S | System and method for providing different levels of key security for controlling access to secured items |
US7921284B1 (en) | 2001-12-12 | 2011-04-05 | Gary Mark Kinghorn | Method and system for protecting electronic data in enterprise environment |
US8065713B1 (en) | 2001-12-12 | 2011-11-22 | Klimenty Vainstein | System and method for providing multi-location access management to secured items |
US7950066B1 (en) | 2001-12-21 | 2011-05-24 | Guardian Data Storage, Llc | Method and system for restricting use of a clipboard application |
JP3813930B2 (en) * | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | Processor and program execution method |
JP2003233520A (en) * | 2002-02-07 | 2003-08-22 | Fujitsu Ltd | File controlling device for file resource on network |
US8176334B2 (en) | 2002-09-30 | 2012-05-08 | Guardian Data Storage, Llc | Document security system that permits external users to gain access to secured files |
US7596777B2 (en) * | 2002-06-25 | 2009-09-29 | Siebel Systems, Inc. | Method and apparatus to control translatable properties of metadata |
US8375113B2 (en) * | 2002-07-11 | 2013-02-12 | Oracle International Corporation | Employing wrapper profiles |
US20040117372A1 (en) * | 2002-12-17 | 2004-06-17 | Bulent Kasman | System and method for controlling access to system resources |
JP4750350B2 (en) | 2003-03-13 | 2011-08-17 | パナソニック株式会社 | Task switching device, method and program |
US7571354B2 (en) * | 2003-05-09 | 2009-08-04 | Sun Microsystems, Inc. | System and method for request routing |
US8707034B1 (en) | 2003-05-30 | 2014-04-22 | Intellectual Ventures I Llc | Method and system for using remote headers to secure electronic files |
US7739385B1 (en) * | 2003-06-16 | 2010-06-15 | Cisco Technology, Inc. | Explicit locking of resources in devices accessible on a network |
US20050022202A1 (en) * | 2003-07-09 | 2005-01-27 | Sun Microsystems, Inc. | Request failover mechanism for a load balancing system |
US7703140B2 (en) | 2003-09-30 | 2010-04-20 | Guardian Data Storage, Llc | Method and system for securing digital assets using process-driven security policies |
US8127366B2 (en) | 2003-09-30 | 2012-02-28 | Guardian Data Storage, Llc | Method and apparatus for transitioning between states of security policies used to secure electronic documents |
EP1566744A1 (en) * | 2004-02-19 | 2005-08-24 | Sap Ag | Optimising lock granularity using range locking |
GB2415065B (en) * | 2004-06-09 | 2009-01-21 | Symbian Software Ltd | A computing device having a multiple process architecture for running plug-in code modules |
US7769734B2 (en) * | 2004-07-26 | 2010-08-03 | International Business Machines Corporation | Managing long-lived resource locks in a multi-system mail infrastructure |
US7711103B2 (en) * | 2005-04-22 | 2010-05-04 | Culbertson Robert F | System and method for intelligent service agent using VoIP |
KR100748700B1 (en) * | 2006-01-18 | 2007-08-13 | 삼성전자주식회사 | Video conference system and method using white board |
AU2008200511B2 (en) * | 2007-02-28 | 2010-07-29 | Videobet Interactive Sweden AB | Transaction processing system and method |
US20090006402A1 (en) * | 2007-06-28 | 2009-01-01 | Holger Bohle | Methods and systems for the dynamic selection of a locking strategy |
DE102009042128A1 (en) * | 2009-09-18 | 2011-03-24 | Siemens Aktiengesellschaft | Method and system for using temporary exclusive locks for parallel resource access |
US8869307B2 (en) * | 2010-11-19 | 2014-10-21 | Mobile Iron, Inc. | Mobile posture-based policy, remediation and access control for enterprise resources |
US8924370B2 (en) | 2011-05-31 | 2014-12-30 | Ori Software Development Ltd. | Efficient distributed lock manager |
US8671204B2 (en) * | 2011-06-29 | 2014-03-11 | Qualcomm Incorporated | Cooperative sharing of subscriptions to a subscriber-based network among M2M devices |
US9733664B1 (en) * | 2013-03-14 | 2017-08-15 | Gamesys Ltd. | Method for expiring fault-tolerant timers using distributed locks |
US10949397B1 (en) * | 2014-12-11 | 2021-03-16 | Amazon Technologies, Inc. | Data locking and state management on distributed storage systems |
US11341265B1 (en) * | 2018-02-20 | 2022-05-24 | Dilip Suranjith Gunawardena | Function-call interceptor framework for managing access to on-device content deemed sensitive by the user |
CN110764899A (en) * | 2019-09-03 | 2020-02-07 | 无锡华云数据技术服务有限公司 | Resource quota management method, resource processing method, device, equipment, system and medium |
CN112583626B (en) * | 2019-09-30 | 2023-02-28 | 阿里巴巴集团控股有限公司 | Information processing method and device based on distributed lock and computer readable medium |
CN111737020A (en) * | 2020-06-24 | 2020-10-02 | 广联达科技股份有限公司 | Concurrent processing method and device for distributed cluster |
CN113342507B (en) * | 2021-07-07 | 2024-03-29 | 湖南四方天箭信息科技有限公司 | Distributed lock service realization method and device and computer equipment |
Citations (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5023907A (en) * | 1988-09-30 | 1991-06-11 | Apollo Computer, Inc. | Network license server |
US5117352A (en) * | 1989-10-20 | 1992-05-26 | Digital Equipment Corporation | Mechanism for fail-over notification |
US5161227A (en) * | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
US5175852A (en) * | 1987-02-13 | 1992-12-29 | International Business Machines Corporation | Distributed file access structure lock |
US5285528A (en) * | 1991-02-22 | 1994-02-08 | International Business Machines Corporation | Data structures and algorithms for managing lock states of addressable element ranges |
US5293621A (en) * | 1993-01-11 | 1994-03-08 | Unisys Corporation | Varying wait interval retry apparatus and method for preventing bus lockout |
US5303368A (en) * | 1989-02-28 | 1994-04-12 | Kabushiki Kaisha Toshiba | Dead lock preventing method for data base system |
US5305448A (en) * | 1990-07-02 | 1994-04-19 | International Business Machines Corp. | Shared access serialization featuring second process lock steal and subsequent write access denial to first process |
US5367671A (en) * | 1990-09-25 | 1994-11-22 | International Business Machines Corp. | System for accessing extended object attribute (EA) data through file name or EA handle linkages in path tables |
US5390302A (en) * | 1991-02-21 | 1995-02-14 | Digital Equipment Corporation | Transaction control |
US5448727A (en) * | 1991-04-30 | 1995-09-05 | Hewlett-Packard Company | Domain based partitioning and reclustering of relations in object-oriented relational database management systems |
US5459862A (en) * | 1990-06-14 | 1995-10-17 | Sunquest Informaion Systems, Inc. | Network concurrency control for autonomous databases featuring independent lock release and lock ownership transfer |
US5485607A (en) * | 1993-02-05 | 1996-01-16 | Digital Equipment Corporation | Concurrency-control method and apparatus in a database management system utilizing key-valued locking |
US5502840A (en) * | 1991-01-18 | 1996-03-26 | Ncr Corporation | Method and apparatus for advising a requesting process of a contention scheme to employ to access a shared resource |
US5511224A (en) * | 1993-02-18 | 1996-04-23 | Unisys Corporation | Configurable network using dual system busses with common protocol compatible for store-through and non-store-through cache memories |
US5535375A (en) * | 1992-04-20 | 1996-07-09 | International Business Machines Corporation | File manager for files shared by heterogeneous clients |
US5555388A (en) * | 1992-08-20 | 1996-09-10 | Borland International, Inc. | Multi-user system and methods providing improved file management by reading |
US5675782A (en) * | 1995-06-06 | 1997-10-07 | Microsoft Corporation | Controlling access to objects on multiple operating systems |
US5682537A (en) * | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
US5724578A (en) * | 1994-12-07 | 1998-03-03 | Fujitsu Limited | File managing system for managing files shared with a plurality of users |
US5734909A (en) * | 1995-09-01 | 1998-03-31 | International Business Machines Corporation | Method for controlling the locking and unlocking of system resources in a shared resource distributed computing environment |
US5745747A (en) * | 1995-02-06 | 1998-04-28 | International Business Machines Corporation | Method and system of lock request management in a data processing system having multiple processes per transaction |
US5784556A (en) * | 1994-04-18 | 1998-07-21 | Bull S.A. | Analyzer using control graph for system call function and lists of lock applications for all possible synchronizations of processes to analyze risks of blocking operation |
US5832484A (en) * | 1996-07-02 | 1998-11-03 | Sybase, Inc. | Database system with methods for parallel lock management |
US5835906A (en) * | 1996-07-01 | 1998-11-10 | Sun Microsystems, Inc. | Methods and apparatus for sharing stored data objects in a computer system |
US5862376A (en) * | 1996-06-24 | 1999-01-19 | Sun Microsystems, Inc. | System and method for space and time efficient object locking |
US5933825A (en) * | 1997-07-21 | 1999-08-03 | Apple Computer, Inc. | Arbitrating concurrent access to file system objects |
US5956712A (en) * | 1995-06-07 | 1999-09-21 | International Business Machines Corporation | Byte range locking in a distributed environment |
US5995998A (en) * | 1998-01-23 | 1999-11-30 | Sun Microsystems, Inc. | Method, apparatus and computer program product for locking interrelated data structures in a multi-threaded computing environment |
US6016490A (en) * | 1997-02-05 | 2000-01-18 | Fuji Xerox Co., Ltd. | Database management system |
US6026401A (en) * | 1997-10-14 | 2000-02-15 | International Business Machines Corporation | Locking tool data objects in a framework environment |
US6044217A (en) * | 1997-03-27 | 2000-03-28 | International Business Machines Corporation | Hierarchical metadata store for an integrated development environment |
US6049841A (en) * | 1997-11-10 | 2000-04-11 | International Business Machines Corporation | Method and apparatus of selecting data transmission channels |
US6073177A (en) * | 1997-08-05 | 2000-06-06 | Sterling Software, Inc. | Dynamic method for connecting a client to a server application |
US6105057A (en) * | 1998-01-28 | 2000-08-15 | Ericsson Inc. | Method and apparatus for manipulating mutexes on network assets |
US6145006A (en) * | 1997-06-25 | 2000-11-07 | Emc Corporation | Method and apparatus for coordinating locking operations of heterogeneous host computers accessing a storage subsystem |
US6173308B1 (en) * | 1994-12-07 | 2001-01-09 | International Computers Limited | Deadlock detection mechanism for data processing system, with doublechecking to confirm that detected deadlock is non-spurious |
US6298386B1 (en) * | 1996-08-14 | 2001-10-02 | Emc Corporation | Network file server having a message collector queue for connection and connectionless oriented protocols |
US6314563B1 (en) * | 1999-02-05 | 2001-11-06 | Sun Microsystems, Inc. | Expedited object locking and unlocking |
US6321238B1 (en) * | 1998-12-28 | 2001-11-20 | Oracle Corporation | Hybrid shared nothing/shared disk database system |
US6324581B1 (en) * | 1999-03-03 | 2001-11-27 | Emc Corporation | File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems |
US6330612B1 (en) * | 1998-08-28 | 2001-12-11 | International Business Machines Corporation | Method and apparatus for serializing access to a shared resource in an information handling system |
US6353828B1 (en) * | 1999-05-14 | 2002-03-05 | Oracle Corp. | Concurrency control for transactions that update base tables of a materialized view using different types of locks |
US20020040469A1 (en) * | 2000-06-03 | 2002-04-04 | International Business Machines Corporation | System and method for the configuration of software products |
US6389420B1 (en) * | 1999-09-30 | 2002-05-14 | Emc Corporation | File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration |
US20020065824A1 (en) * | 1999-04-12 | 2002-05-30 | Michael Rosenfelt | Methods of providing computer systems with bundled access to restricted-access databases |
US6405274B1 (en) * | 1998-12-30 | 2002-06-11 | Oracle Corporation | Anticipatory lock mode conversions in a lock management system |
US6411968B2 (en) * | 1998-02-13 | 2002-06-25 | Oracle Corporation | Managing recovery of data after failure of one or more caches |
US6412034B1 (en) * | 1999-04-16 | 2002-06-25 | Oracle Corporation | Transaction-based locking approach |
US6438548B1 (en) * | 1999-06-30 | 2002-08-20 | International Business Machines Corporation | Method of and system for managing documents in a bandwidth constrained environment |
US20020161955A1 (en) * | 2001-04-27 | 2002-10-31 | Beukema Bruce Leroy | Atomic ownership change operation for input/output (I/O) bridge device in clustered computer system |
US20020174305A1 (en) * | 2000-12-28 | 2002-11-21 | Vartti Kelvin S. | Method and apparatus for controlling memory storage locks based on cache line ownership |
US20020178249A1 (en) * | 2001-03-09 | 2002-11-28 | Senthil Prabakaran | Method for managing objects created in a directory service |
US6493804B1 (en) * | 1997-10-01 | 2002-12-10 | Regents Of The University Of Minnesota | Global file system and data storage device locks |
US6493746B1 (en) * | 1998-03-11 | 2002-12-10 | Nec Corporation | Multi-operator network management system and method using transaction processing |
US20020194526A1 (en) * | 2001-01-29 | 2002-12-19 | Ulrich Thomas R. | Dynamic redistribution of parity groups |
US6499031B1 (en) * | 1999-07-26 | 2002-12-24 | Microsoft Corporation | Systems and methods for using locks with computer resources |
US6502170B2 (en) * | 2000-12-15 | 2002-12-31 | Intel Corporation | Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes |
US20030004952A1 (en) * | 1999-10-18 | 2003-01-02 | Mark Nixon | Accessing and updating a configuration database from distributed physical locations within a process control system |
US6510478B1 (en) * | 1997-06-12 | 2003-01-21 | Aprisma Management Technologies Inc. | Method and apparatus for coordination of a shared object in a distributed system |
US6516999B1 (en) * | 1998-10-14 | 2003-02-11 | Solid Access Technologies Limited Liability Company | Method of protecting data stored in the memory device of a computer system and equipment to carry out this method |
US20030037223A1 (en) * | 2001-08-20 | 2003-02-20 | Steely Simon C. | Apparatus and method for ownership load locked misses for atomic lock acquisition in a multiprocessor computer system |
US6529905B1 (en) * | 2000-01-11 | 2003-03-04 | Frontline Solutions, Inc. | Method and system for allowing multiple users to edit a hierarchical data structure |
US6549862B1 (en) * | 1998-12-28 | 2003-04-15 | National Science Council | Vector network analyzer architecture based on sliding correlator techniques |
US20030079100A1 (en) * | 2001-05-31 | 2003-04-24 | Oracle Corporation | Storage access keys |
US20030093524A1 (en) * | 2001-11-13 | 2003-05-15 | Microsoft Corporation | Method and system for locking resources in a distributed environment |
US6571276B1 (en) * | 2000-02-23 | 2003-05-27 | International Business Machines Corporation | System for managing asset access in a distributed storage system |
US20030105871A1 (en) * | 2001-11-13 | 2003-06-05 | Microsoft Corporation, | Method and system for modifying lock properties in a distributed environment |
US20030145041A1 (en) * | 2001-10-05 | 2003-07-31 | Dunham Douglas Paul | Storage area network methods and apparatus for display and management of a hierarchical file system extension policy |
US20030149666A1 (en) * | 2000-11-20 | 2003-08-07 | Davies Philip Michael | Personal authentication system |
US20030167317A1 (en) * | 1999-07-26 | 2003-09-04 | Deen Brian J. | Methods and systems for processing HTTP requests |
US6618744B1 (en) * | 1996-06-24 | 2003-09-09 | Oracle Corporation | Efficient lock state transitions in a distributed system |
US6625701B1 (en) * | 1999-11-09 | 2003-09-23 | International Business Machines Corporation | Extended cache coherency protocol with a modified store instruction lock release indicator |
US6704767B1 (en) * | 2000-09-26 | 2004-03-09 | Oracle International Corporation | Using distributed information about lock conversion requests to efficiently manage lock state transitions |
US6708195B1 (en) * | 1998-10-02 | 2004-03-16 | International Business Machines Corporation | Composite locking of objects in a database |
US6708324B1 (en) * | 1999-06-24 | 2004-03-16 | Cisco Technology, Inc. | Extensible automated testing software |
US6717694B1 (en) * | 1998-07-31 | 2004-04-06 | Canon Kabushiki Kaisha | Data transmission apparatus, system and method, and recording medium |
US6718371B1 (en) * | 2000-12-19 | 2004-04-06 | Novell, Inc. | XML-based integrated services framework |
US6725317B1 (en) * | 2000-04-29 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | System and method for managing a computer system having a plurality of partitions |
US6748470B2 (en) * | 2001-11-13 | 2004-06-08 | Microsoft Corporation | Method and system for locking multiple resources in a distributed environment |
US6772154B1 (en) * | 2000-11-16 | 2004-08-03 | Sun Microsystems, Inc. | Implementation of nested databases using flexible locking mechanisms |
US6823458B1 (en) * | 1999-11-18 | 2004-11-23 | International Business Machines Corporation | Apparatus and method for securing resources shared by multiple operating systems |
US6842770B1 (en) * | 2000-08-18 | 2005-01-11 | Apple Computer, Inc. | Method and system for seamlessly accessing remotely stored files |
US6850938B1 (en) * | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
US6865549B1 (en) * | 1999-11-15 | 2005-03-08 | Sun Microsystems, Inc. | Method and apparatus for concurrency control in a policy-based management system |
US6928545B1 (en) * | 2000-04-09 | 2005-08-09 | Vidius Inc. | Network content access control |
US6959337B2 (en) * | 2001-04-23 | 2005-10-25 | Hewlett-Packard Development Company, L.P. | Networked system for assuring synchronous access to critical facilities |
US7028300B2 (en) * | 2001-11-13 | 2006-04-11 | Microsoft Corporation | Method and system for managing resources in a distributed environment that has an associated object |
US7139811B2 (en) * | 2001-08-01 | 2006-11-21 | Actona Technologies Ltd. | Double-proxy remote data access system |
US7725587B1 (en) * | 2000-08-24 | 2010-05-25 | Aol Llc | Deep packet scan hacker identification |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5852740A (en) | 1981-09-24 | 1983-03-29 | Fujitsu Ltd | System for restoration processing control of partitioned file |
US5701452A (en) | 1995-04-20 | 1997-12-23 | Ncr Corporation | Computer generated structure |
US6562076B2 (en) | 1998-08-31 | 2003-05-13 | Xerox Corporation | Extending application behavior through active properties attached to a document in a document management system |
-
2001
- 2001-11-13 US US09/992,603 patent/US7028300B2/en not_active Expired - Lifetime
-
2006
- 2006-01-25 US US11/339,938 patent/US20060136926A1/en not_active Abandoned
Patent Citations (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175852A (en) * | 1987-02-13 | 1992-12-29 | International Business Machines Corporation | Distributed file access structure lock |
US5023907A (en) * | 1988-09-30 | 1991-06-11 | Apollo Computer, Inc. | Network license server |
US5303368A (en) * | 1989-02-28 | 1994-04-12 | Kabushiki Kaisha Toshiba | Dead lock preventing method for data base system |
US5117352A (en) * | 1989-10-20 | 1992-05-26 | Digital Equipment Corporation | Mechanism for fail-over notification |
US5161227A (en) * | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
US5459862A (en) * | 1990-06-14 | 1995-10-17 | Sunquest Informaion Systems, Inc. | Network concurrency control for autonomous databases featuring independent lock release and lock ownership transfer |
US5305448A (en) * | 1990-07-02 | 1994-04-19 | International Business Machines Corp. | Shared access serialization featuring second process lock steal and subsequent write access denial to first process |
US5367671A (en) * | 1990-09-25 | 1994-11-22 | International Business Machines Corp. | System for accessing extended object attribute (EA) data through file name or EA handle linkages in path tables |
US5502840A (en) * | 1991-01-18 | 1996-03-26 | Ncr Corporation | Method and apparatus for advising a requesting process of a contention scheme to employ to access a shared resource |
US5390302A (en) * | 1991-02-21 | 1995-02-14 | Digital Equipment Corporation | Transaction control |
US5285528A (en) * | 1991-02-22 | 1994-02-08 | International Business Machines Corporation | Data structures and algorithms for managing lock states of addressable element ranges |
US5448727A (en) * | 1991-04-30 | 1995-09-05 | Hewlett-Packard Company | Domain based partitioning and reclustering of relations in object-oriented relational database management systems |
US5535375A (en) * | 1992-04-20 | 1996-07-09 | International Business Machines Corporation | File manager for files shared by heterogeneous clients |
US5555388A (en) * | 1992-08-20 | 1996-09-10 | Borland International, Inc. | Multi-user system and methods providing improved file management by reading |
US5293621A (en) * | 1993-01-11 | 1994-03-08 | Unisys Corporation | Varying wait interval retry apparatus and method for preventing bus lockout |
US5485607A (en) * | 1993-02-05 | 1996-01-16 | Digital Equipment Corporation | Concurrency-control method and apparatus in a database management system utilizing key-valued locking |
US5511224A (en) * | 1993-02-18 | 1996-04-23 | Unisys Corporation | Configurable network using dual system busses with common protocol compatible for store-through and non-store-through cache memories |
US5784556A (en) * | 1994-04-18 | 1998-07-21 | Bull S.A. | Analyzer using control graph for system call function and lists of lock applications for all possible synchronizations of processes to analyze risks of blocking operation |
US5724578A (en) * | 1994-12-07 | 1998-03-03 | Fujitsu Limited | File managing system for managing files shared with a plurality of users |
US6173308B1 (en) * | 1994-12-07 | 2001-01-09 | International Computers Limited | Deadlock detection mechanism for data processing system, with doublechecking to confirm that detected deadlock is non-spurious |
US5745747A (en) * | 1995-02-06 | 1998-04-28 | International Business Machines Corporation | Method and system of lock request management in a data processing system having multiple processes per transaction |
US5675782A (en) * | 1995-06-06 | 1997-10-07 | Microsoft Corporation | Controlling access to objects on multiple operating systems |
US5956712A (en) * | 1995-06-07 | 1999-09-21 | International Business Machines Corporation | Byte range locking in a distributed environment |
US5682537A (en) * | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
US5734909A (en) * | 1995-09-01 | 1998-03-31 | International Business Machines Corporation | Method for controlling the locking and unlocking of system resources in a shared resource distributed computing environment |
US5862376A (en) * | 1996-06-24 | 1999-01-19 | Sun Microsystems, Inc. | System and method for space and time efficient object locking |
US6618744B1 (en) * | 1996-06-24 | 2003-09-09 | Oracle Corporation | Efficient lock state transitions in a distributed system |
US5835906A (en) * | 1996-07-01 | 1998-11-10 | Sun Microsystems, Inc. | Methods and apparatus for sharing stored data objects in a computer system |
US5832484A (en) * | 1996-07-02 | 1998-11-03 | Sybase, Inc. | Database system with methods for parallel lock management |
US6298386B1 (en) * | 1996-08-14 | 2001-10-02 | Emc Corporation | Network file server having a message collector queue for connection and connectionless oriented protocols |
US6016490A (en) * | 1997-02-05 | 2000-01-18 | Fuji Xerox Co., Ltd. | Database management system |
US6044217A (en) * | 1997-03-27 | 2000-03-28 | International Business Machines Corporation | Hierarchical metadata store for an integrated development environment |
US6510478B1 (en) * | 1997-06-12 | 2003-01-21 | Aprisma Management Technologies Inc. | Method and apparatus for coordination of a shared object in a distributed system |
US6145006A (en) * | 1997-06-25 | 2000-11-07 | Emc Corporation | Method and apparatus for coordinating locking operations of heterogeneous host computers accessing a storage subsystem |
US5933825A (en) * | 1997-07-21 | 1999-08-03 | Apple Computer, Inc. | Arbitrating concurrent access to file system objects |
US6073177A (en) * | 1997-08-05 | 2000-06-06 | Sterling Software, Inc. | Dynamic method for connecting a client to a server application |
US6493804B1 (en) * | 1997-10-01 | 2002-12-10 | Regents Of The University Of Minnesota | Global file system and data storage device locks |
US6026401A (en) * | 1997-10-14 | 2000-02-15 | International Business Machines Corporation | Locking tool data objects in a framework environment |
US6049841A (en) * | 1997-11-10 | 2000-04-11 | International Business Machines Corporation | Method and apparatus of selecting data transmission channels |
US5995998A (en) * | 1998-01-23 | 1999-11-30 | Sun Microsystems, Inc. | Method, apparatus and computer program product for locking interrelated data structures in a multi-threaded computing environment |
US6105057A (en) * | 1998-01-28 | 2000-08-15 | Ericsson Inc. | Method and apparatus for manipulating mutexes on network assets |
US6411968B2 (en) * | 1998-02-13 | 2002-06-25 | Oracle Corporation | Managing recovery of data after failure of one or more caches |
US6493746B1 (en) * | 1998-03-11 | 2002-12-10 | Nec Corporation | Multi-operator network management system and method using transaction processing |
US6717694B1 (en) * | 1998-07-31 | 2004-04-06 | Canon Kabushiki Kaisha | Data transmission apparatus, system and method, and recording medium |
US6330612B1 (en) * | 1998-08-28 | 2001-12-11 | International Business Machines Corporation | Method and apparatus for serializing access to a shared resource in an information handling system |
US6708195B1 (en) * | 1998-10-02 | 2004-03-16 | International Business Machines Corporation | Composite locking of objects in a database |
US6516999B1 (en) * | 1998-10-14 | 2003-02-11 | Solid Access Technologies Limited Liability Company | Method of protecting data stored in the memory device of a computer system and equipment to carry out this method |
US6321238B1 (en) * | 1998-12-28 | 2001-11-20 | Oracle Corporation | Hybrid shared nothing/shared disk database system |
US6549862B1 (en) * | 1998-12-28 | 2003-04-15 | National Science Council | Vector network analyzer architecture based on sliding correlator techniques |
US6405274B1 (en) * | 1998-12-30 | 2002-06-11 | Oracle Corporation | Anticipatory lock mode conversions in a lock management system |
US6314563B1 (en) * | 1999-02-05 | 2001-11-06 | Sun Microsystems, Inc. | Expedited object locking and unlocking |
US6324581B1 (en) * | 1999-03-03 | 2001-11-27 | Emc Corporation | File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems |
US20020065824A1 (en) * | 1999-04-12 | 2002-05-30 | Michael Rosenfelt | Methods of providing computer systems with bundled access to restricted-access databases |
US6412034B1 (en) * | 1999-04-16 | 2002-06-25 | Oracle Corporation | Transaction-based locking approach |
US6353828B1 (en) * | 1999-05-14 | 2002-03-05 | Oracle Corp. | Concurrency control for transactions that update base tables of a materialized view using different types of locks |
US6708324B1 (en) * | 1999-06-24 | 2004-03-16 | Cisco Technology, Inc. | Extensible automated testing software |
US6438548B1 (en) * | 1999-06-30 | 2002-08-20 | International Business Machines Corporation | Method of and system for managing documents in a bandwidth constrained environment |
US6499031B1 (en) * | 1999-07-26 | 2002-12-24 | Microsoft Corporation | Systems and methods for using locks with computer resources |
US20030167317A1 (en) * | 1999-07-26 | 2003-09-04 | Deen Brian J. | Methods and systems for processing HTTP requests |
US6629127B1 (en) * | 1999-07-26 | 2003-09-30 | Microsoft Corporation | Methods and systems for processing HTTP requests |
US6389420B1 (en) * | 1999-09-30 | 2002-05-14 | Emc Corporation | File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration |
US20030004952A1 (en) * | 1999-10-18 | 2003-01-02 | Mark Nixon | Accessing and updating a configuration database from distributed physical locations within a process control system |
US6687698B1 (en) * | 1999-10-18 | 2004-02-03 | Fisher Rosemount Systems, Inc. | Accessing and updating a configuration database from distributed physical locations within a process control system |
US6625701B1 (en) * | 1999-11-09 | 2003-09-23 | International Business Machines Corporation | Extended cache coherency protocol with a modified store instruction lock release indicator |
US6865549B1 (en) * | 1999-11-15 | 2005-03-08 | Sun Microsystems, Inc. | Method and apparatus for concurrency control in a policy-based management system |
US6823458B1 (en) * | 1999-11-18 | 2004-11-23 | International Business Machines Corporation | Apparatus and method for securing resources shared by multiple operating systems |
US6529905B1 (en) * | 2000-01-11 | 2003-03-04 | Frontline Solutions, Inc. | Method and system for allowing multiple users to edit a hierarchical data structure |
US6571276B1 (en) * | 2000-02-23 | 2003-05-27 | International Business Machines Corporation | System for managing asset access in a distributed storage system |
US6928545B1 (en) * | 2000-04-09 | 2005-08-09 | Vidius Inc. | Network content access control |
US6725317B1 (en) * | 2000-04-29 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | System and method for managing a computer system having a plurality of partitions |
US20020040469A1 (en) * | 2000-06-03 | 2002-04-04 | International Business Machines Corporation | System and method for the configuration of software products |
US6842770B1 (en) * | 2000-08-18 | 2005-01-11 | Apple Computer, Inc. | Method and system for seamlessly accessing remotely stored files |
US7725587B1 (en) * | 2000-08-24 | 2010-05-25 | Aol Llc | Deep packet scan hacker identification |
US6704767B1 (en) * | 2000-09-26 | 2004-03-09 | Oracle International Corporation | Using distributed information about lock conversion requests to efficiently manage lock state transitions |
US6772154B1 (en) * | 2000-11-16 | 2004-08-03 | Sun Microsystems, Inc. | Implementation of nested databases using flexible locking mechanisms |
US20030149666A1 (en) * | 2000-11-20 | 2003-08-07 | Davies Philip Michael | Personal authentication system |
US6502170B2 (en) * | 2000-12-15 | 2002-12-31 | Intel Corporation | Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes |
US6718371B1 (en) * | 2000-12-19 | 2004-04-06 | Novell, Inc. | XML-based integrated services framework |
US6625698B2 (en) * | 2000-12-28 | 2003-09-23 | Unisys Corporation | Method and apparatus for controlling memory storage locks based on cache line ownership |
US20020174305A1 (en) * | 2000-12-28 | 2002-11-21 | Vartti Kelvin S. | Method and apparatus for controlling memory storage locks based on cache line ownership |
US20020194526A1 (en) * | 2001-01-29 | 2002-12-19 | Ulrich Thomas R. | Dynamic redistribution of parity groups |
US6850938B1 (en) * | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
US20020178249A1 (en) * | 2001-03-09 | 2002-11-28 | Senthil Prabakaran | Method for managing objects created in a directory service |
US6959337B2 (en) * | 2001-04-23 | 2005-10-25 | Hewlett-Packard Development Company, L.P. | Networked system for assuring synchronous access to critical facilities |
US20020161955A1 (en) * | 2001-04-27 | 2002-10-31 | Beukema Bruce Leroy | Atomic ownership change operation for input/output (I/O) bridge device in clustered computer system |
US20030079100A1 (en) * | 2001-05-31 | 2003-04-24 | Oracle Corporation | Storage access keys |
US7139811B2 (en) * | 2001-08-01 | 2006-11-21 | Actona Technologies Ltd. | Double-proxy remote data access system |
US6801986B2 (en) * | 2001-08-20 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation |
US20030037223A1 (en) * | 2001-08-20 | 2003-02-20 | Steely Simon C. | Apparatus and method for ownership load locked misses for atomic lock acquisition in a multiprocessor computer system |
US20030145041A1 (en) * | 2001-10-05 | 2003-07-31 | Dunham Douglas Paul | Storage area network methods and apparatus for display and management of a hierarchical file system extension policy |
US20030093524A1 (en) * | 2001-11-13 | 2003-05-15 | Microsoft Corporation | Method and system for locking resources in a distributed environment |
US7028300B2 (en) * | 2001-11-13 | 2006-04-11 | Microsoft Corporation | Method and system for managing resources in a distributed environment that has an associated object |
US20060136637A1 (en) * | 2001-11-13 | 2006-06-22 | Microsoft Corporation | Locking multiple resources in a distributed environment |
US6748470B2 (en) * | 2001-11-13 | 2004-06-08 | Microsoft Corporation | Method and system for locking multiple resources in a distributed environment |
US7159056B2 (en) * | 2001-11-13 | 2007-01-02 | Microsoft Corporation | Method and system for locking multiple resources in a distributed environment |
US7406519B2 (en) * | 2001-11-13 | 2008-07-29 | Microsoft Corporation | Method and system for locking resources in a distributed environment |
US7487278B2 (en) * | 2001-11-13 | 2009-02-03 | Microsoft Corporation | Locking multiple resources in a distributed environment |
US20030105871A1 (en) * | 2001-11-13 | 2003-06-05 | Microsoft Corporation, | Method and system for modifying lock properties in a distributed environment |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105871A1 (en) * | 2001-11-13 | 2003-06-05 | Microsoft Corporation, | Method and system for modifying lock properties in a distributed environment |
US20060136637A1 (en) * | 2001-11-13 | 2006-06-22 | Microsoft Corporation | Locking multiple resources in a distributed environment |
US7406519B2 (en) | 2001-11-13 | 2008-07-29 | Microsoft Corporation | Method and system for locking resources in a distributed environment |
US20080307138A1 (en) * | 2001-11-13 | 2008-12-11 | Microsoft Corporation | Method and system for locking resources in a distributed environment |
US7487278B2 (en) | 2001-11-13 | 2009-02-03 | Microsoft Corporation | Locking multiple resources in a distributed environment |
US20030093524A1 (en) * | 2001-11-13 | 2003-05-15 | Microsoft Corporation | Method and system for locking resources in a distributed environment |
US20040088573A1 (en) * | 2002-10-31 | 2004-05-06 | Prabahar Jeyaram | Method and apparatus for providing dynamic locks for global resources |
US7444634B2 (en) * | 2002-10-31 | 2008-10-28 | Sun Microsystems, Inc. | Method and apparatus for providing dynamic locks for global resources |
US20100223242A1 (en) * | 2006-12-11 | 2010-09-02 | Simdesk Technologies | File Operations with Multiple Level File Locking Techniques |
US20090106247A1 (en) * | 2007-10-23 | 2009-04-23 | Daughtry Chenita D | Method and system for allowing multiple users to access and unlock shared electronic documents in a computer system |
US8024361B2 (en) * | 2007-10-23 | 2011-09-20 | International Business Machines Corporation | Method and system for allowing multiple users to access and unlock shared electronic documents in a computer system |
US20090193122A1 (en) * | 2008-01-29 | 2009-07-30 | International Business Machines Corporation | Methods and systems for migrating network resources to improve network utilization |
US10630605B2 (en) | 2008-01-29 | 2020-04-21 | International Business Machines Corporation | Methods and systems for migrating network resources to improve network utilization |
US9141437B2 (en) | 2008-01-29 | 2015-09-22 | International Business Machines Corporation | Methods and systems for migrating network resources to improve network utilization |
US10212099B2 (en) | 2008-01-29 | 2019-02-19 | International Business Machines Corporation | Methods and systems for migrating network resources to improve network utilization |
US20090282043A1 (en) * | 2008-05-07 | 2009-11-12 | Srinivas Ganesh Dharmavaram | System And Method For Concurrency Control Of Logically Grouped Shared Objects In A Multi-User Environment |
US20110184924A1 (en) * | 2010-01-22 | 2011-07-28 | Microsoft Corporation | Storing temporary state data in separate containers |
US10346365B2 (en) | 2010-01-22 | 2019-07-09 | Microsoft Technology Licensing, Llc | Storing temporary state data in separate containers |
US9015136B2 (en) | 2010-01-22 | 2015-04-21 | Microsoft Technology Licensing, Llc | Storing temporary state data in separate containers |
US8407531B2 (en) * | 2010-02-26 | 2013-03-26 | Bmc Software, Inc. | Method of collecting and correlating locking data to determine ultimate holders in real time |
US9785529B2 (en) * | 2010-02-26 | 2017-10-10 | Red Hat, Inc. | Lost computing resource notification |
US20110213874A1 (en) * | 2010-02-26 | 2011-09-01 | Layton Jeffrey T | Lost computing resource notification |
US20110214024A1 (en) * | 2010-02-26 | 2011-09-01 | Bmc Software, Inc. | Method of Collecting and Correlating Locking Data to Determine Ultimate Holders in Real Time |
US9055067B1 (en) * | 2012-03-26 | 2015-06-09 | Amazon Technologies, Inc. | Flexible-location reservations and pricing for network-accessible resource capacity |
US20150271092A1 (en) * | 2012-03-26 | 2015-09-24 | Amazon Technologies, Inc. | Flexible-location reservations and pricing for network-accessible resource capacity |
US9929971B2 (en) * | 2012-03-26 | 2018-03-27 | Amazon Technologies, Inc. | Flexible-location reservations and pricing for network-accessible resource capacity |
US9256600B2 (en) * | 2012-04-13 | 2016-02-09 | D2L Corporation | Method and system for electronic content locking |
US20130275401A1 (en) * | 2012-04-13 | 2013-10-17 | Desire2Learn Incorporated | Method and system for electronic content locking |
US10061777B1 (en) | 2017-04-04 | 2018-08-28 | International Business Machines Corporation | Testing of lock managers in computing environments |
US10614040B2 (en) | 2017-04-04 | 2020-04-07 | International Business Machines Corporation | Testing of lock managers in computing environments |
US10614039B2 (en) | 2017-04-04 | 2020-04-07 | International Business Machines Corporation | Testing of lock managers in computing environments |
US11113261B2 (en) * | 2018-01-19 | 2021-09-07 | Sap Se | Data locking |
Also Published As
Publication number | Publication date |
---|---|
US7028300B2 (en) | 2006-04-11 |
US20030093457A1 (en) | 2003-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7028300B2 (en) | Method and system for managing resources in a distributed environment that has an associated object | |
US7487278B2 (en) | Locking multiple resources in a distributed environment | |
US20080307138A1 (en) | Method and system for locking resources in a distributed environment | |
JP6626459B2 (en) | Shared File Access-File Services Using REST Interface | |
US9807097B1 (en) | System for managing access to protected resources | |
US8396975B2 (en) | Managing requests for connection to a server | |
US8745707B2 (en) | Method and apparatus providing optimistic locking of shared computer resources | |
US8239954B2 (en) | Access control based on program properties | |
CA2587529C (en) | Infrastructure for performing file operations by a database server | |
US6925485B1 (en) | Proxy cache preloader | |
US6965893B1 (en) | Techniques for granting shared locks more efficiently | |
US7548918B2 (en) | Techniques for maintaining consistency for different requestors of files in a database management system | |
US8121061B2 (en) | Efficient file management through granular opportunistic locking | |
US20030101194A1 (en) | System and method for loading hierarchical data into relational database systems | |
US20050246694A1 (en) | Methods and apparatus for parsing extensible markup language (XML) data streams | |
JP2003501726A (en) | Server agent system | |
WO2005124554A2 (en) | Two-stage network device configuration process | |
CA2591436A1 (en) | Techniques for providing locks for file operations in a database management system | |
US9501513B2 (en) | Advanced concurrency management in enterprise service oriented architecture based integrated business processing of distributed application components | |
US6785714B1 (en) | System and method for employing slot level locking of a cache | |
US20030105871A1 (en) | Method and system for modifying lock properties in a distributed environment | |
US20090158047A1 (en) | High performance secure caching in the mid-tier | |
US20070192324A1 (en) | Method and device for advanced cache management in a user agent | |
US7716260B2 (en) | Techniques for transaction semantics for a database server performing file operations | |
US8635331B2 (en) | Distributed workflow framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001 Effective date: 20141014 |