Title of Invention

A METHOD FOR UPDATING A DATA ITEM AND MAINTAIN CONCURRENCY

Abstract ABSTRACT 652/CHENP/2004 "A METHOD FOR UPDATING A DATA ITEM AND MAINTAIN CONCURRENCY" The present invention relates to a concurrency can be maintained in cluster caching when processing an update request on network server that is storing a local copy of data item, the request can be processed using the local copy of the data item. A predicated update request can be sent to a network database storing the data item, wherein the database can commit the update if the local copy is current with the data item. If the local copy is not current, the network server can request a new copy, process the request using the current copy, and try another predicated request, the process can continue until the update is committed to the database or aborted. Once committed, any other servers in the cluster can be notified that the data item has been updated. Those other servers can drop any local copy of the data item and can request an updated copy of the data item. FIGURE 1
Full Text

COPYRIGHT NOTICE
[0001] A portion of the disclosure of this patent document contains
material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document of the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
CLAIM OF PRIORITY
(00021 This application claims priority to the following applications
which, are incorporated herein by reference:
[0003] U.S. Provisional Patent Application entitled "CLUSTER
CACHING WITH CONCURRENCY CHECKING", Application No. 60/316,187, filed August 30, 2001.
[0004] U.S. Patent Application entitled"CLUSTERCACHINGWlTH
CONCURRENCY CHECKING", Application No. 10/211.713, filed August 2, 2002.
[0005] U.S. Provisional Patent Application entitled "METHOD FOR
MAINTAINING ACCOUNTCONSISTENCY,"Application No. 60/316.190, filed August 30,2001.
[0006] U.S. Patent Application entitled "METHOD FOR
MAINTAININGACCOUNTCONSISTENCY.-Application No. 10/211,712, filed August 2, 2002.
CROSS-REFERENCED CASE:
[0007] The following application is cross-referenced and
incorporated herein by reference:

[0008] U.S. Provisional Application No. 60/305,986 entitled "DATA
REPLICATION PROTOCOL," by Dean Bernard Jacobs, Recto Kramer, and Ana than Bala Srinvasan, filed July 16, 2001.
FIELD OF THE INVENTION
[0009] The invention relates generally to a system for storing data.
The invention relates more specifically to a system and method for caching data and checking concurrency.
BACKGROUND
[0010] When a data Item is stored in a single database or data store
that is accessible over a network, it is often the case that multiple servers or clients will require access to that data item. Traditionally, this requires data be read from the database each time the data item is accessed. Each read from the database is relatively resource intensive and may be relatively Inefficient.
[0011] One way of overcoming some of the efficiency and scalability
problems, associated with requiring a server or client to read from the database each time a data item is to be accessed, is to store the data item in cache memory. In this way, once a server or client has read a data item from the database it may simply store a copy of that item in a local cache. That local copy of the data item can then be used if future access is needed. This process may be appropriate and efficient for data items that never change, but problems arise when a data item is updated in the database.
[0012] If a data item stored in the database is updated, a copy of
that data item stored in a local cache on the network may be different from the item in the database, as it will not automatically receive the update. The problem intensifies when there are multiple local copies on different servers and/or clients on the network. Since each of these local copies is

created at a different time, there can be multiple versions of the data item
on the network. If a user tries to update or view the data item, the copy
accessed by the user may not be current and/or correct.
[0013] These problems with concurrency can have drastic
consequences, such as for example when a user accesses a data item showing a bank account balance. If the local copy of the bank account balance has not been updated to show a withdrawal, for example, the bank account balance shown to the user may in fact show an incorrectly large balance. This could lead the user to unknowingly overdraw the account. Further, a third party accessing the account balance, or a device such as an ATM, would have no way of knowing that the balance being shown is incorrect.
BRIEF SUMMARY
[0014] It is therefore desirable to develop a system and method for
caching data items and data objects that ensures the accuracy of the cached copy.
[0015] It is further desirable to develop a system and method to
ensure that any change to a copy of a data item is not allowed unless that
copy reflects the current state of the data item in the database.
[0016] Systems and methods in accordance with the present
invention provide a way to maintain concurrency in data item caching. A request to update an item is received by a network server, which can store a local copy of the data Item, such as in local cache. The network server can process the request using the local copy of the data item. A "conditional or "predicated" update request can be sent from the network server to a network database, whereby the database can update the data item if the data item contains the same version of the data as the local copy. The database may not update the data item if the data item is not the same version as the local copy.
[0017] If the copies do not contain the same version, the network
server can request a current copy of the data item, and can process the

update request using the new copy of the data item. The network sen/er can send another predicated update to the database. This process continues until the data item in the database is updated. Once the data item is updated, the other network servers, such as servers in a common cluster, can be notified that the data item has been updated. At this point, those network servers can drop any local copy of the data item and can request a new copy to store in local cache.
[0018] The modification to the network servers can be done by any
of several appropriate methods, such as by multicasting an update
message or version number to any other servers on the network. The
network servers can also connect to each other directly, such as by a point-
to-point protocol, or can heartbeat information to the other servers.
[0019] Other features, aspects, and objects of the invention can be
obtained from a review of the specification, the figures, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0020] Figure 1 Is a diagram of a the first part of an approach in
accordance with one embodiment of the present invention.
[0021] Figure 2 is a diagram of the first and second parts of an
approach in radiance with one embodiment of the present invention.
[0022] Figure 3 is a flowchart for an update process in accordance
with one embodiment of the present invent kin.
[0023] Figure 4 Is a flowchart for a process for updating a data item
when the local copy and original copy are out-of-sync, in avoidance with one embodiment of the present Invention.
[0024} Figure 5 is a flowchart for a process for updating network
servers on the network, in accordance with one embodiment of the present invention.
[0025] Figure 6 is a flowchart flora one phase process in accordance
with one embodiment of the present invention.

