callback.initLease(); } catch (CommitFailedException e) { indexStats.failed(e); if (beforeCheckpoint != null) { state = store.retrieve(beforeCheckpoint); callback.setCheckpoint(beforeCheckpoint); name, beforeCheckpoint); beforeCheckpoint = null; callback.setCheckpoint(beforeCheckpoint); before = MISSING_NODE; } else if (noVisibleChanges(state, root) && !switchOnSync) {
callback.initLease(); } catch (CommitFailedException e) { indexStats.failed(e); if (beforeCheckpoint != null) { state = store.retrieve(beforeCheckpoint); callback.setCheckpoint(beforeCheckpoint); name, beforeCheckpoint); beforeCheckpoint = null; callback.setCheckpoint(beforeCheckpoint); before = MISSING_NODE; } else if (noVisibleChanges(state, root) && !switchOnSync) {
callback.initLease(); } catch (CommitFailedException e) { indexStats.failed(e); if (beforeCheckpoint != null) { state = store.retrieve(beforeCheckpoint); callback.setCheckpoint(beforeCheckpoint); name, beforeCheckpoint); beforeCheckpoint = null; callback.setCheckpoint(beforeCheckpoint); before = MISSING_NODE; } else if (noVisibleChanges(state, root) && !switchOnSync) {
protected void initLease() throws CommitFailedException { if (hasLease) { return; } NodeState root = store.getRoot(); NodeState async = root.getChildNode(ASYNC); if(isLeaseCheckEnabled(leaseTimeOut)) { long now = getTime(); this.lease = now + 2 * leaseTimeOut; long beforeLease = async.getLong(leaseName); if (beforeLease > now) { throw newConcurrentUpdateException(); } NodeBuilder builder = root.builder(); builder.child(ASYNC).setProperty(leaseName, lease); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, beforeLease, name); } else { lease = null; // remove stale lease info if needed if (async.hasProperty(leaseName)) { NodeBuilder builder = root.builder(); builder.child(ASYNC).removeProperty(leaseName); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, null, name); } } hasLease = true; }
protected void initLease() throws CommitFailedException { if (hasLease) { return; } NodeState root = store.getRoot(); NodeState async = root.getChildNode(ASYNC); if(isLeaseCheckEnabled(leaseTimeOut)) { long now = getTime(); this.lease = now + 2 * leaseTimeOut; long beforeLease = async.getLong(leaseName); if (beforeLease > now) { throw newConcurrentUpdateException(); } NodeBuilder builder = root.builder(); builder.child(ASYNC).setProperty(leaseName, lease); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, beforeLease, name); } else { lease = null; // remove stale lease info if needed if (async.hasProperty(leaseName)) { NodeBuilder builder = root.builder(); builder.child(ASYNC).removeProperty(leaseName); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, null, name); } } hasLease = true; }
protected void initLease() throws CommitFailedException { if (hasLease) { return; } NodeState root = store.getRoot(); NodeState async = root.getChildNode(ASYNC); if(isLeaseCheckEnabled(leaseTimeOut)) { long now = getTime(); this.lease = now + 2 * leaseTimeOut; long beforeLease = async.getLong(leaseName); if (beforeLease > now) { throw newConcurrentUpdateException(); } NodeBuilder builder = root.builder(); builder.child(ASYNC).setProperty(leaseName, lease); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, beforeLease, name); } else { lease = null; // remove stale lease info if needed if (async.hasProperty(leaseName)) { NodeBuilder builder = root.builder(); builder.child(ASYNC).removeProperty(leaseName); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, null, name); } } hasLease = true; }
@Override public void traversedNode(PathSource pathSource) throws CommitFailedException{ checkIfStopped(); if (indexStats.incTraversal() % LEASE_CHECK_INTERVAL == 0 && isLeaseCheckEnabled(leaseTimeOut)) { long now = getTime(); if (now + leaseTimeOut > lease) { long newLease = now + 2 * leaseTimeOut; NodeBuilder builder = store.getRoot().builder(); builder.child(ASYNC).setProperty(leaseName, newLease); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, lease, name); lease = newLease; } } }
@Override public void traversedNode(PathSource pathSource) throws CommitFailedException{ checkIfStopped(); if (indexStats.incTraversal() % LEASE_CHECK_INTERVAL == 0 && isLeaseCheckEnabled(leaseTimeOut)) { long now = getTime(); if (now + leaseTimeOut > lease) { long newLease = now + 2 * leaseTimeOut; NodeBuilder builder = store.getRoot().builder(); builder.child(ASYNC).setProperty(leaseName, newLease); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, lease, name); lease = newLease; } } }
protected void prepare(String afterCheckpoint) throws CommitFailedException { if (!hasLease) { initLease(); } NodeState root = store.getRoot(); NodeBuilder builder = root.builder(); NodeBuilder async = builder.child(ASYNC); updateTempCheckpoints(async, checkpoint, afterCheckpoint); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, lease, name); // reset updates counter indexStats.reset(); }
@Override public void traversedNode(PathSource pathSource) throws CommitFailedException{ checkIfStopped(); if (indexStats.incTraversal() % LEASE_CHECK_INTERVAL == 0 && isLeaseCheckEnabled(leaseTimeOut)) { long now = getTime(); if (now + leaseTimeOut > lease) { long newLease = now + 2 * leaseTimeOut; NodeBuilder builder = store.getRoot().builder(); builder.child(ASYNC).setProperty(leaseName, newLease); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, lease, name); lease = newLease; } } }
@Override protected void prepare(String afterCheckpoint) throws CommitFailedException { listener.prePrepare(); super.prepare(afterCheckpoint); listener.postPrepare(); }
protected AsyncUpdateCallback newAsyncUpdateCallback(NodeStore store, String name, long leaseTimeOut, String beforeCheckpoint, AsyncIndexStats indexStats, AtomicBoolean stopFlag) { AsyncUpdateCallback callback = new AsyncUpdateCallback(store, name, leaseTimeOut, beforeCheckpoint, indexStats, stopFlag); callback.setValidatorProviders(validatorProviders); return callback; }
protected void prepare(String afterCheckpoint) throws CommitFailedException { if (!hasLease) { initLease(); } NodeState root = store.getRoot(); NodeBuilder builder = root.builder(); NodeBuilder async = builder.child(ASYNC); updateTempCheckpoints(async, checkpoint, afterCheckpoint); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, lease, name); // reset updates counter indexStats.reset(); }
protected void prepare(String afterCheckpoint) throws CommitFailedException { if (!hasLease) { initLease(); } NodeState root = store.getRoot(); NodeBuilder builder = root.builder(); NodeBuilder async = builder.child(ASYNC); updateTempCheckpoints(async, checkpoint, afterCheckpoint); mergeWithConcurrencyCheck(store, validatorProviders, builder, checkpoint, lease, name); // reset updates counter indexStats.reset(); }
@Override public void indexUpdate() throws CommitFailedException { checkIfStopped(); indexStats.incUpdates(); }
@Override void close() throws CommitFailedException { listener.preClose(); super.close(); listener.postClose(); }
protected AsyncUpdateCallback newAsyncUpdateCallback(NodeStore store, String name, long leaseTimeOut, String beforeCheckpoint, AsyncIndexStats indexStats, AtomicBoolean stopFlag) { AsyncUpdateCallback callback = new AsyncUpdateCallback(store, name, leaseTimeOut, beforeCheckpoint, indexStats, stopFlag); callback.setValidatorProviders(validatorProviders); return callback; }