@Override public int hashCode() { return Long.hashCode(txnId.getId()); }
@Override public int hashCode() { return Long.hashCode(txnId.getId()); }
@Override public synchronized ITransactionContext beginTransaction(TxnId txnId, TransactionOptions options) throws ACIDException { ITransactionContext txnCtx = txnCtxRepository.get(txnId); if (txnCtx != null) { throw new ACIDException("Transaction with the same (" + txnId + ") already exists"); } txnCtx = TransactionContextFactory.create(txnId, options); txnCtxRepository.put(txnId, txnCtx); ensureMaxTxnId(txnId.getId()); return txnCtx; }
public static void formJobTerminateLogRecord(ITransactionContext txnCtx, LogRecord logRecord, boolean isCommit) { logRecord.setTxnCtx(txnCtx); TransactionUtil.formJobTerminateLogRecord(logRecord, txnCtx.getTxnId().getId(), isCommit); }
@Override public void unlock(DatasetId datasetId, int entityHashValue, byte lockMode, ITransactionContext txnContext) throws ACIDException { log("unlock", datasetId.getId(), entityHashValue, lockMode, txnContext); final long txnId = txnContext.getTxnId().getId(); final long jobSlot = txnId2TxnSlotMap.get(txnId); unlock(datasetId.getId(), entityHashValue, lockMode, jobSlot); }
public static void formMarkerLogRecord(LogRecord logRecord, ITransactionContext txnCtx, int datasetId, int resourcePartition, ByteBuffer marker) { logRecord.setTxnCtx(txnCtx); logRecord.setLogSource(LogSource.LOCAL); logRecord.setLogType(LogType.MARKER); logRecord.setTxnId(txnCtx.getTxnId().getId()); logRecord.setDatasetId(datasetId); logRecord.setResourcePartition(resourcePartition); marker.get(); // read the first byte since it is not part of the marker object logRecord.setMarker(marker); logRecord.computeAndSetLogSize(); } }
public LockThenSearchOperationCallback(DatasetId datasetId, long resourceId, int[] entityIdFields, ITransactionSubsystem txnSubsystem, ITransactionContext txnCtx, IOperatorNodePushable operatorNodePushable) { super(datasetId, resourceId, entityIdFields, txnCtx, txnSubsystem.getLockManager()); this.operatorNodePushable = (LSMIndexInsertUpdateDeleteOperatorNodePushable) operatorNodePushable; this.logManager = txnSubsystem.getLogManager(); this.logRecord = new LogRecord(); logRecord.setTxnCtx(txnCtx); logRecord.setLogSource(LogSource.LOCAL); logRecord.setLogType(LogType.WAIT); logRecord.setTxnId(txnCtx.getTxnId().getId()); logRecord.computeAndSetLogSize(); }
@Override public void rollbackTransaction(ITransactionContext txnContext) throws ACIDException { long abortedTxnId = txnContext.getTxnId().getId();
stats.instantLock(); final long txnId = txnContext.getTxnId().getId(); final ResourceGroup group = table.get(datasetId.getId(), entityHashValue); if (group.firstResourceIndex.get() == NILL) {
public static void formEntityCommitLogRecord(LogRecord logRecord, ITransactionContext txnCtx, int datasetId, int PKHashValue, ITupleReference PKValue, int[] PKFields, int resourcePartition, byte entityCommitType) { logRecord.setTxnCtx(txnCtx); logRecord.setLogType(entityCommitType); logRecord.setTxnId(txnCtx.getTxnId().getId()); logRecord.setDatasetId(datasetId); logRecord.setPKHashValue(PKHashValue); logRecord.setPKFieldCnt(PKFields.length); logRecord.setPKValue(PKValue); logRecord.setPKFields(PKFields); logRecord.setResourcePartition(resourcePartition); logRecord.computeAndSetPKValueSize(); logRecord.computeAndSetLogSize(); }
stats.instantTryLock(); final long txnId = txnContext.getTxnId().getId(); final ResourceGroup group = table.get(datasetId.getId(), entityHashValue); if (group.firstResourceIndex.get() == NILL) {
protected AbstractIndexModificationOperationCallback(DatasetId datasetId, int[] primaryKeyFields, ITransactionContext txnCtx, ILockManager lockManager, ITransactionSubsystem txnSubsystem, long resourceId, int resourcePartition, byte resourceType, Operation indexOp) { super(datasetId, resourceId, primaryKeyFields, txnCtx, lockManager); this.resourceType = resourceType; this.indexOp = indexOp; this.txnSubsystem = txnSubsystem; indexRecord = new LogRecord(); indexRecord.setTxnCtx(txnCtx); indexRecord.setLogType(LogType.UPDATE); indexRecord.setTxnId(txnCtx.getTxnId().getId()); indexRecord.setDatasetId(datasetId.getId()); indexRecord.setResourceId(resourceId); indexRecord.setResourcePartition(resourcePartition); indexRecord.setNewOp(indexOp.value()); filterRecord = new LogRecord(); filterRecord.setTxnCtx(txnCtx); filterRecord.setLogType(LogType.FILTER); filterRecord.setDatasetId(datasetId.getId()); filterRecord.setTxnId(txnCtx.getTxnId().getId()); filterRecord.setResourceId(resourceId); filterRecord.setResourcePartition(resourcePartition); filterRecord.setNewOp(Operation.FILTER_MOD.value()); }
stats.tryLock(); final long txnId = txnContext.getTxnId().getId(); final long jobSlot = findOrAllocJobSlot(txnId); final ResourceGroup group = table.get(datasetId.getId(), entityHashValue);
stats.lock(); final long txnId = txnContext.getTxnId().getId(); final long jobSlot = findOrAllocJobSlot(txnId); final ResourceGroup group = table.get(datasetId.getId(), entityHashValue);
stats.releaseLocks(); long txnId = txnContext.getTxnId().getId(); long jobSlot = txnId2TxnSlotMap.get(txnId); if (jobSlot == 0) {