@Override public InitProducerIdRequest build(short version) { return new InitProducerIdRequest(version, transactionalId, transactionTimeoutMs); }
@Override public boolean matches(AbstractRequest body) { return body instanceof InitProducerIdRequest && ((InitProducerIdRequest) body).transactionalId() == null; } }, new InitProducerIdResponse(0, error, producerId, producerEpoch));
private void prepareInitPidResponse(Errors error, boolean shouldDisconnect, long pid, short epoch) { client.prepareResponse(body -> { InitProducerIdRequest initProducerIdRequest = (InitProducerIdRequest) body; assertEquals(initProducerIdRequest.transactionalId(), transactionalId); assertEquals(initProducerIdRequest.transactionTimeoutMs(), transactionTimeoutMs); return true; }, new InitProducerIdResponse(0, error, pid, epoch), shouldDisconnect); }
@Override protected Struct toStruct() { Struct struct = new Struct(ApiKeys.INIT_PRODUCER_ID.requestSchema(version())); struct.set(NULLABLE_TRANSACTIONAL_ID, transactionalId); struct.set(TRANSACTION_TIMEOUT_KEY_NAME, transactionTimeoutMs); return struct; }
@Test public void testUnsupportedInitTransactions() { transactionManager.initializeTransactions(); prepareFindCoordinatorResponse(Errors.NONE, false, CoordinatorType.TRANSACTION, transactionalId); sender.run(time.milliseconds()); // InitProducerRequest is queued sender.run(time.milliseconds()); // FindCoordinator is queued after peeking InitProducerRequest assertFalse(transactionManager.hasError()); assertNotNull(transactionManager.coordinator(CoordinatorType.TRANSACTION)); client.prepareUnsupportedVersionResponse(body -> { InitProducerIdRequest initProducerIdRequest = (InitProducerIdRequest) body; assertEquals(initProducerIdRequest.transactionalId(), transactionalId); assertEquals(initProducerIdRequest.transactionTimeoutMs(), transactionTimeoutMs); return true; }); sender.run(time.milliseconds()); // InitProducerRequest is dequeued assertTrue(transactionManager.hasFatalError()); assertTrue(transactionManager.lastError() instanceof UnsupportedVersionException); }
public static InitProducerIdRequest parse(ByteBuffer buffer, short version) { return new InitProducerIdRequest(ApiKeys.INIT_PRODUCER_ID.parseRequest(version, buffer), version); }
return new DeleteRecordsRequest(struct, apiVersion); case INIT_PRODUCER_ID: return new InitProducerIdRequest(struct, apiVersion); case OFFSET_FOR_LEADER_EPOCH: return new OffsetsForLeaderEpochRequest(struct, apiVersion);