//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: public long append(org.neo4j.kernel.impl.api.TransactionToApply batch, org.neo4j.kernel.impl.transaction.tracing.LogAppendEvent logAppendEvent) throws java.io.IOException public override long Append(TransactionToApply batch, LogAppendEvent logAppendEvent) { // Assigned base tx id just to make compiler happy long lastTransactionId = TransactionIdStore_Fields.BASE_TX_ID; // Synchronized with logFile to get absolute control over concurrent rotations happening lock ( _logFile ) { // Assert that kernel is healthy before making any changes _databaseHealth.assertHealthy(typeof(IOException)); using (SerializeTransactionEvent serialiseEvent = logAppendEvent.BeginSerializeTransaction()) { // Append all transactions in this batch to the log under the same logFile monitor TransactionToApply tx = batch; while (tx != null) { long transactionId = _transactionIdStore.nextCommittingTransactionId(); // If we're in a scenario where we're merely replicating transactions, i.e. transaction // id have already been generated by another entity we simply check that our id // that we generated match that id. If it doesn't we've run into a problem we can't ´ // really recover from and would point to a bug somewhere. MatchAgainstExpectedTransactionIdIfAny(transactionId, tx); TransactionCommitment commitment = AppendToLog(tx.TransactionRepresentation(), transactionId); tx.Commitment(commitment, transactionId); tx.LogPosition(commitment.LogPosition()); tx = tx.Next(); lastTransactionId = transactionId; } } } // At this point we've appended all transactions in this batch, but we can't mark any of them // as committed since they haven't been forced to disk yet. So here we force, or potentially // piggy-back on another force, but anyway after this call below we can be sure that all our transactions // in this batch exist durably on disk. if (ForceAfterAppend(logAppendEvent)) { // We got lucky and were the one forcing the log. It's enough if ones of all doing concurrent committers // checks the need for log rotation. bool logRotated = _logRotation.rotateLogIfNeeded(logAppendEvent); logAppendEvent.LogRotated = logRotated; } // Mark all transactions as committed PublishAsCommitted(batch); return(lastTransactionId); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: private long appendToLog(TransactionToApply batch, org.neo4j.kernel.impl.transaction.tracing.CommitEvent commitEvent) throws org.neo4j.internal.kernel.api.exceptions.TransactionFailureException private long AppendToLog(TransactionToApply batch, CommitEvent commitEvent) { try { using (LogAppendEvent logAppendEvent = commitEvent.BeginLogAppend()) { return(_appender.append(batch, logAppendEvent)); } } catch (Exception cause) { throw new TransactionFailureException(TransactionLogError, cause, "Could not append transaction representation to log"); } }