void fatalError(RuntimeException e) { result.setError(e); transitionToFatalError(e); result.done(); }
@Test(expected = KafkaException.class) public void testMaybeAddPartitionToTransactionAfterFatalError() { long pid = 13131L; short epoch = 1; doInitTransactions(pid, epoch); transactionManager.transitionToFatalError(new KafkaException()); transactionManager.maybeAddPartitionToTransaction(new TopicPartition("foo", 0)); }
log.debug("Retriable error from InitProducerId response", error.message()); } else { transactionManager.transitionToFatalError(error.exception()); break; transactionManager.transitionToFatalError(e); break; } catch (IOException e) {
@Test(expected = KafkaException.class) public void testFailIfNotReadyForSendIdempotentProducerFatalError() { TransactionManager idempotentTransactionManager = new TransactionManager(); idempotentTransactionManager.transitionToFatalError(new KafkaException()); idempotentTransactionManager.failIfNotReadyForSend(); }
@Test(expected = KafkaException.class) public void testFailIfNotReadyForSendAfterFatalError() { long pid = 13131L; short epoch = 1; doInitTransactions(pid, epoch); transactionManager.transitionToFatalError(new KafkaException()); transactionManager.failIfNotReadyForSend(); }
|| exception instanceof ProducerFencedException || exception instanceof UnsupportedVersionException) { transactionManager.transitionToFatalError(exception); } else if (transactionManager.isTransactional()) { transactionManager.transitionToAbortableError(exception);
@Test public void testIsSendToPartitionAllowedWithPendingPartitionAfterFatalError() { final long pid = 13131L; final short epoch = 1; doInitTransactions(pid, epoch); transactionManager.beginTransaction(); transactionManager.maybeAddPartitionToTransaction(tp0); transactionManager.transitionToFatalError(new KafkaException()); assertFalse(transactionManager.isSendToPartitionAllowed(tp0)); assertTrue(transactionManager.hasFatalError()); }
transactionManager.transitionToFatalError( new KafkaException("The client hasn't received acknowledgment for " + "some previously sent messages and can no longer retry them. It isn't safe to continue."));
@Test public void testIsSendToPartitionAllowedWithInFlightPartitionAddAfterFatalError() { final long pid = 13131L; final short epoch = 1; doInitTransactions(pid, epoch); transactionManager.beginTransaction(); transactionManager.maybeAddPartitionToTransaction(tp0); // Send the AddPartitionsToTxn request and leave it in-flight sender.run(time.milliseconds()); transactionManager.transitionToFatalError(new KafkaException()); assertFalse(transactionManager.isSendToPartitionAllowed(tp0)); assertTrue(transactionManager.hasFatalError()); }
@Test public void testHasOngoingTransactionFatalError() { long pid = 13131L; short epoch = 1; TopicPartition partition = new TopicPartition("foo", 0); assertFalse(transactionManager.hasOngoingTransaction()); doInitTransactions(pid, epoch); assertFalse(transactionManager.hasOngoingTransaction()); transactionManager.beginTransaction(); assertTrue(transactionManager.hasOngoingTransaction()); transactionManager.maybeAddPartitionToTransaction(partition); assertTrue(transactionManager.hasOngoingTransaction()); prepareAddPartitionsToTxn(partition, Errors.NONE); sender.run(time.milliseconds()); transactionManager.transitionToFatalError(new KafkaException()); assertFalse(transactionManager.hasOngoingTransaction()); }
@Test public void testIsSendToPartitionAllowedWithAddedPartitionAfterFatalError() { final long pid = 13131L; final short epoch = 1; doInitTransactions(pid, epoch); transactionManager.beginTransaction(); transactionManager.maybeAddPartitionToTransaction(tp0); prepareAddPartitionsToTxnResponse(Errors.NONE, tp0, epoch, pid); sender.run(time.milliseconds()); assertFalse(transactionManager.hasPartitionsToAdd()); transactionManager.transitionToFatalError(new KafkaException()); assertFalse(transactionManager.isSendToPartitionAllowed(tp0)); assertTrue(transactionManager.hasFatalError()); }