Mirza Aliev created IGNITE-13906:
------------------------------------

             Summary: Possible deadlock between methods from 
GridEncryptionManager
                 Key: IGNITE-13906
                 URL: https://issues.apache.org/jira/browse/IGNITE-13906
             Project: Ignite
          Issue Type: Bug
    Affects Versions: 2.9
            Reporter: Mirza Aliev


It seems that {{GridEncryptionManager}} uses {{metaStorageMux}} and 
{{checkpointReadLock}} in an inconsistent way.

Sometimes, the implementation acquires the mutex fist and then 
{{checkpointReadLock}}, sometimes vice versa, which may lead to a deadlock.

Let's consider the following scenario:

Thread-1: {{removeGroupKey}} acquired {{metaStorageMux}} and trying to get 
{{checkpointReadLock}} (cannot proceed further because of checkpointer)

Therad-2: {{doChangeMasterKey}} acquired {{checkpointReadLock}} and trying to 
get {{metaStorageMux}} (cannot proceed further due to thread-1)

Checkpointer-thread: trying to acquire the write lock (cannot get the lock due 
to thread-2)

 

Possible solutuion: acquire {{metaStorageMux}} before {{checkpointReadLock}} in 
{{doChangeMasterKey}} method

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to