[ 
https://issues.apache.org/jira/browse/CASSANDRA-21497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

C. Scott Andreas updated CASSANDRA-21497:
-----------------------------------------
    Description: 
On trunk at {{{}1332e217{}}}, 
{{PlacementsChangeListenerTest#testPlacementChange}} fails intermittently with 
"Conflicting replica added (expected unique endpoints)".

testPlacementChange builds random placements with 
OwnershipUtils.randomPlacements, then for each range removes the first write 
replica and adds a replica for endpoint .99 at that range.

randomPlacements assigns replicas via MembershipUtils.randomEndpoint, which 
returns 127.0.0.[1..254]. Endpoint .99 is inside that domain, so a range's 
write group can already contain it; removing a different replica and then 
adding endpoint 99 produces a duplicate, and EndpointsForRange.Builder rejects 
it.

The seed is System.nanoTime(), so the failure appears at a low rate. A search 
over 200,000 seeds reproduced it on 2,447 of them (about 1.2%).

The current test adds a full replica at endpoint .99:
`Replica add = Replica.fullReplica(MembershipUtils.endpoint(99), 
remove.range());`

Either excluding .99 from the domain selected for other replicas; or 
restricting the domain such that a valid address exists above the domain could 
be reasonable approaches to prevent the flake.

To reproduce this failure locally, seed OwnershipUtils#randomPlacements with 
j.u.Random(135L):

{{DataPlacements before = OwnershipUtils.randomPlacements(new 
java.util.Random(135L)).withLastModified(e);}}

Then run: {{ant test -Dtest.name=PlacementsChangeListenerTest}}

The test will fail with:
{{}}

{{testPlacementChange errors with java.lang.IllegalArgumentException: 
Conflicting replica added (expected unique endpoints): 
Full(/127.0.0.99:7000,...); existing: Full(/127.0.0.99:7000,...).}}

  was:
On trunk at {{{}1332e217{}}}, 
{{PlacementsChangeListenerTest#testPlacementChange}} fails intermittently with 
"Conflicting replica added (expected unique endpoints)".

testPlacementChange builds random placements with 
OwnershipUtils.randomPlacements, then for each range removes the first write 
replica and adds a replica for endpoint .99 at that range.

randomPlacements assigns replicas via MembershipUtils.randomEndpoint, which 
returns 127.0.0.[1..254]. Endpoint .99 is inside that domain, so a range's 
write group can already contain it; removing a different replica and then 
adding endpoint 99 produces a duplicate, and EndpointsForRange.Builder rejects 
it.

The seed is System.nanoTime(), so the failure appears at a low rate. A search 
over 200,000 seeds reproduced it on 2,447 of them (about 1.2%).

The current test adds a full replica at endpoint .99:
`Replica add = Replica.fullReplica(MembershipUtils.endpoint(99), 
remove.range());`

Either excluding .99 from the domain selected for other replicas; or 
restricting the domain such that a valid address exists above the domain could 
be reasonable approaches to prevent the flake.

To reproduce this failure locally, seed OwnershipUtils#randomPlacements with 
j.u.Random(135L):

{{DataPlacements before = OwnershipUtils.randomPlacements(new 
java.util.Random(135L)).withLastModified(e);}}

Then run: {{ant test -Dtest.name=PlacementsChangeListenerTest}}

The test will fail with:
{{testPlacementChange errors with java.lang.IllegalArgumentException: 
Conflicting replica added (expected unique endpoints): 
Full(/127.0.0.99:7000,...); existing: Full(/127.0.0.99:7000,...).}}


> Flaky test: Reproducible failing seed in 
> PlacementsChangeListenerTest#testPlacementChange
> -----------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-21497
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21497
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Transactional Cluster Metadata
>            Reporter: C. Scott Andreas
>            Assignee: Sam Tunnicliffe
>            Priority: Normal
>
> On trunk at {{{}1332e217{}}}, 
> {{PlacementsChangeListenerTest#testPlacementChange}} fails intermittently 
> with "Conflicting replica added (expected unique endpoints)".
> testPlacementChange builds random placements with 
> OwnershipUtils.randomPlacements, then for each range removes the first write 
> replica and adds a replica for endpoint .99 at that range.
> randomPlacements assigns replicas via MembershipUtils.randomEndpoint, which 
> returns 127.0.0.[1..254]. Endpoint .99 is inside that domain, so a range's 
> write group can already contain it; removing a different replica and then 
> adding endpoint 99 produces a duplicate, and EndpointsForRange.Builder 
> rejects it.
> The seed is System.nanoTime(), so the failure appears at a low rate. A search 
> over 200,000 seeds reproduced it on 2,447 of them (about 1.2%).
> The current test adds a full replica at endpoint .99:
> `Replica add = Replica.fullReplica(MembershipUtils.endpoint(99), 
> remove.range());`
> Either excluding .99 from the domain selected for other replicas; or 
> restricting the domain such that a valid address exists above the domain 
> could be reasonable approaches to prevent the flake.
> To reproduce this failure locally, seed OwnershipUtils#randomPlacements with 
> j.u.Random(135L):
> {{DataPlacements before = OwnershipUtils.randomPlacements(new 
> java.util.Random(135L)).withLastModified(e);}}
> Then run: {{ant test -Dtest.name=PlacementsChangeListenerTest}}
> The test will fail with:
> {{}}
> {{testPlacementChange errors with java.lang.IllegalArgumentException: 
> Conflicting replica added (expected unique endpoints): 
> Full(/127.0.0.99:7000,...); existing: Full(/127.0.0.99:7000,...).}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to