Details
-
Bug
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
2.4
-
None
-
None
Description
Scenario: Three servers (s1,s2,s3) two clients (c1,c2).
A semaphore with one permit is created.
Config:
1. Release acquired permits if the node that owned them left topology: set to false
2. TCP discovery mode: off
steps:
- c2 acquires the permit.
- Network failure happens, isolating c2 from the rest of nodes for a period of time.
- Network heals.
- c2 releases the permit.
- c2 acquires the permit.
- Calling semaphore.isBroken() returns false on both c1 and c2.
- c1 tries to acquire the permit but fails.
- Now calling isBroken() returns true on both c1 and c2.
I think isBroken() should return true before a client tries to acquire a permit, and then fails (i.e., in step 6) rather than after acquiring a permit fails, as in the latter case, what purpose does the isBroken() function serves?