Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

All operations are idempotent by transaction ID:
- `beginTransaction(id)` - returns existing if already started
- `prepareTransaction(id)` - no-op if already prepared
- `commitTransaction(id)` - no-op if already committed
- `abortTransaction(id)` - no-op if already aborted/committed


6. Wire Protocol Details

...

TxnShareAcknowledgeRequest

```
ShareAcknowledgeTransactionalRequest => GroupId TransactionId [Topics]
  GroupId => STRING
  TransactionId => STRING
  Topics => TopicId [Partitions]
    Partitions => Partition [AcknowledgementBatches]
      AcknowledgementBatches => FirstOffset LastOffset AcknowledgeType
```

ShareBeginTransactionRequest

```
ShareBeginTransactionRequest => GroupId TransactionId TimeoutMs
  GroupId => STRING
  TransactionId => STRING
  TimeoutMs => INT64
```Use existing InitProducerIdRequest

SharePrepareTransactionRequest

```
SharePrepareTransactionRequest => GroupId TransactionId
  GroupId => STRING
  TransactionId => STRING
```

 Use existing EndTxnRequest

ShareCommitTransactionRequest / ShareAbortTransactionRequest

Handled by existing WriteTxnMarkersRequest (inter-broker) and  EndTxnRequest(ABORT)

AddShareAcksToTxnRequest

mirrors AddOffsetsToTxnRequest; This tells the TransactionCoordinator to add __share_group_state partitions to the producer's transaction.```
ShareCommitTransactionRequest => GroupId TransactionId
  GroupId => STRING
  TransactionId => STRING
```

Compatibility, Deprecation, and Migration Plan

...