public LogBufferTailReader(ByteBuffer buffer) { this.buffer = buffer; logRecord = new LogRecord(); }
public LogReader(ILogManager logMgr, long logFileSize, int logPageSize, MutableLong flushLSN, boolean isRecoveryMode) { this.logMgr = logMgr; this.logFileSize = logFileSize; this.logPageSize = logPageSize; this.flushLSN = flushLSN; this.isRecoveryMode = isRecoveryMode; this.readBuffer = ByteBuffer.allocate(logPageSize); this.logRecord = new LogRecord(); }
public DatasetLifecycleManager(StorageProperties storageProperties, ILocalResourceRepository resourceRepository, ILogManager logManager, IDatasetMemoryManager memoryManager, IIndexCheckpointManagerProvider indexCheckpointManagerProvider, int numPartitions) { this.logManager = logManager; this.storageProperties = storageProperties; this.resourceRepository = resourceRepository; this.memoryManager = memoryManager; this.indexCheckpointManagerProvider = indexCheckpointManagerProvider; this.numPartitions = numPartitions; waitLog = new LogRecord(); waitLog.setLogType(LogType.WAIT_FOR_FLUSHES); waitLog.computeAndSetLogSize(); }
@Override public void open() throws HyracksDataException { try { transactionContext = transactionManager.getTransactionContext(txnId); transactionContext.setWriteTxn(isWriteTransaction); ILogMarkerCallback callback = TaskUtil.get(ILogMarkerCallback.KEY_MARKER_CALLBACK, ctx); logRecord = new LogRecord(callback); if (isSink) { return; } initAccessAppend(ctx); super.open(); } catch (ACIDException e) { throw HyracksDataException.create(e); } }
@Override public void commitTransaction(TxnId txnId) throws ACIDException { final ITransactionContext txnCtx = getTransactionContext(txnId); try { if (txnCtx.isWriteTxn()) { LogRecord logRecord = new LogRecord(); TransactionUtil.formJobTerminateLogRecord(txnCtx, logRecord, true); txnSubsystem.getLogManager().log(logRecord); txnCtx.setTxnState(ITransactionManager.COMMITTED); } } catch (Exception e) { if (LOGGER.isErrorEnabled()) { LOGGER.error(" caused exception in commit !" + txnCtx.getTxnId()); } throw e; } finally { txnCtx.complete(); txnSubsystem.getLockManager().releaseLocks(txnCtx); txnCtxRepository.remove(txnCtx.getTxnId()); } }
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(); }
+ " and partition " + partition + " and is modified but its component id is null"); LogRecord logRecord = new LogRecord(); if (dsInfo.isDurable()) {
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()); }
@Test public void waitLogTest() throws Exception { final INcApplicationContext ncAppCtx = (INcApplicationContext) integrationUtil.ncs[0].getApplicationContext(); LogRecord logRecord = new LogRecord(); final long txnId = 1; logRecord.setTxnCtx(TransactionContextFactory.create(new TxnId(txnId), new TransactionOptions(ITransactionManager.AtomicityLevel.ENTITY_LEVEL))); logRecord.setLogSource(LogSource.LOCAL); logRecord.setLogType(LogType.WAIT); logRecord.setTxnId(txnId); logRecord.isFlushed(false); logRecord.computeAndSetLogSize(); Thread transactor = new Thread(() -> { final LogManager logManager = (LogManager) ncAppCtx.getTransactionSubsystem().getLogManager(); logManager.log(logRecord); }); transactor.start(); transactor.join(TimeUnit.SECONDS.toMillis(30)); Assert.assertTrue(logRecord.isFlushed()); }
for (int i = 0; i < 10000; i++) { lockManager.lock(datasetId, i, LockManagerConstants.LockMode.S, txnCtx); LogRecord logRecord = new LogRecord(); TransactionUtil.formEntityCommitLogRecord(logRecord, txnCtx, datasetId.getId(), i, tuple, pkFields, partition, LogType.ENTITY_COMMIT); for (int i = 0; i < 10000; i++) { lockManager.lock(datasetId, i, LockManagerConstants.LockMode.S, txnCtx); LogRecord logRecord = new LogRecord(); TransactionUtil.formEntityCommitLogRecord(logRecord, txnCtx, datasetId.getId(), i, tuple, pkFields, partition, LogType.ENTITY_COMMIT);
@Override public void abortTransaction(TxnId txnId) throws ACIDException { final ITransactionContext txnCtx = getTransactionContext(txnId); try { if (txnCtx.isWriteTxn()) { LogRecord logRecord = new LogRecord(); TransactionUtil.formJobTerminateLogRecord(txnCtx, logRecord, false); txnSubsystem.getLogManager().log(logRecord); txnSubsystem.getCheckpointManager().secure(txnId); txnSubsystem.getRecoveryManager().rollbackTransaction(txnCtx); txnCtx.setTxnState(ITransactionManager.ABORTED); } } catch (HyracksDataException e) { String msg = "Could not complete rollback! System is in an inconsistent state"; if (LOGGER.isErrorEnabled()) { LOGGER.log(Level.ERROR, msg, e); } throw new ACIDException(msg, e); } finally { txnCtx.complete(); txnSubsystem.getLockManager().releaseLocks(txnCtx); txnCtxRepository.remove(txnCtx.getTxnId()); txnSubsystem.getCheckpointManager().completed(txnId); } }
private final int datasetID; private final ILogManager logManager; private final LogRecord waitLog = new LogRecord(); private int numActiveIOOps; private long lastAccess;
private void stallAbortTxn(Thread t, ITransactionContext txnCtx, ITransactionSubsystem txnSubsystem, TxnId txnId) throws InterruptedException, HyracksDataException { try { if (txnCtx.isWriteTxn()) { LogRecord logRecord = new LogRecord(); TransactionUtil.formJobTerminateLogRecord(txnCtx, logRecord, false); txnSubsystem.getLogManager().log(logRecord); txnSubsystem.getCheckpointManager().secure(txnId); synchronized (t) { t.notifyAll(); t.wait(); } txnSubsystem.getRecoveryManager().rollbackTransaction(txnCtx); txnCtx.setTxnState(ITransactionManager.ABORTED); } } catch (ACIDException | HyracksDataException e) { String msg = "Could not complete rollback! System is in an inconsistent state"; throw new ACIDException(msg, e); } finally { txnCtx.complete(); txnSubsystem.getLockManager().releaseLocks(txnCtx); txnSubsystem.getCheckpointManager().completed(txnId); } }