£0026] Figure 7 is a flowchart for a two phase process in accordance
with one embodiment of the present invention.
DETAILED DESCRIPTION
[0027] Systems In accordance with the present invention allow for
the caching of data while maintaining concurrency across a network, such
as a local area network , theme, or Internet. Such a system can
utilize one or both of a two-part approach to updating data items while
maintaining concurrency. Such systems can implement concurrent
caching through any software or hardware means known or used in the
computer arts or thereinafter developed. These systems can also utilize
any appropriate software applications, objects, languages, or executables,
such as may be designed to utilize, for example, Java, HTML, and XML.
[0028] In the first part of one such approach in accordance with the
present invention, a client or server on a network reads a data item from a database and stores a copy of the data item in a local cache. If the server or client wishes to update the data Item in the database, the update can be "conditioned" or "predicated" on whether the data item stored in local cache corresponds to the current version of the data item stored In the database. This approach maintains concurrency between the client/server desiring to update the data item and the database. The caching of data in this manner can also improve performance and scalability.
[0029] One example of a first part of an approach 100 is shown In
Figure 1. Here, a client 102 makes an update request 104 to a network server 106. The network server 106 in this example stores a copy of the data item 110 to be updated in a local cache 108. When the network server 106 receives the update request 104, the server 106 checks the local copy of the item 110 to see if the update may be processed. If the server 106 determines that the update may be processed using intonation in the local copy of the data item 110, the server 106 sends a predicated

update 112 to the database 114 storing the original copy of the data item
116. If the information in the original copy of the data item 116 is the same
as the information in the local copy 110, the update may be committed to
the database. If the intonation is different, the update is not committed.
The server 106 receives an update status message 118 from the database
114, Indicating whether the update was committed.
[0030] If the update was committed, the server can also commit the
update to the copy of the data item 110 in local cache 108. If the update was not committed, because the data items 110,116 were out of sync, the server can drop its copy of the data item 110 from local cache 108 and request a new copy from the database 114.
[0031] Once the server 106 has the new data item, it can again send
a predicated update 112 to the database 114. Alternatively, the server can
send a message to the client 102 asking whether or not to attempt an
update on the new data item. The server 106 can either abort the update,
or continue the process of trying a predicated update and getting new
copies of the data item as needed until the update is committed. Once the
update is committed or aborted, the server 106 can send an update
response 120 to the client, indicating the end result of the update attempt.
[0032] The second part of this approach occurs after a client/server
has updated a data item in the database. Since other clients and/or servers on the network may also have a copy of the data Item stored in local cache, the client/server making the update can contact the other servers on the network to let them know that the data item has been updated. The other clients and/or servers on the network can then update a copy of the data item stored in a local cache, request a current copy of the data item, or simply drop the local copy of the data item and request a copy from the database if and when it is needed. If a copy is later requested, the copy can be stored in local cache at that time.

