DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
- Scenario 1 (same epoch, wrong sequence): No OutOfOrderSequenceException because Cluster Mirroring fetchers use REPLICATION as append origin and most checks are skipped because records . Batches are silently accepted under the same PID as they are coming from the leader (source of truth). Producers' batches are silently accepted under the same PID. The ProducerStateManager append origin == REPLICATION). The PID cache entry is updated with whatever arrives last. Silent data corruption with zero signals, not even a warning.
- Scenario 2 (different epochs): No fencing exception. Lower epoch batch is accepted with a warning log. Both producers coexist under the same PID. Silent corruption, only a WARN log line as a hint.
- Scenario 3 (transactional interleaving): Commit/abort markers from one producer close the other's transaction. No exception. Silent transaction corruption.
...
| Code Block |
|---|
A ----> C # phase 1: A's PID 5 = F(42,5) B ----> C # phase 2: B's PID 5 = F(99,5) A ----> C # phase 3: A's PID 5 = F(42,5) # same producer, same pid |
Collision detection
...
With this new approach, a PID collision requires two things to happen simultaneously:
...
Given the consequences, it is prudent to also add have a resolution strategy. We introduce the sourceClusterId optional field in ProducerSnapshot.json schema, bumping the version to 2. The sourceClusterId will be set only for mirrored PIDs, null for local producers.
...