[ 
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)

Reply via email to