[0033] Figure 2 shows the second stage of the approach 100
described with respect to Figure 1. In Figure 2, once server 106 updates the data item 116 In the database 114 and the copy of the data item 110 in local cache 108. server 106 sends update messages 128,130 to the other servers 122.124 in the cluster 126. These messages can take the form of point-to-point messages or multicast heartbeats, such as is described above.
[0034] For example, in a banking system, each server on the
banking system network can potentially store a copy of a user's bank account balance in local cache. Each local cache can include other information about a user account, such as account Information and transaction history. This information can be cached. In whole or in part, on each server on the network.
[0035] In such a system, a transaction may occur such as an ATM
.transaction. A server in communication with the ATM can store a cached copy of the account balance of the user initiating the transaction. If a user of the ATM wishes to withdraw $100 from a user account, for example, the server could read the balance from memory, determine whether the account contains sufficient funds for the transaction, and subtract the $100

from the account balance either before or after disbursing the funds.

10036] In order to prevent the user from overdrawing the account,
the server can first verify that the local copy of the user account balance is
current with the balance stored in the database. For example, if the
previous balance stored locally was $500, the server could send an update
message to the database such as "update balance = $400". which could
also include the current value of the account in local cache, and make the
update predicated on the fact that the current account balance in the
database is the same as the current balance of the account in local cache.
[0037] If the account balance stored In the database is not the same
as the balance In local cache, the server may roll back the update. Once
an update Is rolled back, the server can drop its copy in local cache, read

the account information from the database, then attempt the update again.
For example, if the local copy of the account balance said that the balance
was $500, and the database reflected a balance of $1000, the server
would roll back the $400 update attempt and try a predicated $900 update,
subtracting the $100 withdrawal from the current $1000 balance. This
second update can again be predicated on the fact that the account
balance has not changed since it was last read by the server. This process
continues until either the account balance is updated appropriately, or the
transaction is aborted due to insufficient funds, etc.
[0038] If a server succeeds in updating a data item In the database,
it can also update the copy In local cache, such that the local copy is current with the version of the data Item in the database. For a network In which multiple servers {or clients) can have a copy of the data item in a local cache, the server updating the data item can notify the other servers that the data item has been updated. This can include any or all other servers or clients on a network, in a domain, in a cluster, or in any other network grouping. This notification can be accomplished in any of a number of ways, such as by a point-to-point connection with each server/client, by multicasting, by a one-phase distribution method, by a two-phase distribution method, by heartbeat an update or a delta, or any other appropriate messaging technique.
[0039] It may be desirable that the sending of the notification is tott^
reliable in the face of failures and scalable, such that the process makes efficient use of the network. One simple approach is to have the server updating the data item ("updating server") individually contact each server or client on the network ("Newport server") and transfer a message over a point-to-point link, such as a TCP/IP connection. The message can tell these network servers that the data item has been updated, and that the network servers should drop any copy of this data item in local cache. This approach may lead to Inconsistent copies of the data If one or more of the

network servers are temporarily unreachable, or if the network servers encounter an error in processing the update.
[0040] Steps in a general process that can be used in accordance
with the present invention are shown in Figures 3-5. In the process 200 of Figure 3, an update request is received, such as from a client, to a network server storing a local copy of the data item to be updated 202. The update is processed by the network server using the local copy of the data item 204. A predicated update request is sent from the network server to the network database containing the original copy of the data item 206. If the original copy and local copy of the data item contain the same version of the data item, the update request is committed 208. If not, the predicated update request is aborted 210.
[0041] Figure 4 shows a process 300 that can be used if the
predicated update request is aborted. The network server can request a current copy of the data item 302. The network server can then process the update request using the current copy of the data Item 304. A predicated update request is again sent from the network server to the network database containing the original copy of the data item 306. If the original copy and current copy of the data item contain the same version of the data item, the update request is committed 308. If not, the predicated update request is again extorted 310 and the process 300 may be repeated until the update is committed.
[0042] Figure 5 shows a process 400 that may be used once the
update is committed. Any other servers on the network, such as servers in the scope of an update or servers in a common cluster or domain, are notified that the data item is being updated 402. Any server that is notified then drops any local copy of the data item being stored, such as in a local cache 404. Those servers may choose to request an updated copy of the data Item, either soon after dropping the local copy or upon receiving a subsequent request relating to that data item 406.

