Object getForUpdateInternal(Data key) { VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis(), true); addUnlockTransactionRecord(key, versionedValue.version); return versionedValue.value; }
Object getForUpdateInternal(Data key) { VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis(), true); addUnlockTransactionRecord(key, versionedValue.version); return versionedValue.value; }
private void addTransactionRecords(ClusterStateChange stateChange, Transaction tx, Collection<MemberImpl> members, int memberListVersion, int partitionStateVersion, boolean isTransient) { long leaseTime = Math.min(tx.getTimeoutMillis(), LOCK_LEASE_EXTENSION_MILLIS); for (Member member : members) { tx.add(new ClusterStateTransactionLogRecord(stateChange, node.getThisAddress(), member.getAddress(), tx.getTxnId(), leaseTime, memberListVersion, partitionStateVersion, isTransient)); } }
private void addTransactionRecords(ClusterStateChange stateChange, Transaction tx, Collection<MemberImpl> members, int memberListVersion, int partitionStateVersion, boolean isTransient) { long leaseTime = Math.min(tx.getTimeoutMillis(), LOCK_LEASE_EXTENSION_MILLIS); for (Member member : members) { tx.add(new ClusterStateTransactionLogRecord(stateChange, node.getThisAddress(), member.getAddress(), tx.getTxnId(), leaseTime, memberListVersion, partitionStateVersion, isTransient)); } }
Data removeInternal(Data key) { VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operationProvider.createTxnDeleteOperation(name, key, versionedValue.version), versionedValue.version, tx.getOwnerUuid())); return versionedValue.value; }
Data putIfAbsentInternal(Data key, Data value) { boolean unlockImmediately = !valueMap.containsKey(key); VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); if (versionedValue.value != null) { if (unlockImmediately) { unlock(key, versionedValue); return versionedValue.value; } addUnlockTransactionRecord(key, versionedValue.version); return versionedValue.value; } MapOperation operation = operationProvider.createTxnSetOperation(name, key, value, versionedValue.version, -1); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operation, versionedValue.version, tx.getOwnerUuid())); return versionedValue.value; }
Data replaceInternal(Data key, Data value) { boolean unlockImmediately = !valueMap.containsKey(key); VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); if (versionedValue.value == null) { if (unlockImmediately) { unlock(key, versionedValue); return null; } addUnlockTransactionRecord(key, versionedValue.version); return null; } MapOperation operation = operationProvider.createTxnSetOperation(name, key, value, versionedValue.version, -1); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operation, versionedValue.version, tx.getOwnerUuid())); return versionedValue.value; }
Data removeInternal(Data key) { VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operationProvider.createTxnDeleteOperation(name, key, versionedValue.version), versionedValue.version, tx.getOwnerUuid())); return versionedValue.value; }
Data replaceInternal(Data key, Data value) { boolean unlockImmediately = !valueMap.containsKey(key); VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); if (versionedValue.value == null) { if (unlockImmediately) { unlock(key, versionedValue); return null; } addUnlockTransactionRecord(key, versionedValue.version); return null; } MapOperation operation = operationProvider.createTxnSetOperation(name, key, value, versionedValue.version, -1); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operation, versionedValue.version, tx.getOwnerUuid())); return versionedValue.value; }
Data putIfAbsentInternal(Data key, Data value) { boolean unlockImmediately = !valueMap.containsKey(key); VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); if (versionedValue.value != null) { if (unlockImmediately) { unlock(key, versionedValue); return versionedValue.value; } addUnlockTransactionRecord(key, versionedValue.version); return versionedValue.value; } MapOperation operation = operationProvider.createTxnSetOperation(name, key, value, versionedValue.version, -1); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operation, versionedValue.version, tx.getOwnerUuid())); return versionedValue.value; }
Data putInternal(Data key, Data value, long ttl, TimeUnit timeUnit) { VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); long timeInMillis = getTimeInMillis(ttl, timeUnit); MapOperation operation = operationProvider.createTxnSetOperation(name, key, value, versionedValue.version, timeInMillis); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operation, versionedValue.version, tx.getOwnerUuid())); return versionedValue.value; }
boolean removeIfSameInternal(Data key, Object value) { boolean unlockImmediately = !valueMap.containsKey(key); VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); if (!isEquals(versionedValue.value, value)) { if (unlockImmediately) { unlock(key, versionedValue); return false; } addUnlockTransactionRecord(key, versionedValue.version); return false; } tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operationProvider.createTxnDeleteOperation(name, key, versionedValue.version), versionedValue.version, tx.getOwnerUuid())); return true; }
boolean replaceIfSameInternal(Data key, Object oldValue, Data newValue) { boolean unlockImmediately = !valueMap.containsKey(key); VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); if (!isEquals(oldValue, versionedValue.value)) { if (unlockImmediately) { unlock(key, versionedValue); return false; } addUnlockTransactionRecord(key, versionedValue.version); return false; } MapOperation operation = operationProvider.createTxnSetOperation(name, key, newValue, versionedValue.version, -1); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operation, versionedValue.version, tx.getOwnerUuid())); return true; }
Data putInternal(Data key, Data value, long ttl, TimeUnit timeUnit) { VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); long timeInMillis = getTimeInMillis(ttl, timeUnit); MapOperation operation = operationProvider.createTxnSetOperation(name, key, value, versionedValue.version, timeInMillis); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operation, versionedValue.version, tx.getOwnerUuid())); return versionedValue.value; }
boolean replaceIfSameInternal(Data key, Object oldValue, Data newValue) { boolean unlockImmediately = !valueMap.containsKey(key); VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); if (!isEquals(oldValue, versionedValue.value)) { if (unlockImmediately) { unlock(key, versionedValue); return false; } addUnlockTransactionRecord(key, versionedValue.version); return false; } MapOperation operation = operationProvider.createTxnSetOperation(name, key, newValue, versionedValue.version, -1); tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operation, versionedValue.version, tx.getOwnerUuid())); return true; }
boolean removeIfSameInternal(Data key, Object value) { boolean unlockImmediately = !valueMap.containsKey(key); VersionedValue versionedValue = lockAndGet(key, tx.getTimeoutMillis()); if (!isEquals(versionedValue.value, value)) { if (unlockImmediately) { unlock(key, versionedValue); return false; } addUnlockTransactionRecord(key, versionedValue.version); return false; } tx.add(new MapTransactionLogRecord(name, key, getPartitionId(key), operationProvider.createTxnDeleteOperation(name, key, versionedValue.version), versionedValue.version, tx.getOwnerUuid())); return true; }
Collection<MultiMapRecord> removeAllInternal(Data key) { checkObjectNotNull(key); long timeout = tx.getTimeoutMillis(); long ttl = extendTimeout(timeout); Collection<MultiMapRecord> coll = txMap.get(key); MultiMapTransactionLogRecord logRecord; if (coll == null) { MultiMapResponse response = lockAndGet(key, timeout, ttl); if (response == null) { throw new ConcurrentModificationException("Transaction couldn't obtain lock " + getThreadId()); } coll = createCollection(response.getRecordCollection(getNodeEngine())); logRecord = new MultiMapTransactionLogRecord(getPartitionId(key), key, name, ttl, getThreadId()); tx.add(logRecord); } else { logRecord = (MultiMapTransactionLogRecord) tx.get(getRecordLogKey(key)); } txMap.put(key, createCollection()); TxnRemoveAllOperation operation = new TxnRemoveAllOperation(name, key, coll); logRecord.addOperation(operation); return coll; }
Collection<MultiMapRecord> removeAllInternal(Data key) { checkObjectNotNull(key); long timeout = tx.getTimeoutMillis(); long ttl = extendTimeout(timeout); Collection<MultiMapRecord> coll = txMap.get(key); MultiMapTransactionLogRecord logRecord; if (coll == null) { MultiMapResponse response = lockAndGet(key, timeout, ttl); if (response == null) { throw new ConcurrentModificationException("Transaction couldn't obtain lock " + getThreadId()); } coll = createCollection(response.getRecordCollection(getNodeEngine())); logRecord = new MultiMapTransactionLogRecord(getPartitionId(key), key, name, ttl, getThreadId()); tx.add(logRecord); } else { logRecord = (MultiMapTransactionLogRecord) tx.get(getRecordLogKey(key)); } txMap.put(key, createCollection()); TxnRemoveAllOperation operation = new TxnRemoveAllOperation(name, key, coll); logRecord.addOperation(operation); return coll; }
long timeout = tx.getTimeoutMillis(); long ttl = extendTimeout(timeout); MultiMapTransactionLogRecord logRecord;
long timeout = tx.getTimeoutMillis(); long ttl = extendTimeout(timeout); MultiMapTransactionLogRecord logRecord;