{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

We want the state to be updated consistently despite

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: e first transaction; that is, the sum can commit or abort independently of later transactions, because it doesn’t modify any of the account balances. (This is still linearizable – the transactions appear to be done, in an order consistent with the range of times that each of the transactions executed. If we allow time travel transactions – transactions to be done on the database as if they were done in the distant past - - then its only serializable. We are always safe to abort transactions whenever linearizability would be broken. That is, we can allow all transactions to proceed, as long as we can detect if there is a problem, and abort any transactions as necessary. What about deadlock? In optimistic concurrency control, we never have deadlock! We let everyone proceed, and abort any transaction that would violate consistency. Either way, we need to be able to abort a transaction. Here’s the twist: recall that we can’t tell if a client is slow or if it has crashed. So if we’re going to make cache coherence work with client failures, we need to be able to revoke a cached copy of a file. Otherwise, we’ll need to stop everything until the client recovers! But maybe the client was just slow, and we revoked the copy incorrectly. So we need a mechanism to be able to detect whether a commit can be allowed to go forward at the server – did we revoke the client’s data correctly (it had crashed) or incorrectly (it hadn’t). With optimistic concurrenc...
View Full Document

{[ snackBarMessage ]}

Ask a homework question - tutors are online