Skip to content

Commit 3facf30

Browse files
authored
Fix checkpointOwner copy issue for multistream lease (#1401)
1 parent b154acf commit 3facf30

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/Lease.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ protected Lease(Lease lease) {
163163
lease.childShardIds(),
164164
lease.pendingCheckpointState(),
165165
lease.hashKeyRangeForLease());
166+
checkpointOwner(lease.checkpointOwner);
166167
}
167168

168169
@Deprecated
@@ -458,8 +459,6 @@ public void leaseOwner(String leaseOwner) {
458459
* @return A deep copy of this object.
459460
*/
460461
public Lease copy() {
461-
final Lease lease = new Lease(this);
462-
lease.checkpointOwner(this.checkpointOwner);
463-
return lease;
462+
return new Lease(this);
464463
}
465464
}

amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseTest.java

+10
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.mockito.runners.MockitoJUnitRunner;
1111
import software.amazon.kinesis.retrieval.kpl.ExtendedSequenceNumber;
1212

13+
import static org.junit.Assert.assertEquals;
1314
import static org.junit.Assert.assertFalse;
1415
import static org.junit.Assert.assertTrue;
1516

@@ -109,6 +110,15 @@ public void testIsEligibleForGracefulShutdownFalse_shutdownRequested_assertFalse
109110
assertFalse(shutdownRequestedLease.isEligibleForGracefulShutdown());
110111
}
111112

113+
@Test
114+
public void testCopyingLease() {
115+
final String checkpointOwner = "checkpointOwner";
116+
final Lease original = new Lease();
117+
original.checkpointOwner(checkpointOwner);
118+
final Lease copy = original.copy();
119+
assertEquals(checkpointOwner, copy.checkpointOwner());
120+
}
121+
112122
private static Lease createLease(String leaseOwner, String leaseKey, long lastCounterIncrementNanos) {
113123
final Lease lease = new Lease();
114124
lease.checkpoint(new ExtendedSequenceNumber("checkpoint"));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package software.amazon.kinesis.leases;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
7+
class MultiStreamLeaseTest {
8+
9+
@Test
10+
void testCopyingMultiStreamLease() {
11+
final String checkpointOwner = "checkpointOwner";
12+
final MultiStreamLease original = new MultiStreamLease();
13+
original.checkpointOwner(checkpointOwner);
14+
original.streamIdentifier("identifier");
15+
original.shardId("shardId");
16+
final MultiStreamLease copy = original.copy();
17+
assertEquals(checkpointOwner, copy.checkpointOwner());
18+
}
19+
}

0 commit comments

Comments
 (0)