ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tim Onyschak (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (IGNITE-7090) Semaphore Stuck when no acquirers to assign permit
Date Wed, 24 Jan 2018 04:09:00 GMT

    [ https://issues.apache.org/jira/browse/IGNITE-7090?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16336865#comment-16336865
] 

Tim Onyschak edited comment on IGNITE-7090 at 1/24/18 4:08 AM:
---------------------------------------------------------------

[~vladisav] I agree, this is a better approach. However, from what i see in DataStructuresProcessor#semaphore()
only get executed on the first time. In getAtomic if it exists it would be returned prior
to the closure being executed. So just wondering what you would suggest for gaining access
to GridCacheSemaphoreState. Seems to be a bit of hoops to get with in the semaphore method,
outside of the closure. It was getting ugly when i was trying, but i could be missing something.

2 thoughts i have
 # In the getAtomic, prior to the return of an existing datastructure, check for a type of
DS. If the DS implements a new or existing interface, we can run a validation and execute
onNodeRemoved for any node found to be removed.
 # Add new interface that will abstract the validation within the Datastructure itself which
can then validate from with in the Datastructures them self?

Might be a question of where/how we want to do it, but will like to hear what you have to
say. I think i like option 2, which can be bit more generic and i am not sure if other datastructures
would want to run other logic. Thoughts?

 


was (Author: timay):
[~vladisav] I agree, this is a better approach. However, from what i see in DataStructuresProcessor#semaphore()
only get executed on the first time. In getAtomic if it exists it would be returned prior
to the closure being executed. So just wondering what you would suggest for gaining access
to GridCacheSemaphoreState. Seems to be a bit of hoops to get with in the semaphore method,
outside of the closure. It was getting ugly when i was trying, but i could be missing something.


2 thoughts i have
In the getAtomic, prior to the return of an existing datastructure, check for a type of DS.
If the DS implements a new or existing interface, we can run a validation and execute onNodeRemoved
for any node found to be removed. Add new interface that will abstract the validation within
the Datastructure itself which can then validate from with in the Datastructures them self?

Might be a question of where/how we want to do it, but will like to hear what you have to
say. I think i like option 2, which can be bit more generic and i am not sure if other datastructures
would want to run other logic. Thoughts?

 

> Semaphore Stuck when no acquirers to assign permit
> --------------------------------------------------
>
>                 Key: IGNITE-7090
>                 URL: https://issues.apache.org/jira/browse/IGNITE-7090
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache, data structures
>    Affects Versions: 2.1, 2.4
>            Reporter: Tim Onyschak
>            Priority: Major
>             Fix For: 2.5
>
>         Attachments: SemaphoreFailoverNoWaitingAcquirerTest.java
>
>
> If no acquirers are available to take permit of semaphore, the permit never gets release
and any further acquirerers will wait forever. 
> On node shut down DataStructuresProcessor.dsMap gets cleared out prior to event listener
being able to execute onNodeRemoved, hence owner is never cleared out if it was unable to
pass to a different acquirer. 
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message