diff --git a/.github/scripts/backwards_compatibility_check.sh b/.github/scripts/backwards_compatibility_check.sh index 070e9c17..03eee014 100755 --- a/.github/scripts/backwards_compatibility_check.sh +++ b/.github/scripts/backwards_compatibility_check.sh @@ -58,14 +58,18 @@ is_non_public_class() { return $? } -# Ignore methods that change from abstract to non-abstract (and vice versa) if the class is an interface. -ignore_abstract_changes_in_interfaces() { +# Ignore methods that change from abstract to non-abstract (and vice-versa) if the class is an interface.\ +# Ignore methods that change from synchronized to non-synchronized (and vice-versa) +ignore_non_breaking_changes() { local current_class="$1" local class_definition=$(javap -classpath "$LATEST_JAR" "$current_class" | head -2 | tail -1) if [[ $class_definition == *"interface"* ]] then - LATEST_METHODS=${LATEST_METHODS// abstract / } - CURRENT_METHODS=${CURRENT_METHODS// abstract / } + LATEST_METHODS=${LATEST_METHODS//abstract /} + CURRENT_METHODS=${CURRENT_METHODS//abstract /} + else + LATEST_METHODS=${LATEST_METHODS//synchronized /} + CURRENT_METHODS=${CURRENT_METHODS//synchronized /} fi } @@ -103,7 +107,7 @@ find_removed_methods() { LATEST_METHODS=$(javap -classpath "$LATEST_JAR" "$class") - ignore_abstract_changes_in_interfaces "$class" + ignore_non_breaking_changes "$class" local removed_methods=$(diff <(echo "$LATEST_METHODS") <(echo "$CURRENT_METHODS") | grep '^<') diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/assignment/LeaseAssignmentDecider.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/assignment/LeaseAssignmentDecider.java index a39866ae..66042651 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/assignment/LeaseAssignmentDecider.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/assignment/LeaseAssignmentDecider.java @@ -17,8 +17,10 @@ package software.amazon.kinesis.coordinator.assignment; import java.util.List; +import software.amazon.kinesis.annotations.KinesisClientInternalApi; import software.amazon.kinesis.leases.Lease; +@KinesisClientInternalApi public interface LeaseAssignmentDecider { /** diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/migration/MigrationClientVersionState.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/migration/MigrationClientVersionState.java index c1d8507e..c2e3feac 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/migration/MigrationClientVersionState.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/migration/MigrationClientVersionState.java @@ -14,11 +14,13 @@ */ package software.amazon.kinesis.coordinator.migration; +import software.amazon.kinesis.annotations.KinesisClientInternalApi; import software.amazon.kinesis.leases.exceptions.DependencyException; /** * Interface of a state implementation for the MigrationStateMachine */ +@KinesisClientInternalApi public interface MigrationClientVersionState { /** diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/migration/MigrationStateMachine.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/migration/MigrationStateMachine.java index 4698feb0..6dff4e0c 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/migration/MigrationStateMachine.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/migration/MigrationStateMachine.java @@ -14,6 +14,7 @@ */ package software.amazon.kinesis.coordinator.migration; +import software.amazon.kinesis.annotations.KinesisClientInternalApi; import software.amazon.kinesis.leases.exceptions.DependencyException; import software.amazon.kinesis.leases.exceptions.InvalidStateException; @@ -28,6 +29,7 @@ import software.amazon.kinesis.leases.exceptions.InvalidStateException; * 3. Instant roll-forwards - Once any issue has been mitigated, rollfowards are supported instantly * with KCL Migration tool. */ +@KinesisClientInternalApi public interface MigrationStateMachine { /** * Initialize the state machine by identifying the initial state when the KCL worker comes up for the first time. diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseDiscoverer.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseDiscoverer.java index 9f6ce776..6056d1fd 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseDiscoverer.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseDiscoverer.java @@ -17,10 +17,12 @@ package software.amazon.kinesis.leases; import java.util.List; +import software.amazon.kinesis.annotations.KinesisClientInternalApi; import software.amazon.kinesis.leases.exceptions.DependencyException; import software.amazon.kinesis.leases.exceptions.InvalidStateException; import software.amazon.kinesis.leases.exceptions.ProvisionedThroughputException; +@KinesisClientInternalApi public interface LeaseDiscoverer { /** * Identifies the leases that are assigned to the current worker but are not being tracked and processed by the