[0043] In the case of a two-phase commit, any other servers on the
network, such as in the scope of an update or in the sane cluster, can be notified that an item is being updated during the commit. For example, an update can first go through a prepare stage in which it is determined whether or not the update can be successfully committed. During this phase, or at least before the update is committed, any server that is notified of the update can veto the commit. By vetoing the commit, any preparation is rolled back and the update does not get written to the database. If the update successfully goes through a prepare phase, and does not get vetoed by a server, the update can get committed to the data item in the database.
[0044] The sending of the notification can also be sent by
multicasting the notification to the other servers/clients that might be caching a local copy of the data item. Multicasting in this Instance may comprise the updating server sending the notification once to the network/cluster/domain, which is then passed to the network servers/clients. In simple multicasting, the message is only sent once, such that a server that does not receive the update may fail to drop the outdated copy of the item. This can result in that server having to go through two or more iterations of predicated update attempts for that data item when processing a subsequent request.
[0045] The sending of the notification can also be sent through a
"heartbeat." A heartbeat in this approach is a periodic message, typically
multicast although other messaging means may be utilized, that is sent to
servers/clients that might be storing a local copy of the data item. An
updating server can continue to heartbeat the latest update(s) for a given
period of time, for a given number of heartbeats, until each server/client
responds it has received the heartbeat, or any other appropriate measure.
[0046] Each update to a data item can be packaged as an
incremental delta between versions. A protocol in accordance with the present invention may integrate two methods for the distribution of

updates, although other appropriate methods can be used accordingly. These distribution methods are refer-ed to as a one-phase method and a two-phase method, and provide a tradeoff between consistency and scalability. In a one-phase method, which can favor scalability, each of the network servers obtains and processes updates at its own pace. The network servers get updates from an updating server at different times, but commit to each update as soon as the update is received. One of the network servers can encounter an error in processing an update, but in the one-phase method this does not prevent the network servers from processing the update.
[0047] In a two-phase method in accordance with the present
Invention, which can favor consistency, the distribution is "atomic." In that
either all or none of the network servers successfully process the update.
There are separate phases, such as prepare and commit phases, which
can allow for a possibility of abort. In the prepare phase, the updating
server determines whether each of the network servers can take the
update. If all the network servers indicate that they can accept the update,
the new data is sent to the network servers to be committed in the commit
phase. If at least one of the network servers cannot take the update, the
update can be aborted, resulting in no commit. In this case, an updating
server is informed that it should roll back the prepare and nothing is
changed. Such a protocol in accordance with the present invention Is
reliable, as one of the network servers that is unreachable when an update
Is committed, in either method, eventually gets the update.
[0048] A system in accordance with the present Invention can also
ensure that a temporarily unavailable server eventually receives all updates. For example, a server may be temporarily isolated from the network, then come back Into the network without restarting. Since the server is not restarting, it normally would not check for updates. The server coming back into the network can be accounted for by having the server

check periodically for new updates, or by having an updating server check
periodically to see whether the network servers have received the updates.
[0049] In one embodiment, an updating server regularly sends
multicast "heartbeats" to the network servers, such as for a given period o
time or a given number of heartbeats. Since a multicast approach can be unreliable, it is possible for one of the network servers to miss arbitrary sequences of heartbeats. For this reason, heartbeats can contain a window of information about recent updates. Such information about previous updates can be used to reduce the amount of network traffic, as explained below. In an example such as an account balance, historical information may not be necessary, such that a heartbeat may simply contain the current balance.
[0050] The updating server can continue to periodically send a
multicast heartbeat containing the version number to the network servers.
This allows any server that was unavailable, or unable to receive and
process a delta, to determine that it is not on the current version of the data
item and request a delta or update at a later time, such as when the slave
comes back into the system. If the current value is contained in the
heartbeat, the server may simply commit the new value.
[0051] For an update In a one-phase method, these heartbeats can
cause each of the network servers to request a delta starting from that server's current version of the data item. Such a process is shown in the flowchart of Figure 6. In this basic process 500 a version number for the cun-ent data item on the updating server, or in the database, Is sent from the updating server to one of the other network servers 502. The network server determines whether it has been updated to the current version number 504. If the network server Is not on the current version, it requests that a delta be sent from the updating server containing the information needed to update the data item 506. When the delta is sent, the network server processes the delta in order to update to the current version 508.

