US20080307138A1 - Method and system for locking resources in a distributed environment - Google Patents

Method and system for locking resources in a distributed environment Download PDF

Info

Publication number
US20080307138A1
US20080307138A1 US12/145,403 US14540308A US2008307138A1 US 20080307138 A1 US20080307138 A1 US 20080307138A1 US 14540308 A US14540308 A US 14540308A US 2008307138 A1 US2008307138 A1 US 2008307138A1
Authority
US
United States
Prior art keywords
lock
access
resource
type
dav
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
Application number
US12/145,403
Inventor
Jonathan S. Goldick
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US12/145,403 priority Critical patent/US20080307138A1/en
Publication of US20080307138A1 publication Critical patent/US20080307138A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/523Mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

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 locking methods that extend 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 practically any client computer system having Internet capabilities.
  • One portion of the Internet is known as the World Wide Web which is a 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 controlling when a resource is available for use by a client. 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 only provides two types of locks, an exclusive write lock and a shared write lock.
  • DAV does not support open sharing modes found in existing platforms, such as the Win32® platform. For example, if a client is not concerned with whether others edit or delete a resource it is using, but wants to prevent others from reading that resource while it is being used, the Win32® platform supports such a lock, but there is no method to support this lock function in DAV. Similarly, if a user wants to prevent others from deleting a resource, but is not concerned with whether others read a resource, the Win32® platform supports this function but there is no method to support this function in DAV.
  • Another drawback associated with the limited locking scheme relates to the fact that the locks are mandatory in the DAV protocol. That is, the DAV protocol cannot express advisory locks, which are well known in the UNIX platform. In the UNIX platform, cooperating applications can check for the presence of advisory locks that conflict with the attempted operation and honor that advisory lock, but there is no requirement to honor the lock. An application is therefore allowed to access a resource and edit that resource even when such access conflicts with an advisory lock. Although this scheme is prevalent in UNIX applications, there is no mechanism in DAV to create a lock that is advisory. Consequently, many Unix applications are incompatible with the DAV protocol.
  • the present invention solves these problems by creating and enabling the use of new shared lock types relating to shared read locks, shared write locks and shared delete locks.
  • the method and system creates and maintains lock properties for a resource or object in a distributed environment.
  • the lock properties provide other client computer systems limited availability to the locked resource. Limited availability relates to being able to only read, write or delete the resource, or any combination thereof. Additionally, these lock properties allow other client computer systems to simultaneously hold or share equivalent locks.
  • Other lock properties provided by the present invention relate to advisory or mandatory status for the lock. Advisory locks may be either honored or ignored by other client computer systems.
  • the present invention relates to a method of locking a resource wherein the method comprises the acts of receiving a request to access the resource, wherein the request originates from a requesting client computer system; creating a lock having a predetermined type, wherein the predetermined type provides availability to other client computer systems for predetermined purposes; providing a lock token related to the created lock to the requesting client computer system; and performing the requested access.
  • the request to access the resource may provide an indication as to the type of access and to the type of lock to be created during the access.
  • the method may comprise the act of determining whether the resource is locked by another client computer system. Further the act of creating a lock only occurs if no existing lock conflicts with the type of access requested or the type of lock requested.
  • the predetermined type of the lock provides other client computer systems access to the resource for the purpose of only reading, writing or deleting the resource or some combination thereof.
  • the lock may be advisory or mandatory.
  • Mandatory locks may not be ignored such that conflicting access requests are denied.
  • advisory locks may be honored or ignored, as determined by the requesting client system.
  • 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.
  • FIG. 4 is a flow diagram illustrating the functional components of accessing and locking a resource according to the present invention.
  • FIG. 5 is a flow diagram illustrating the functional components of accessing and locking a resource according to an alternative embodiment of the present invention.
  • FIG. 1 A distributed environment 10 incorporating aspects of the present invention is shown in FIG. 1 .
  • the environment 10 has at least one client computer system, such as client computer systems 12 , 14 and 16 that interact with at least one server computer system, such as server computer system 18 over a distributed network, such as the Internet 20 .
  • the client computer systems 12 , 14 and 16 request access to one or more server computer resources 22 . Additionally, there may be other client computer systems as indicated by ellipses 24 .
  • the resources 22 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 12 , 14 , 16 and 18 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 12 , 14 and 16 to access and edit computer resources 22 .
  • 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.
  • that resource may be locked such that the other client computer systems, such as systems 14 and 16 are unable to access the resource for any purpose.
  • one or the other computer systems 14 and 16 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 lock may be considered advisory, such that the other client computer systems 14 and 16 may decide whether to honor the lock or to ignore the lock and access the resource accordingly.
  • FIG. 2 illustrates an example of a suitable computing system environment 100 in which aspects of the present invention may be implemented as either a client computer system such as systems 12 , 14 or 16 or server computer system 18 .
  • the computing system environment 100 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 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 100 .
  • Computer Environment 100 incorporates a general purpose computing device in the form of a computer 102 .
  • Components of computer 102 may include, but are not limited to, a processing unit 104 , a system memory 106 , and a system bus 108 that couples various system components including the system memory to the processing unit 104 .
  • the system bus 108 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 102 typically includes a variety of computer readable media.
  • Computer readable media can be any available media that can be accessed by computer 102 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 both 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 102 .
  • 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 106 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 110 and random access memory (RAM) 112 .
  • ROM read only memory
  • RAM random access memory
  • FIG. 2 illustrates operating system 132 , application programs 134 , other program modules 136 , and program data 138 .
  • the computer 102 comprises a file system, which defines the format for the files of system 102 , and further defines version-specific property formats, as discussed below.
  • the computer 102 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
  • FIG. 2 illustrates a hard disk drive 116 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 118 that reads from or writes to a removable, nonvolatile magnetic disk 120 , and an optical disk drive 122 that reads from or writes to a removable, nonvolatile optical disk 124 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 116 is typically connected to the system bus 108 through a non-removable memory interface such as interface 126
  • magnetic disk drive 118 and optical disk drive 122 are typically connected to the system bus 108 by a memory interfaces, such as interfaces 128 and 130 , respectively.
  • hard disk drive 116 is illustrated as storing operating system 132 , application programs 134 , other program modules 136 , and program data 138 .
  • a user may enter commands and information into the computer 102 through input devices such as a keyboard 140 and pointing device 142 , 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 104 through an input interface 148 that is coupled to the system bus 108 .
  • a monitor 150 or other type of display device may also be connected to the system bus 108 via video adapter 152 .
  • computers may also include other peripheral output devices such as speakers and printer not shown.
  • the computer 102 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 154 .
  • the remote computer 154 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 102 .
  • the computer 102 When used in a LAN networking environment, the computer 102 is connected to the LAN through a network interface or adapter 162 .
  • the computer 102 When used in a WAN networking environment, the computer 102 typically includes a modem 164 or other means for establishing communications over the WAN, such as the Internet.
  • the modem 164 which may be internal or external, may be connected to the system bus 108 via the user input interface 148 , or other appropriate mechanism.
  • program modules depicted relative to the computer 102 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 200 in which the invention may be implemented.
  • the software operating environment 200 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 200 incorporates a Server System Resource Store 202 which defines the format and structure of data objects, such as data objects 204 and 206 .
  • the Server System Resource Store 202 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 202 .
  • Store 202 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 204 and 206 are data objects that represent actual file-type data.
  • the objects 204 and 206 may be accessed and/or modified by a user or another program module.
  • the Store 202 may comprise many other objects as indicated by ellipses 212 .
  • each data object 204 and 206 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 208 and 210 .
  • Lock objects 208 and 210 are associated with data objects 204 and 206 , respectively.
  • Lock objects comprise information related to whether its associated data object is locked and therefore inaccessible by other client computer systems.
  • lock objects 204 and 206 may provide other functions, such as providing control over the types of locking methods, and/or the servicing of lock token requests.
  • lock objects 204 and 206 may be incorporated into the data object itself as part of a header or some other meta-information portion of the data object.
  • the Environment 200 also has a services layer 214 , which relates to server functionality in servicing access requests for data objects 204 and 206 .
  • the services layer 214 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 214 also manages the availability of resources based on lock analysis as discussed in more detail below.
  • the services layer 214 receives requests over a distributed network environment, such as Internet 216 .
  • the requests are made by client computer applications, such as applications 218 and 220 .
  • application program 218 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 202 . In other embodiments however, the application program, i.e., program 218 may actually be part of the server system.
  • Applications 218 and 220 interact with the distributed network environment 216 through application program interfaces 222 and 224 , respectively.
  • the access requests may involve requests to move, copy, delete, read, execute or update a resource or object, such as object 204 or object 206 .
  • application programs 218 and 220 may cause the creation of lock objects 208 and 210 related to objects 204 and 206 respectively.
  • the services layer 214 may create the lock objects, and associate the objects with the data objects.
  • a lock object e.g., lock object 208
  • 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 214 actually performs the creation and management of the lock objects 208 and 210 .
  • the services layer 214 receives a request from a client application program, such as application 218 .
  • 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 226 to the client application program 218 and allows the requested access. If the services layer 214 determines that the application program may not access the requested data object in the requested manner, such as to read, write, or delete the resource, access is denied.
  • application program 220 attempts to access a data object that is locked by client application 218 , as evidenced by the lock token 226 .
  • the application 220 cannot access that data object until client application 218 frees the lock token 226 .
  • client application program 220 may still be able to access the locked data object to perform predetermined operations, such as to only read the data object, or to only delete the data object, etc.
  • the types of locks provided by the services layer, and used by the client application programs 218 and 220 may be either shared locks or exclusive locks. Exclusive locks do not allow any other clients or users to access the locked application for any reason, while shared locks allow other clients to access the application for limited purpose. As contemplated by the present invention, at least three new types of shared locks are added to the DAV protocol.
  • the first type of lock is referred to herein as a “write lock” wherein a write lock prevents any accesses to a resource for writing to the resource or deleting the resource.
  • Another lock type is referred to herein as a “nosharewrite lock” wherein a nosharewrite lock prevents any accesses to a resource for writing to the resource.
  • another client may still read the resource and delete the resource or properties of the resource.
  • the “nosharedelete lock” allows other clients to read or write to an otherwise locked application, but does not allow any delete operations. Yet another lock, the “noshareread lock” prevents others from reading a resource.
  • a “locktype” property is used, wherein the locktype property is an extension of the HTTP, as part of DAV.
  • the locktype property is a new type of DAV property and has 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 different locktype values or types include the write lock, the nosharewrite lock, the nosharedelete lock and the noshareread lock, or a combination thereof.
  • the document type definitions (DTD) shown in Table 1 may be implemented. Of course these samples could also be written as schemas.
  • a request is made that includes lock request information such that the lock request is coincident with the access request. Consequently, when a client system is requesting access to an object, or requesting to create and use an object, the client system includes requests for the type or types of locks to be created and enforced during its use of that data object.
  • the server computer system determines whether to provide the lock type requested. Once a lock type is granted, the server computer system enforces the lock type against other access requests.
  • FIG. 4 is a flow chart of the operational characteristics related to accessing and locking an object according to aspects of the present invention.
  • an object such as object 204 and/or 206 shown in FIG. 3
  • a Server System Resource Store such as store 202 .
  • 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 read, execution, or update access request related to an object.
  • the access attempt may be performed by a third party application, such as application 218 or 220 ( FIG. 3 ) or by the services layer 214 , 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.
  • the access request may be a write access request, meaning that the client application is requesting access to write to, or edit the resource or object.
  • the request also includes lock information such as read-share lock request, meaning that others may read the resource while the client is writing to the resource.
  • the request information may also include a request for a lock token to be returned to the client application, as described below.
  • determination act 404 determines whether the access may be allowed. Determining whether or not an access may be allowed involves an evaluation of existing lock information for that resource. That is, the server must determine whether the resource is locked by another client application program. Determining whether the resource is locked, 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 208 and 210 ( 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 the services layer 214 . Yet other embodiments may incorporate other means of providing information related to whether an object is locked and, if so, the type of lock.
  • determination act 402 determines that the requested resource may not be accessed, then access is denied at operation 406 and flow ends at end operation 408 .
  • a message may be sent to the requesting client application for the purposes of informing the client that the access was denied and for what reason, e.g., that the object is locked by another client application. Additionally, the returned message may also indicate the type of lock that is presently being enforced for that object, in case the client wishes to attempt another type of access.
  • Create lock operation 410 performs the creation and/or association of a 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.
  • the lock object generated by operation 410 may then be evaluated during other access requests until the lock object is removed or invalidated.
  • return token operation 412 returns a lock token to the client application that requested access to the object.
  • Return token operation 412 essentially provides the client application information related to the newly created lock object. Additionally, in an embodiment of the invention, this lock token may also include specific, predetermined key information related to the lock object. The key information may then be used by the client application at a later time to gain access to the locked object.
  • perform access operation 414 performs the requested access, i.e., the access requested at operation 402 .
  • the client application may then perform the type of access, e.g., read, write, execute, delete, etc. on the resource that has been requested.
  • flow 400 ends at end operation 408 .
  • the DAV protocol is extended to incorporate “advisory locks.”
  • An advisory lock may or may not be honored by a client application 218 or 220 or the services layer 214 . Instead, the requesting application may inquire as to the existence of an advisory lock and then determine whether to honor that lock.
  • the advisory status may be combined with any type of lock, such as the nosharewrite, noshareread and nosharedelete lock types described above.
  • the implementation of advisory locks relates to adding a new lock enforcement rule, e.g., by creating a “lockenforcementrule” property to the lockinfo XML element defined in DAV.
  • the definitions of the lockinfo, lockentry, and activelock XML elements are extended to support this new lock property.
  • the DTD definition of lockinfo and activelock are updated as well.
  • the new DTD definitions are shown in Table 2.
  • ⁇ !ELEMENT lockenforcementrule (mandatory
  • FIG. 5 is a flow chart of the operational characteristics related to accessing an object according to aspects of the invention related to the use of advisory locks.
  • an object such as object 204 and/or 206 shown in FIG. 3
  • a Server System Resource Store such as store 202 .
  • any attempt to access that object initiates the flow 500 shown and described with respect to FIG. 5 .
  • 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 218 or 220 ( FIG. 3 ) or by the services layer 214 , 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, a request for a lock token, etc. Additionally, in this particular case, the request may provide an indication whether advisory locks should be recognized, i.e., honored. In an embodiment of the invention, the request may explicitly indicate to not recognize advisory locks, or the request may simply provide no indication as to how advisory locks should be handled. In such a case, no indication relates to a request that advisory locks should not be recognized.
  • 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.
  • flow 500 branches NO to create lock object operation 506 .
  • Create lock object operation 506 creates a lock object and associates the lock object with the requested resource. Operation 506 is similar in function to create lock object operation 410 described above in conjunction with FIG. 4 .
  • return token operation 508 returns a lock token to the client application that requested access to the object. Return token operation 508 is similar to return lock token operation 412 described above in conjunction with FIG. 4 .
  • the request received at operation 502 does not request that a new lock be created and in such a case, operations 506 and 508 may be omitted. Additionally, in other embodiments, a lock token is not requested and therefore operation 508 is omitted.
  • test act 514 tests the lock to determine whether the lock is an advisory lock or whether the lock is mandatory. Testing whether the object is advisory relates to checking the property named lockenforcementrule. If this property is set to mandatory, then flow branches NO to deny access operation 516 , which denies access to the requested resource and flow 500 ends at operation 512 .
  • Request evaluation act 518 evaluates the request received at operation 502 to determine whether the request provides an indication as to whether the advisory lock should be recognized. That is, in this embodiment, the initial access request incorporates a flag or some other data that indicates that advisory locks should be recognized and therefore preventing access to the requested resource.
  • a request may be from a certain type of application, such as a UNIX application and that, by itself, may provide the indication that advisory locks should be recognized. Still other means may be employed to provide the necessary information to the server indicating whether to honor the advisory lock or to ignore the advisory lock. In an alternative embodiment, the server sends a query to the requesting application to determine whether the advisory lock should be honored.
  • request evaluation act 518 determines that the advisory lock should be recognized, then flow branches YES to deny access operation 516 .
  • Deny access operation 516 effectively denies the access request, and may also send a notice informing the client of the nature of the lock and the reason for the denial of access.
  • create operation creates a lock object, if one is requested as long as it does not conflict with the existing lock.
  • return lock token 508 returns a lock token to the application, and then perform access operation 510 performs the requested access.
  • the advisory locks are honored for particular types of requests, even if the request does not specify that advisory locks should be honored. For example, requests for exclusive locks are denied based on the fact that the object is in use by another client and an exclusive lock may not be given under those circumstances. Similarly, requests to upgrade or modify the lock type even though an advisory lock is used since the upgrade may be inconsistent with the existing lock scheme.
  • the above described system and method provides a significant advantage over prior methods of managing resource locks in a distributed environment.
  • the use of shared locks modes and advisory lock types advance the locking schemes and enables compatibility with existing, non-DAV related applications.
  • 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.

Abstract

A method and system that creates and maintains lock properties for a resource or object in a distributed environment. The lock properties provide other client computer systems limited availability to the locked resource. Limited availability relates to being able to only read, write or delete the resource, or any combination thereof. Additionally, these lock properties allow other client computer systems to simultaneously hold or share equivalent locks. Other lock properties relate to advisory or mandatory status for the lock. Advisory locks may be honored or ignored by other client computer systems.

Description

    CROSS-REFERENCE TO RELATED APPLICATION
  • This application is a continuation of prior U.S. patent application Ser. No. 09/992,644, entitled “Method and System for Locking Resources in a Distributed Environment,” filed Nov. 13, 2001, which is hereby incorporated herein by reference in its entirety.
  • TECHNICAL FIELD
  • 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 locking methods that extend the WebDAV protocol.
  • BACKGROUND OF THE INVENTION
  • 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 practically any client computer system having Internet capabilities. One portion of the Internet is known as the World Wide Web which is a 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 controlling when a resource is available for use by a client. 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 only provides two types of locks, an exclusive write lock and a shared write lock.
  • Although the exclusive and shared write locks are helpful in preventing the lost update problem, DAV does not support open sharing modes found in existing platforms, such as the Win32® platform. For example, if a client is not concerned with whether others edit or delete a resource it is using, but wants to prevent others from reading that resource while it is being used, the Win32® platform supports such a lock, but there is no method to support this lock function in DAV. Similarly, if a user wants to prevent others from deleting a resource, but is not concerned with whether others read a resource, the Win32® platform supports this function but there is no method to support this function in DAV.
  • The inability to provide these types of sharing procedures raises significant compatibility issues since many existing applications, such as word processing applications, utilize these open sharing modes. Consequently, when those applications are used over the Internet in combination with the DAV protocol, the open sharing modes are not supported. Therefore, much of the functionality is not available and may even cause errors to occur when attempting to use these unsupported methods.
  • Another drawback associated with the limited locking scheme relates to the fact that the locks are mandatory in the DAV protocol. That is, the DAV protocol cannot express advisory locks, which are well known in the UNIX platform. In the UNIX platform, cooperating applications can check for the presence of advisory locks that conflict with the attempted operation and honor that advisory lock, but there is no requirement to honor the lock. An application is therefore allowed to access a resource and edit that resource even when such access conflicts with an advisory lock. Although this scheme is prevalent in UNIX applications, there is no mechanism in DAV to create a lock that is advisory. Consequently, many Unix applications are incompatible with the DAV protocol.
  • It is with respect to these and other considerations that the present invention has been made.
  • SUMMARY OF THE INVENTION
  • The present invention solves these problems by creating and enabling the use of new shared lock types relating to shared read locks, shared write locks and shared delete locks. The method and system creates and maintains lock properties for a resource or object in a distributed environment. The lock properties provide other client computer systems limited availability to the locked resource. Limited availability relates to being able to only read, write or delete the resource, or any combination thereof. Additionally, these lock properties allow other client computer systems to simultaneously hold or share equivalent locks. Other lock properties provided by the present invention relate to advisory or mandatory status for the lock. Advisory locks may be either honored or ignored by other client computer systems.
  • In accordance with certain aspects, the present invention relates to a method of locking a resource wherein the method comprises the acts of receiving a request to access the resource, wherein the request originates from a requesting client computer system; creating a lock having a predetermined type, wherein the predetermined type provides availability to other client computer systems for predetermined purposes; providing a lock token related to the created lock to the requesting client computer system; and performing the requested access.
  • Additionally, the request to access the resource may provide an indication as to the type of access and to the type of lock to be created during the access. In such a case, prior to the act of creating a lock, the method may comprise the act of determining whether the resource is locked by another client computer system. Further the act of creating a lock only occurs if no existing lock conflicts with the type of access requested or the type of lock requested. In accordance with other aspects, the predetermined type of the lock provides other client computer systems access to the resource for the purpose of only reading, writing or deleting the resource or some combination thereof.
  • In accordance with other aspects, the lock may be advisory or mandatory. Mandatory locks may not be ignored such that conflicting access requests are denied. On the other hand, advisory locks may be honored or ignored, as determined by the requesting client system.
  • 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.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • 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.
  • FIG. 4 is a flow diagram illustrating the functional components of accessing and locking a resource according to the present invention.
  • FIG. 5 is a flow diagram illustrating the functional components of accessing and locking a resource according to an alternative embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • A distributed environment 10 incorporating aspects of the present invention is shown in FIG. 1. The environment 10 has at least one client computer system, such as client computer systems 12, 14 and 16 that interact with at least one server computer system, such as server computer system 18 over a distributed network, such as the Internet 20. The client computer systems 12, 14 and 16 request access to one or more server computer resources 22. Additionally, there may be other client computer systems as indicated by ellipses 24. The resources 22 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 12, 14, 16 and 18 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 12, 14 and 16 to access and edit computer resources 22. 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 12, accesses one of the resources 22, that resource may be locked such that the other client computer systems, such as systems 14 and 16 are unable to access the resource for any purpose. In other embodiments, one or the other computer systems 14 and 16 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. In yet another embodiment, the lock may be considered advisory, such that the other client computer systems 14 and 16 may decide whether to honor the lock or to ignore the lock and access the resource accordingly.
  • FIG. 2 illustrates an example of a suitable computing system environment 100 in which aspects of the present invention may be implemented as either a client computer system such as systems 12, 14 or 16 or server computer system 18. The computing system environment 100 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 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 100.
  • Environment 100 incorporates a general purpose computing device in the form of a computer 102. Components of computer 102 may include, but are not limited to, a processing unit 104, a system memory 106, and a system bus 108 that couples various system components including the system memory to the processing unit 104. The system bus 108 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 102 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 102 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 both 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 102. 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 106 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 110 and random access memory (RAM) 112. A basic input/output system 114 (BIOS), containing the basic routines that help to transfer information between elements within computer 102, such as during start-up, is typically stored in ROM 110, while RAM 112 typically contains files and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 104. By way of example, and not limitation, FIG. 2 illustrates operating system 132, application programs 134, other program modules 136, and program data 138. Additionally, the computer 102 comprises a file system, which defines the format for the files of system 102, and further defines version-specific property formats, as discussed below.
  • The computer 102 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, FIG. 2 illustrates a hard disk drive 116 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 118 that reads from or writes to a removable, nonvolatile magnetic disk 120, and an optical disk drive 122 that reads from or writes to a removable, nonvolatile optical disk 124 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. The hard disk drive 116 is typically connected to the system bus 108 through a non-removable memory interface such as interface 126, and magnetic disk drive 118 and optical disk drive 122 are typically connected to the system bus 108 by a memory interfaces, such as interfaces 128 and 130, respectively.
  • 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 the computer 102. In FIG. 2, for example, hard disk drive 116 is illustrated as storing operating system 132, application programs 134, other program modules 136, and program data 138.
  • A user may enter commands and information into the computer 102 through input devices such as a keyboard 140 and pointing device 142, 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 the processing unit 104 through an input interface 148 that is coupled to the system bus 108. A monitor 150 or other type of display device may also be connected to the system bus 108 via video adapter 152. In addition to the monitor, computers may also include other peripheral output devices such as speakers and printer not shown.
  • The computer 102 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 154. The remote computer 154 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 102.
  • When used in a LAN networking environment, the computer 102 is connected to the LAN through a network interface or adapter 162. When used in a WAN networking environment, the computer 102 typically includes a modem 164 or other means for establishing communications over the WAN, such as the Internet. The modem 164, which may be internal or external, may be connected to the system bus 108 via the user input interface 148, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 102, 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 100 shown in FIG. 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 a software operating environment 200 in which the invention may be implemented. The software operating environment 200 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 200 incorporates a Server System Resource Store 202 which defines the format and structure of data objects, such as data objects 204 and 206. Typically, the Server System Resource Store 202 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 202. In an embodiment, Store 202 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 204 and 206 are data objects that represent actual file-type data. The objects 204 and 206 may be accessed and/or modified by a user or another program module. Of course, the Store 202 may comprise many other objects as indicated by ellipses 212.
  • Typically, each data object 204 and 206 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 208 and 210. Lock objects 208 and 210 are associated with data objects 204 and 206, respectively. Lock objects comprise information related to whether its associated data object is locked and therefore inaccessible by other client computer systems. Additionally, lock objects 204 and 206 may provide other functions, such as providing control over the types of locking methods, and/or the servicing of lock token requests. Although shown as separate objects, lock objects 204 and 206 may be incorporated into the data object itself as part of a header or some other meta-information portion of the data object.
  • Environment 200 also has a services layer 214, which relates to server functionality in servicing access requests for data objects 204 and 206. The services layer 214 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 214 also manages the availability of resources based on lock analysis as discussed in more detail below.
  • The services layer 214 receives requests over a distributed network environment, such as Internet 216. The requests are made by client computer applications, such as applications 218 and 220. In one embodiment, application program 218 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 202. In other embodiments however, the application program, i.e., program 218 may actually be part of the server system. Applications 218 and 220 interact with the distributed network environment 216 through application program interfaces 222 and 224, respectively. The access requests may involve requests to move, copy, delete, read, execute or update a resource or object, such as object 204 or object 206.
  • With respect to the lock objects 208 and 210, in an embodiment of the invention, application programs 218 and 220 may cause the creation of lock objects 208 and 210 related to objects 204 and 206 respectively. Alternatively, the services layer 214 may create the lock objects, and associate the objects with the data objects. Once a lock object, e.g., lock object 208, 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 214 actually performs the creation and management of the lock objects 208 and 210. As described in more detail below, the services layer 214 receives a request from a client application program, such as application 218. 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 226 to the client application program 218 and allows the requested access. If the services layer 214 determines that the application program may not access the requested data object in the requested manner, such as to read, write, or delete the resource, access is denied.
  • To further this example, assume application program 220 attempts to access a data object that is locked by client application 218, as evidenced by the lock token 226. In such a case the application 220 cannot access that data object until client application 218 frees the lock token 226. However, as discussed in more detail below, depending on the type of lock created by client application 218, client application program 220 may still be able to access the locked data object to perform predetermined operations, such as to only read the data object, or to only delete the data object, etc.
  • The types of locks provided by the services layer, and used by the client application programs 218 and 220 may be either shared locks or exclusive locks. Exclusive locks do not allow any other clients or users to access the locked application for any reason, while shared locks allow other clients to access the application for limited purpose. As contemplated by the present invention, at least three new types of shared locks are added to the DAV protocol.
  • The first type of lock is referred to herein as a “write lock” wherein a write lock prevents any accesses to a resource for writing to the resource or deleting the resource. Another lock type is referred to herein as a “nosharewrite lock” wherein a nosharewrite lock prevents any accesses to a resource for writing to the resource. However, another client may still read the resource and delete the resource or properties of the resource.
  • Another type of lock, the “nosharedelete lock” allows other clients to read or write to an otherwise locked application, but does not allow any delete operations. Yet another lock, the “noshareread lock” prevents others from reading a resource.
  • In an embodiment of the invention, a “locktype” property is used, wherein the locktype property is an extension of the HTTP, as part of DAV. In essence, the locktype property is a new type of DAV property and has 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. Additionally, the different locktype values or types include the write lock, the nosharewrite lock, the nosharedelete lock and the noshareread lock, or a combination thereof. In order to define the new locktype property in DAV (and the lock types) the document type definitions (DTD) shown in Table 1 may be implemented. Of course these samples could also be written as schemas.
  • TABLE 1
    Sample DTD Definitions For LockTypes:
    1 Name: locktype
    Namespace: DAV:
    Purpose: Specifies the access type of a lock.
    <!ELEMENT locktype (write | nosharewrite | nosharedelete |
    noshareread)+>
    2 Name: write
    Namespace: DAV:
    Purpose: Specifies a write lock.
    Description: The lock conflicts with all updates, including both
    writes and deletes. It is equivalent to (nosharewrite,
    nosharedelete). An exclusive write lock will conflict with
    shared or exclusive write, nosharewrite, or nosharedelete locks.
    <!ELEMENT write EMPTY>
    3 Name: nosharewrite
    Namespace: DAV:
    Purpose: Specifies a lock that conflicts with write operations.
    Description: Holding this lock prevents others from adding new
    properties or updating existing properties of a resource. The lock
    conflicts with all write operations. This includes adding new
    properties or resources and updating existing ones. It does not
    conflict with deleting properties or resources. An exclusive
    nosharewrite lock will conflict with a shared or exclusive
    write or nosharewrite lock.
    <!ELEMENT nosharewrite EMPTY>
    4 Name: nosharedelete
    Namespace: DAV:
    Purpose: Specifies a lock that conflicts with delete operations.
    Description: Holding this lock prevents others from deleting a
    resource or its properties. The lock conflicts with all
    operations that delete resources or properties. An exclusive
    nosharedelete lock will conflict with a shared or exclusive
    write or nosharedelete lock.
    <!ELEMENT nosharewrite EMPTY>
    5 Name: noshareread
    Namespace: DAV:
    Purpose: Specifies a lock that conflicts with read operations.
    Description: Holding this lock prevents others from reading a
    resource or its properties. Note that the use of this locktype
    will require read methods including GET and PROPFIND to use the
    conditional If format to specify the opaquelocktoken. The lock
    conflicts with all read operations. An exclusive noshareread
    lock will conflict with a shared or exclusive noshareread lock.
    <!ELEMENT noshareread EMPTY>
  • As shown in Table 1, three new values are added to the locktype XML element defined in DAV. These values will enable the use of shared locking methods for write, read and delete. Additionally, these values will enable better support of applications written to other programming models or platforms that use similar sharing methods, such as the Win32® programming model.
  • In order to create or get one of these lock type values in connection with an object, a request is made that includes lock request information such that the lock request is coincident with the access request. Consequently, when a client system is requesting access to an object, or requesting to create and use an object, the client system includes requests for the type or types of locks to be created and enforced during its use of that data object. The server computer system determines whether to provide the lock type requested. Once a lock type is granted, the server computer system enforces the lock type against other access requests.
  • FIG. 4 is a flow chart of the operational characteristics related to accessing and locking an object according to aspects of the present invention. Prior to the beginning of flow 400 an object, such as object 204 and/or 206 shown in FIG. 3, may already exist within a Server System Resource Store, such as store 202. In such an embodiment, once the object has been created, then any later attempt to access that object initiates the flow 400 shown and described with respect to FIG. 4. In an alternative embodiment however, e.g., such as when the DAV protocol is used, the object may not exist prior to flow 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 receive operation 402, wherein the receive operation 402 relates to the receipt, by the server system of any read, execution, or update access request related to an object. The access attempt may be performed by a third party application, such as application 218 or 220 (FIG. 3) or by the services layer 214, 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. For example, the access request may be a write access request, meaning that the client application is requesting access to write to, or edit the resource or object. The request also includes lock information such as read-share lock request, meaning that others may read the resource while the client is writing to the resource. Moreover, the request information may also include a request for a lock token to be returned to the client application, as described below.
  • Following receipt operation 402, determination act 404 determines whether the access may be allowed. Determining whether or not an access may be allowed involves an evaluation of existing lock information for that resource. That is, the server must determine whether the resource is locked by another client application program. Determining whether the resource is locked, 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 208 and 210 (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 the services layer 214. 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 402 determines that the requested resource may not be accessed, then access is denied at operation 406 and flow ends at end operation 408. In such a case, a message may be sent to the requesting client application for the purposes of informing the client that the access was denied and for what reason, e.g., that the object is locked by another client application. Additionally, the returned message may also indicate the type of lock that is presently being enforced for that object, in case the client wishes to attempt another type of access.
  • If determination act 404 determines that the requested resource may be accessed, flow branches YES to create lock operation 410. Create lock operation 410 performs the creation and/or association of a 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. The lock object generated by operation 410 may then be evaluated during other access requests until the lock object is removed or invalidated.
  • Following the creation of the lock operation 410, return token operation 412 returns a lock token to the client application that requested access to the object. Return token operation 412 essentially provides the client application information related to the newly created lock object. Additionally, in an embodiment of the invention, this lock token may also include specific, predetermined key information related to the lock object. The key information may then be used by the client application at a later time to gain access to the locked object.
  • Upon returning the lock token to the application, perform access operation 414 performs the requested access, i.e., the access requested at operation 402. The client application may then perform the type of access, e.g., read, write, execute, delete, etc. on the resource that has been requested. Following performance of the access, flow 400 ends at end operation 408.
  • In accordance with other aspects of the present invention, the DAV protocol is extended to incorporate “advisory locks.” An advisory lock may or may not be honored by a client application 218 or 220 or the services layer 214. Instead, the requesting application may inquire as to the existence of an advisory lock and then determine whether to honor that lock. The advisory status may be combined with any type of lock, such as the nosharewrite, noshareread and nosharedelete lock types described above.
  • In one embodiment the implementation of advisory locks relates to adding a new lock enforcement rule, e.g., by creating a “lockenforcementrule” property to the lockinfo XML element defined in DAV. The definitions of the lockinfo, lockentry, and activelock XML elements are extended to support this new lock property. The DTD definition of lockinfo and activelock are updated as well. The new DTD definitions are shown in Table 2.
  • TABLE 2
    Sample DTD Definitions To Enable Advisory Locks:
    1 Name: lockentry
    Namespace: DAV:
    Purpose: Defines the types of locks that can be used with the
    resource.
    <!ELEMENT lockentry (lockscope, locktype, lockenforcementrule?)>
    2 Name: lockenforcementrule
    Namespace: DAV:
    Purpose: Specifies the whether the lock should prevent conflicting
    operations or not.
    Description: A mandatory enforcement rule will cause conflicting
    operations to be failed and an advisory enforcement rule will only
    fail conflicting LOCK or UPGRADELOCK operations. The default
    value is mandatory.
    <!ELEMENT lockenforcementrule (mandatory | advisory)>
    3 Name: mandatory
    Namespace: DAV:
    Purpose: Specifies that operations that conflict with the lock
    should be failed.
    Description: The server should fail any operations that conflict
    with this lock. For example, a PROPPATCH command will be failed
    if the resource is nosharewrite or write locked and the caller
    does not own the lock.
    <!ELEMENT mandatory EMPTY>
    4 Name: advisory
    Namespace: DAV:
    Purpose: Specifies that only LOCK and UPGRADELOCK operations
    that conflict with the lock should be failed. Other operations
    will be allowed to proceed.
    Description: The server should only fail LOCK and
    UPGRADELOCK operations that conflict with this lock. For
    example, a PROPPATCH command will be allowed to proceed if the
    resource is nosharewrite or write locked and the caller does not
    own the lock. However, an attempt to acquire an exclusive
    nosharedelete lock will fail if it is already held.
    <!ELEMENT advisory EMPTY>
  • FIG. 5 is a flow chart of the operational characteristics related to accessing an object according to aspects of the invention related to the use of advisory locks. As described above with respect to FIG. 4, prior to the beginning of flow 500 an object, such as object 204 and/or 206 shown in FIG. 3, exist within a Server System Resource Store, such as store 202. In this particular embodiment of the invention, once an object has been created, then any attempt to access that object initiates the flow 500 shown and described with respect to FIG. 5.
  • 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 218 or 220 (FIG. 3) or by the services layer 214, 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, a request for a lock token, etc. Additionally, in this particular case, the request may provide an indication whether advisory locks should be recognized, i.e., honored. In an embodiment of the invention, the request may explicitly indicate to not recognize advisory locks, or the request may simply provide no indication as to how advisory locks should be handled. In such a case, no indication relates to a request that advisory locks should not be recognized.
  • 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.
  • 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 create lock object operation 506. Create lock object operation 506 creates a lock object and associates the lock object with the requested resource. Operation 506 is similar in function to create lock object operation 410 described above in conjunction with FIG. 4. Following creation of lock object operation 506, return token operation 508 returns a lock token to the client application that requested access to the object. Return token operation 508 is similar to return lock token operation 412 described above in conjunction with FIG. 4.
  • In alternative embodiments, the request received at operation 502 does not request that a new lock be created and in such a case, operations 506 and 508 may be omitted. Additionally, in other embodiments, a lock token is not requested and therefore operation 508 is omitted.
  • Once it has been determined that no conflicting locks are associated with the requested resource, and any requested locks have been created, then perform access operation 510 performs the requested access. Upon performance of the requested access, flow 500 ends at end operation 512.
  • 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 test act 514. Test act 514 tests the lock to determine whether the lock is an advisory lock or whether the lock is mandatory. Testing whether the object is advisory relates to checking the property named lockenforcementrule. If this property is set to mandatory, then flow branches NO to deny access operation 516, which denies access to the requested resource and flow 500 ends at operation 512.
  • However, if lockenforcementrule property is set to advisory, then flow 500 branches YES to request evaluation act 518. Request evaluation act 518 evaluates the request received at operation 502 to determine whether the request provides an indication as to whether the advisory lock should be recognized. That is, in this embodiment, the initial access request incorporates a flag or some other data that indicates that advisory locks should be recognized and therefore preventing access to the requested resource. A request may be from a certain type of application, such as a UNIX application and that, by itself, may provide the indication that advisory locks should be recognized. Still other means may be employed to provide the necessary information to the server indicating whether to honor the advisory lock or to ignore the advisory lock. In an alternative embodiment, the server sends a query to the requesting application to determine whether the advisory lock should be honored.
  • If request evaluation act 518 determines that the advisory lock should be recognized, then flow branches YES to deny access operation 516. Deny access operation 516 effectively denies the access request, and may also send a notice informing the client of the nature of the lock and the reason for the denial of access.
  • On the other hand, if the request evaluation act 518 determines that the advisory lock should not be recognized, then flow branches NO to create operation 506. As discussed above, create operation creates a lock object, if one is requested as long as it does not conflict with the existing lock. Following creation of the lock object, return lock token 508 returns a lock token to the application, and then perform access operation 510 performs the requested access.
  • In an embodiment of the invention, however, the advisory locks are honored for particular types of requests, even if the request does not specify that advisory locks should be honored. For example, requests for exclusive locks are denied based on the fact that the object is in use by another client and an exclusive lock may not be given under those circumstances. Similarly, requests to upgrade or modify the lock type even though an advisory lock is used since the upgrade may be inconsistent with the existing lock scheme.
  • The above described system and method provides a significant advantage over prior methods of managing resource locks in a distributed environment. In particular, the use of shared locks modes and advisory lock types advance the locking schemes and enables compatibility with existing, non-DAV related applications.
  • 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 (20)

1. A computer storage medium having stored thereon a locked resource accessed with a Distributed Authoring and Versioning (DAV) protocol message, wherein the DAV protocol is an extension of Hypertext Markup Language (HTTP), and wherein the locked resource comprises:
a data object to store object data; and
a lock object, wherein the lock object is associated with the data object, and wherein the lock object comprises information relating to a type of lock on the associated data object, and wherein the lock object further comprises a property that is of a noshare type.
2. A computer storage medium as defined in claim 1, wherein the property is a noshareread type.
3. A computer storage medium as defined in claim 1, wherein the property is a nosharedelete type.
4. A computer storage medium as defined in claim 1, wherein the property is a nosharewrite type.
5. A computer storage medium as defined in claim 1, wherein the lock object services a lock token request.
6. A computer storage medium as defined in claim 1, wherein a services layer processes an access request for the data object.
7. A method of locking a resource in a distributed environment communicating in a Distributed Authoring and Versioning (DAV) protocol, wherein the DAV protocol is an extension of Hypertext Markup Language (HTTP), the method comprising:
sending a request in the DAV protocol to access a resource, wherein the resource comprises a data object, and wherein the request originates from an application program;
processing the request;
causing the creation of a lock object having a predetermined type, wherein the predetermined type is one from the group consisting of a nosharewrite, a noshareread, and a nosharedelete;
receiving a lock token upon the creation of the lock object; and
accessing the resource.
8. A method as defined in claim 7, wherein the application program is a client application program operating on a client system.
9. A method as defined in claim 7, wherein the application program is part of a server system.
10. A method as defined in claim 7, wherein the application program causes the creation of the lock object.
11. A method as defined in claim 7, wherein a services layer creates the lock object and associates the lock object with the data object.
12. A method as defined in claim 7, wherein the act of processing the request comprises:
determining whether the resource is locked by another application program; and
determining the type of access requested.
13. A method as defined in claim 7, wherein the lock is advisory.
14. A method as defined in claim 7, wherein a plurality of application programs can cause the creation of a lock on the resource.
15. A system for creating and managing a lock object in a distributed environment communicating in a Distributed Authoring and Versioning (DAV) protocol, wherein the DAV protocol is an extension of Hypertext Markup Language (HTTP), the computer system comprising:
an application program, the application program operable to send a request in the DAV protocol to access a data object; and
a services layer, the services layer operable to determine a type of access requested for the data object and to determine if the data object is associated with the lock object, wherein the lock object comprises a locktype property.
16. A system as defined in claim 15, wherein the services layer is further operable to:
determine whether access may be given for the data object for the type of access requested;
if access may be given for the type of access requested, returning a lock token; and
if access may not be given for the type of access requested, denying access.
17. A system as defined in claim 15, wherein the locktype property is a nosharewrite lock.
18. A system as defined in claim 15, wherein the locktype property is a nosharedelete lock.
19. A system as defined in claim 15, wherein the locktype property is a noshareread lock.
20. A system as defined in claim 15, wherein the locktype property is an advisory lock.
US12/145,403 2001-11-13 2008-06-24 Method and system for locking resources in a distributed environment Abandoned US20080307138A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/145,403 US20080307138A1 (en) 2001-11-13 2008-06-24 Method and system for locking resources in a distributed environment

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/992,644 US7406519B2 (en) 2001-11-13 2001-11-13 Method and system for locking resources in a distributed environment
US12/145,403 US20080307138A1 (en) 2001-11-13 2008-06-24 Method and system for locking resources in a distributed environment

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/992,644 Continuation US7406519B2 (en) 2001-11-13 2001-11-13 Method and system for locking resources in a distributed environment

Publications (1)

Publication Number Publication Date
US20080307138A1 true US20080307138A1 (en) 2008-12-11

Family

ID=25538576

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/992,644 Expired - Fee Related US7406519B2 (en) 2001-11-13 2001-11-13 Method and system for locking resources in a distributed environment
US12/145,403 Abandoned US20080307138A1 (en) 2001-11-13 2008-06-24 Method and system for locking resources in a distributed environment

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/992,644 Expired - Fee Related US7406519B2 (en) 2001-11-13 2001-11-13 Method and system for locking resources in a distributed environment

Country Status (1)

Country Link
US (2) US7406519B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130054803A1 (en) * 2011-08-31 2013-02-28 Luke Jonathan Shepard Proxy Authentication
US10061777B1 (en) 2017-04-04 2018-08-28 International Business Machines Corporation Testing of lock managers in computing environments

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748470B2 (en) * 2001-11-13 2004-06-08 Microsoft Corporation Method and system for locking multiple 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
US20030105871A1 (en) * 2001-11-13 2003-06-05 Microsoft Corporation, Method and system for modifying lock properties in a distributed environment
US7406519B2 (en) * 2001-11-13 2008-07-29 Microsoft Corporation Method and system for locking resources in a distributed environment
US7418500B1 (en) 2002-03-25 2008-08-26 Network Appliance, Inc. Mechanism for controlled sharing of files in a clustered application environment
US8375113B2 (en) * 2002-07-11 2013-02-12 Oracle International Corporation Employing wrapper profiles
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US8234089B2 (en) * 2002-11-07 2012-07-31 National Instruments Corporation Auto-scheduling of tests
US20040117372A1 (en) * 2002-12-17 2004-06-17 Bulent Kasman System and method for controlling access to system resources
US7739385B1 (en) * 2003-06-16 2010-06-15 Cisco Technology, Inc. Explicit locking of resources in devices accessible on a network
US8756704B2 (en) * 2008-12-15 2014-06-17 International Business Machines Corporation User impersonation and authentication
US20110009813A1 (en) * 2009-07-09 2011-01-13 Medtronic Minimed, Inc. Panning a display of a portable medical device
US9015136B2 (en) 2010-01-22 2015-04-21 Microsoft Technology Licensing, Llc Storing temporary state data in separate containers
US8776204B2 (en) * 2010-03-12 2014-07-08 Alcatel Lucent Secure dynamic authority delegation
US9256600B2 (en) * 2012-04-13 2016-02-09 D2L Corporation Method and system for electronic content locking
WO2014101108A1 (en) * 2012-12-28 2014-07-03 华为技术有限公司 Caching method for distributed storage system, node and computer readable medium
US9733664B1 (en) * 2013-03-14 2017-08-15 Gamesys Ltd. Method for expiring fault-tolerant timers using distributed locks
US10839289B2 (en) 2016-04-28 2020-11-17 International Business Machines Corporation Neural network processing with von-Neumann cores
US10585818B2 (en) 2017-04-05 2020-03-10 International Business Machines Corporation Low overhead exclusive control for shared memory objects
CN111400324B (en) * 2019-11-08 2023-05-02 杭州海康威视系统技术有限公司 Method, device and server for locking object in cloud storage
CN111163140A (en) * 2019-12-20 2020-05-15 深圳市中农易讯信息技术有限公司 Method, apparatus and computer readable storage medium for resource acquisition and allocation
CN113285975A (en) * 2021-03-30 2021-08-20 紫光云技术有限公司 High-concurrency resource detection method

Citations (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US631563A (en) * 1899-01-10 1899-08-22 Joseph Duffy Organzine-spinner.
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
US5862906A (en) * 1994-11-17 1999-01-26 Von Wedel; Karl Grate plate arrangement
US5933825A (en) * 1997-07-21 1999-08-03 Apple Computer, Inc. Arbitrating concurrent access to file system objects
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
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
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
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
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
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
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
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
US6625598B1 (en) * 2000-10-25 2003-09-23 Mpc Computers, Llc Data verification system and technique
US6625701B1 (en) * 1999-11-09 2003-09-23 International Business Machines Corporation Extended cache coherency protocol with a modified store instruction lock release indicator
US6671773B2 (en) * 2000-12-07 2003-12-30 Spinnaker Networks, Llc Method and system for responding to file system requests
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
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
US20040255048A1 (en) * 2001-08-01 2004-12-16 Etai Lev Ran Virtual file-sharing network
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
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

Family Cites Families (5)

* Cited by examiner, † Cited by third party
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
US6173442B1 (en) 1999-02-05 2001-01-09 Sun Microsystems, Inc. Busy-wait-free synchronization
GB2350039B (en) 1999-03-17 2004-06-23 Adder Tech Ltd Computer signal transmission system

Patent Citations (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US631563A (en) * 1899-01-10 1899-08-22 Joseph Duffy Organzine-spinner.
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
US5862906A (en) * 1994-11-17 1999-01-26 Von Wedel; Karl Grate plate arrangement
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
US5724578A (en) * 1994-12-07 1998-03-03 Fujitsu Limited File managing system for managing files shared with a plurality of users
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
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
US6618744B1 (en) * 1996-06-24 2003-09-09 Oracle Corporation Efficient lock state transitions in a distributed system
US5862376A (en) * 1996-06-24 1999-01-19 Sun Microsystems, Inc. System and method for space and time efficient object locking
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
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
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
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
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
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
US6629127B1 (en) * 1999-07-26 2003-09-30 Microsoft Corporation Methods and systems for processing HTTP requests
US20030167317A1 (en) * 1999-07-26 2003-09-04 Deen Brian J. 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
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
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
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
US6529905B1 (en) * 2000-01-11 2003-03-04 Frontline Solutions, Inc. Method and system for allowing multiple users to edit a hierarchical data structure
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
US6704767B1 (en) * 2000-09-26 2004-03-09 Oracle International Corporation Using distributed information about lock conversion requests to efficiently manage lock state transitions
US6625598B1 (en) * 2000-10-25 2003-09-23 Mpc Computers, Llc Data verification system and technique
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
US6671773B2 (en) * 2000-12-07 2003-12-30 Spinnaker Networks, Llc Method and system for responding to file system requests
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
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
US7139811B2 (en) * 2001-08-01 2006-11-21 Actona Technologies Ltd. Double-proxy remote data access system
US20040255048A1 (en) * 2001-08-01 2004-12-16 Etai Lev Ran Virtual file-sharing network
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
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
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
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
US20060136926A1 (en) * 2001-11-13 2006-06-22 Microsoft Corporation Allocating locks in a distributed environment
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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130054803A1 (en) * 2011-08-31 2013-02-28 Luke Jonathan Shepard Proxy Authentication
US9635028B2 (en) * 2011-08-31 2017-04-25 Facebook, Inc. Proxy authentication
US10182052B2 (en) * 2011-08-31 2019-01-15 Facebook, Inc. Proxy authentication
US10061777B1 (en) 2017-04-04 2018-08-28 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
US10614040B2 (en) 2017-04-04 2020-04-07 International Business Machines Corporation Testing of lock managers in computing environments

Also Published As

Publication number Publication date
US7406519B2 (en) 2008-07-29
US20030093524A1 (en) 2003-05-15

Similar Documents

Publication Publication Date Title
US20080307138A1 (en) Method and system for locking resources in a distributed environment
US7487278B2 (en) Locking multiple resources in a distributed environment
US7028300B2 (en) Method and system for managing resources in a distributed environment that has an associated object
JP4348036B2 (en) Method and system for creating and maintaining version-specific properties in a file
US7302531B2 (en) System and methods for sharing configuration information with multiple processes via shared memory
US6629127B1 (en) Methods and systems for processing HTTP requests
JP4416366B2 (en) Method and system for creating and maintaining version-specific properties in a distributed environment
JP4613023B2 (en) Protocol-independent client-side caching system and method
US6449607B1 (en) Disk storage with modifiable data management function
US20030065796A1 (en) Enforcing uniform file-locking for diverse file-locking protocols
TW200408980A (en) System and method for managing file names for file system filter drivers
US6611848B1 (en) Methods for maintaining data and attribute coherency in instances of sharable files
US6687716B1 (en) File consistency protocols and methods for carrying out the protocols
US6633870B1 (en) Protocols for locking sharable files and methods for carrying out the protocols
US20030105871A1 (en) Method and system for modifying lock properties in a distributed environment
US7478116B2 (en) Mechanism to exchange primary data stream of a file
US20020055923A1 (en) Mandatory locking mechanisms for UNIX file systems
KR20010001364A (en) Multi-Protocol Unified File-locking

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

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