public class CommitPointConsistencyPolicy extends java.lang.Object implements ReplicaConsistencyPolicy
CommitToken
. This
token represents a point in the serialized transaction schedule created by
the master. In other words, this token is like a bookmark, representing a
particular transaction commit in the replication stream. The Replica ensures
that the commit identified by the CommitToken
has been executed on
this node before allowing the application's Environment.beginTransaction()
operation on the Replica to proceed.
For example, suppose the application is a web application where a replicated group is implemented within a load balanced web server group. Each request to the web server consists of an update operation followed by read operations (say from the same client), The read operations naturally expect to see the data from the updates executed by the same request. However, the read operations might have been routed to a node that did not execute the update.
In such a case, the update request would generate a CommitToken
,
which would be resubmitted by the browser, along with subsequent read
requests. The read request could be directed at any one of the available web
servers by a load balancer. The node which executes the read request would
create a CommitPointConsistencyPolicy with that CommitToken
and use
it at transaction begin. If the environment at the web server was already
current (wrt the commit token), it could immediately execute the transaction
and satisfy the request. If not, the "transaction begin" would stall until
the Replica replay had caught up and the change was available at that web
server.
Consistency policies are specified at either a per-transaction level through
TransactionConfig.setConsistencyPolicy(com.sleepycat.je.ReplicaConsistencyPolicy)
or as an
replication node wide default through ReplicationConfig.setConsistencyPolicy(com.sleepycat.je.ReplicaConsistencyPolicy)
CommitToken
,
Managing ConsistencyModifier and Type | Field and Description |
---|---|
static java.lang.String |
NAME
The name:"CommitPointConsistencyPolicy" associated with this policy.
|
Constructor and Description |
---|
CommitPointConsistencyPolicy(CommitToken commitToken,
long timeout,
java.util.concurrent.TimeUnit timeoutUnit)
Defines how current a Replica needs to be in terms of a specific
transaction that was committed on the Master.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(java.lang.Object obj) |
CommitToken |
getCommitToken()
Return the
CommitToken used to create this consistency
policy. |
java.lang.String |
getName()
Returns the name:"CommitPointConsistencyPolicy", associated with this policy.
|
long |
getTimeout(java.util.concurrent.TimeUnit unit)
Return the timeout specified when creating this consistency policy.
|
int |
hashCode() |
java.lang.String |
toString() |
public static final java.lang.String NAME
public CommitPointConsistencyPolicy(CommitToken commitToken, long timeout, java.util.concurrent.TimeUnit timeoutUnit)
commitToken
has
been committed on the Replica. The Environment.beginTransaction()
will wait for at most
timeout
for the Replica to catch up. If the Replica has
not caught up in this period, the beginTransaction()
method will throw a ReplicaConsistencyException
.commitToken
- the token identifying the transactiontimeout
- the maximum amount of time that the transaction start
will wait to allow the Replica to catch up.timeoutUnit
- the TimeUnit
for the timeout parameter.java.lang.IllegalArgumentException
- if the commitToken or timeoutUnit is
null.public java.lang.String getName()
getName
in interface ReplicaConsistencyPolicy
NAME
public CommitToken getCommitToken()
CommitToken
used to create this consistency
policy.CommitToken
used to create this consistency
policy.public long getTimeout(java.util.concurrent.TimeUnit unit)
getTimeout
in interface ReplicaConsistencyPolicy
unit
- the TimeUnit
of the returned value.public int hashCode()
hashCode
in class java.lang.Object
Object.hashCode()
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
Object.equals(java.lang.Object)
public java.lang.String toString()
toString
in class java.lang.Object
Copyright (c) 2002, 2017 Oracle and/or its affiliates. All rights reserved.