public void panic( Throwable cause ) { if ( !healthy ) { return; } if ( cause == null ) { throw new IllegalArgumentException( "Must provide a cause for the database panic" ); } this.causeOfPanic = cause; this.healthy = false; log.error( "Database panic: " + panicMessage, cause ); dbpe.generateEvent( ErrorState.TX_MANAGER_NOT_OK, causeOfPanic ); }
private static BatchingTransactionAppender createBatchingTransactionAppender( TransactionIdStore transactionIdStore, TransactionMetadataCache transactionMetadataCache, LogFiles logFiles ) { Log log = NullLog.getInstance(); KernelEventHandlers kernelEventHandlers = new KernelEventHandlers( log ); DatabasePanicEventGenerator panicEventGenerator = new DatabasePanicEventGenerator( kernelEventHandlers ); DatabaseHealth databaseHealth = new DatabaseHealth( panicEventGenerator, log ); LogRotationImpl logRotation = new LogRotationImpl( NOOP_LOGROTATION_MONITOR, logFiles, databaseHealth ); return new BatchingTransactionAppender( logFiles, logRotation, transactionMetadataCache, transactionIdStore, IdOrderingQueue.BYPASS, databaseHealth ); }
private static DatabaseHealth getDatabaseHealth() { DatabasePanicEventGenerator databasePanicEventGenerator = new DatabasePanicEventGenerator( new KernelEventHandlers( NullLog.getInstance() ) ); return new DatabaseHealth( databasePanicEventGenerator, NullLog.getInstance() ); }
panicEventGenerator = new DatabasePanicEventGenerator( eventHandlers );
@Test public void shouldGenerateDatabasePanicEvents() { // GIVEN DatabasePanicEventGenerator generator = mock( DatabasePanicEventGenerator.class ); DatabaseHealth databaseHealth = new DatabaseHealth( generator, NullLogProvider.getInstance().getLog( DatabaseHealth.class ) ); databaseHealth.healed(); // WHEN Exception cause = new Exception( "My own fault" ); databaseHealth.panic( cause ); databaseHealth.panic( cause ); // THEN verify( generator, times( 1 ) ).generateEvent( TX_MANAGER_NOT_OK, cause ); }
panicEventGenerator = new DatabasePanicEventGenerator( eventHandlers );
public void panic( Throwable cause ) { if ( !healthy ) { return; } if ( cause == null ) { throw new IllegalArgumentException( "Must provide a cause for the database panic" ); } this.causeOfPanic = cause; this.healthy = false; log.error( "Database panic: " + panicMessage, cause ); dbpe.generateEvent( ErrorState.TX_MANAGER_NOT_OK, causeOfPanic ); }