[
https://issues.apache.org/jira/browse/IGNITE-8593?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mo updated IGNITE-8593:
-----------------------
Description:
Scenario: Three servers (s1,s2,s3) two clients (c1,c2).
A semaphore with one permit is created.
Config:
{{1.Release acquired permits if node, that owned them, left topology: set to
false}}
2.
# 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?
was:
Scenario: Three servers (s1,s2,s3) two clients (c1,c2).
A semaphore with one permit is created.
Config: {{Release acquired permits if node, that owned them, left topology: set
to false}}
# 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?
> The semaphore's isBroken function doesn't work properly.
> --------------------------------------------------------
>
> Key: IGNITE-8593
> URL: https://issues.apache.org/jira/browse/IGNITE-8593
> Project: Ignite
> Issue Type: Bug
> Components: data structures
> Affects Versions: 2.4
> Reporter: Mo
> Priority: Minor
>
> Scenario: Three servers (s1,s2,s3) two clients (c1,c2).
> A semaphore with one permit is created.
> Config:
> {{1.Release acquired permits if node, that owned them, left topology: set to
> false}}
> 2.
> # 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?
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)