The network server also updates its version number for the data Item to the current version number 510.
[0052] For an update in a two-phase method, the updating server
can begin with a prepare phase in which it pro-actrvety sends each of the
network servers a delta from the immediately-previous version. Such a
process is shown in the flowchart of Figure 7. In this basic process 600,
a packet of information is sent from the updating server to at least one
other network server 602. Each of the network servers receiving the
packet determines whether it can process that packet and update to the
current version 604. Each server receiving the packet responds to the
updating server, indicating whether the network server can process the
packet 606. If all the networt( servers (to which the delta is sent)
acknowledge successful processing of the delta within some timeout
period, the updating server can decide to commit the update. Otherwise,
the updating server can decide to abort the update. Once this decision is
made, the updating server sends a message to the network server(s)
indicating whether the update should be committed or at>orted 608. If the
decision is to commit, each of the network servers processes the commit
610. Heartbeat can further be used to signal whettier a commit or abort
occurred, in case the command was missed by one of the slaves.
[0053] In addition to the ability of a serverto pull a delta, an updating
server can have the ability to push a delta during two-phase distribution. In one embodiment, these deltas are always tretween successive versions ofthedata. This two-phase distribution method can minimize the likelihood of inconsistencies between participants. Servers can process a prepare as far as possible without exposing the update to clients or making the update impossible to reill back. This may include such tasks as checking the servers for conflicts. If any of the servers signals an error, such as by sending a "disk full" or "inconsistent configuration" message, the update can be uniformly rolled back.

[0054] It is still possible, however, that inconsistencies may arise.
For instance, there may be errors in processing a commit, for reasons such as an inability to open a socket. Servers may also commit and expose the update at different times. Because the data cannot reach every managed server at exactly the same time, there can be some rippling effect. The use of multicasting provides for a small time window, in an attempt to minimize the rippling effect. In one embodiment, a prepared server will abort if "it misses a commit, whether It missed the signal, the master crashed, etc.
[0055] A best-effort approach to multicasting can cause a server to
miss a commit signal. If an updating server crashes part way through the commit phase, there may be no logging or means for recovery. There may be no way for the updating server to tell the remaining servers that they need to commit. Upon abort, some servers may end up committing the data if the version is not properly rolled back. In one embodiment, the remaining servers could get the update using one-phase distribution. This might happen, for example, when a server pulls a delta in response to a heartbeat received from an updating server. This approach may maintain system scalability, which might be lost if the system tied down distribution in order to avoid any commit or version errors.
[0056] If the information regarding the previous versions was not
included in a delta, a server might have to abort and restart if that sep/er was prepared but missed a commit. With the inclusion of older version infomiation, the server can commit that portion of the update it was expecting upon the prepare, and ask for a new delta to handle more recent updates. Infomiation about a given version can be included for at least some fixed, configurable number of heartbeats, although rapid-fire updates may cause the window to Increase to an unacceptable size. In another embodiment, information about an older version is discarded once an updating server determines that all network servers have received the update.

[0057] Multicast heartbeats can have several properties that need
to be taken into consideration. These heartbeats can be asynchronous or
"one-way. As a result, by the time a server responds to a heartbeat, the
updating server or database may have advanced to a new state. Further,
not all servers respond at exactly the same time. As such, an updating
server can assume that a server has no knowledge of its state, and can
include that which the delta is intended to update.
[0058] These heartbeats can also be unreliable, as a slave may miss
arbitrary sequences of heartbeats. This can again lead to the inclusion of
older version information in the heartbeats. In one embodiment,
heartbeats are received by a server in the order in which they were sent.
For example, a server may not commit version seven until it has committed
version six. The server can wait until it receives six, or it can simply throw
out six and commit seven. This ordering eliminates the possibility for
confusion that might be created by versions going backwards.
[0059] The foregoing description of the preferred embodiments of
the present invention has been provided for the purposes of illustration and description. It is not Intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations will be apparent to the practitioner skilled in the art. Embodiments were chosen and described in order to best describe the principles of the invention and its practical application, thereby enabling others skilled in the art to understand the invention, the various embodiments and with various modifications that are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalents.

WE CLAIM;
1. A method for updating a data item in a networked persistent data storage
system, comprising:
receiving a request to update a data item in a networked persistent data storage
system, the request being received by a networked server computing device
storing a local copy of the data item;
processing the request using the local copy in the said networked server
computing device;
verifying that the local copy is a current copy of the data item by comparing the
information in the copy of the data item in the said networked persistent data
storage system with the information in the local copy of the data item, whereby
the local copy is current if the two copies are same, and whereby the local copy
is not current if the two copies are different; and
updating the data item in the said networked persistent data storage system in
response to the request if the local copy is a current copy.
2. A method as claimed in claim 1, comprising:
notifying another server computing device on the network that the data item has been updated in the persistent data storage system.
3. A method as claimed in claim 1, comprising:
storing the local copy in local cache on the networked server computing device.
4. A method as claimed in claim 1, comprising:
deleting the local copy of the data item and requesting a current copy of the data item from the persistent data storage system if (he local copy in local cache on the networked server computing device is not a current copy of the data item.

5. A method for updating a data item in a cluster of server computing
devices and persistent data storage system, comprising:
processing an update request on a clustered server computing device, the clustered server computing device storing a local copy of a data item to be used in processing the request;
sending a predicated update request to a clustered persistent data storage system containing the data item, whereby the clustered persistent data storage system updates the data item if the local copy is current with the data item before the update, and whereby the clustered persistent data storage system does not update the data item if the local copy is not current with the data item before the update,
6. A method as claimed in claim 5, comprising:
receiving a message from the clustered persistent data storage system to the clustered server computing device indicating whether the data item has been updated.
7. A method as claimed in claim 5, comprising:
reading a data item from the clustered persistent data storage system and storing a local copy of the data item in local cache on the clustered server computing device.
8. A method as claimed in claim 5, comprising:
receiving an update request from a client to the clustered server computing device.
9. A method as claimed in claim 5, comprising:

checking the local copy of the data item in local cache on the clustered server computing device to determine whether the update request can be processed.
10. A method according as claimed in claim 5, comprising:
updating the local copy of the data item in local cache on the clustered server computing device if the data item in the clustered persistent data storage system is updated.
11. A method as claimed in claim 5, comprising:
deleting the local copy and storing a new copy of the data item in local cache on the clustered server computing device if the local copy is not current with the data item.
12. A method as claimed in claim 11, comprising:
sending an additional predicated update request to a clustered persistent data storage system containing the data item, whereby the clustered persistent data storage system updates the data item if the new copy is current with the data item before the update, and whereby the clustered persistent data storage system does not update the data item if the new copy is not current with the data item before the update.
13. A method as claimed in claim II, comprising:
determining whether the client initiating the update request wishes to attempt the update with the data item current with the new copy.
14. A method as claimed in claim 5, comprising:
notifying another server computing device in the cluster that the data item in the clustered persistent data storage system has been updated.
15. A method as claimed in claim 5, comprising:

multicasting an update message to other server computing devices in the cluster.
16. A method as claimed in claim 5, comprising:
multicasting a version number for the data item to other clustered server computing devices in the cluster after updating the data item.
17. A method as claimed in claim 5, comprising:
contacting each server computing device in the cluster directly to indicate that the data item has been updated.
18. A method as claimed in claim 5, comprising:
heartbreaking the version number for the updated data item to any other clustered server computing devices on the network.
19. A method as claimed in claim 14, comprising:
dropping a local copy of the data item stored on any clustered server computing device being notified the data item has been updated.
20. A method as claimed in claim 14, comprising:
requesting an updated copy of the data item on any clustered server computing device being notified the data item has been updated.
21. A method as claimed in claim 14, comprising:
deleting a local copy of the data item on any clustered server computing device being notified the data item has been updated.
22. A method as claimed in claim 5, comprising:
notifying another server computing device in the cluster that the data item in
the clustered persistent data storage system is going to be updated.

23. A method as claimed in claim 22, comprising:
allowing said another clustered server computing device to veto the update of the data item in the clustered persistent data storage system.
24. A method as claimed in claim 5, comprising:
sending a packet of information to another server computing device in the cluster, the packet of information containing changes to the data item due to the update.
25. A method as claimed in claim 24, wherein:
the packet of information contains changes between the state of the data item after the update and the prior state of the data item before the update.
26. A method as claimed in claim 5, comprising:
determining whether other server computing devices in the cluster can accept the update to the data item; and
committing the update to the other clustered server computing devices if the other clustered server computing devices can accept the update.
27. A method as claimed in claim 26, comprising;
rolling back the update if the other clustered server computing devices carmot accept the update.
28. A method for maintaining concurrency for a copy of a data item cached
locally on a clustered server computing device, comprising:
receiving an update request, the update request being received by a clustered server computing device storing a local copy of a data item in local cache; processing the request using the local copy of the data item;

sending a predicated update request to a clustered persistent data storage system storing the data item, whereby the clustered persistent data storage system updates the data item if the data item is current with the local copy, and whereby the clustered persistent data storage system does not update the data item if the data item is not current with the local copy;
requesting a current copy of the data item for the clustered server computing device and sending another predicated update if the local copy is not current with the data item in the clustered persistent data storage system, the step of requesting a current copy and sending another predicated update continuing until one of the clustered persistent data storage system updating the data item and the method being aborted; and
notifying other server computing devices in the cluster that the data item in the database has been updated.
29. A method as claimed in claim 28, wherein the step of notifying other
server computing devices in the cluster comprises;
multicasting an update message to other server computing devices in the cluster that might be storing a local copy of the data item.
30. A method as claimed in claim 28, wherein the step of notifying other
server computing devices in the cluster comprises:
multicasting a version number for the data item to other server computing devices in the cluster after the data item is updated.
31. A method as claimed in claim 28, wherein the step of notifying other
server computing devices in the cluster comprises:
contacting another server computing device in the cluster by a point-to-point connection to indicate that the data item has been updated.

32. A method as claimed in claim 28, wherein the step of notifying other
server computing devices in the cluster comprises:
heartbeating the version number for the data item to other server computing devices in the cluster after the data item is updated.
33. A method as claimed in claim 28, comprising:
dropping a local copy of the data item on any other server computing device in the cluster being notified that the data item has been updated.
34. A method as claimed in claim 28, comprising:
requesting an updated copy of the data item to any other server computing device in the cluster being notified that the data item has been updated.



Documents:

0652-chenp-2004 abstract duplicate.pdf

0652-chenp-2004 abstract.pdf

0652-chenp-2004 assienement.pdf

0652-chenp-2004 claims duplicate.pdf

0652-chenp-2004 claims.pdf

0652-chenp-2004 correspondence others.pdf

0652-chenp-2004 correspondence po.pdf

0652-chenp-2004 descripition completed duplicate.pdf

0652-chenp-2004 descripition completed.pdf

0652-chenp-2004 drawings duplicate.pdf

0652-chenp-2004 drawings.pdf

0652-chenp-2004 form-1.pdf

0652-chenp-2004 form-18.pdf

0652-chenp-2004 form-26.pdf

0652-chenp-2004 form-3.pdf

0652-chenp-2004 form-5.pdf

0652-chenp-2004 others.pdf

0652-chenp-2004 pct search report.pdf

0652-chenp-2004 pct.pdf

0652-chenp-2004 petition.pdf


Patent Number 229213
Indian Patent Application Number 652/CHENP/2004
PG Journal Number 12/2009
Publication Date 20-Mar-2009
Grant Date 13-Feb-2009
Date of Filing 29-Mar-2004
Name of Patentee BEA SYSTEMS, INC
Applicant Address 2315 NORTH FIRST STREET, SAN JOSE, CALIFORNIA 95131,
Inventors:
# Inventor's Name Inventor's Address
1 JACOBS, DEAN, BERNARD 1747 MADERA STREET, BERKELEY, CALIFORNIA 94707,
2 WOOLEN, ROB 2531 14TH AVENUE, SAN FRANCISCO, CA 94127,
3 MESSINGER, ADAM 317 29TH SREET-APT.306, SAN FRANCISCO, CALIFORNIA 94131,
4 WHITE, SETH 176 ESCOLTA WAY, SAN FRANCISCO, CALIFORNIA 94116,
PCT International Classification Number GO6F 17/30
PCT International Application Number PCT/US02/27315
PCT International Filing date 2002-08-28
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 10/211,712 2002-08-02 U.S.A.
2 60/316,187 2001-08-30 U.S.A.
3 60/316,190 2001-08-30 U.S.A.
4 10/211,713 2002-08-02 U.S.A.