@BreakpointHandler("readNextChunk") public static void onReadNextChunk(BreakPoint self, DebugInterface di) throws Exception { // Check because the interfering thread will trigger this too if (txCopyingThread != null && di.thread().name().equals(txCopyingThread.name())) { txCopyingThread.suspend(null); interferingThread.resume(); self.disable(); } }
@BreakpointHandler("setProperties") public static void handleSetProperties(BreakPoint self, DebugInterface di) { self.disable(); if (removerThread != null) { removerThread.resume(); removerThread = null; } readerThread = di.thread().suspend(DebuggerDeadlockCallback.RESUME_THREAD); }
@BreakpointHandler("makeSureNextTransactionIsFullyFetched") public static void onStartingStoreCopy( BreakPoint self, DebugInterface di, @BreakpointHandler("readNextChunk") BreakPoint onReadNextChunk) throws Exception { // Wait for the other thread to recycle the channel latch.await(); txCopyingThread = di.thread(); self.disable(); }
@BreakpointHandler(value = "commitPropertyMaps") public static void exitCommitPropertyMaps(BreakPoint self, DebugInterface di) { self.disable(); readerThread.resume(); readerThread = null; }