Make GridEncryptionManager#onWalSegmentRemoved async

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Make GridEncryptionManager#onWalSegmentRemoved async

Kirill Tkalenko
Hello to all!

When implementing IGNITE-13831 I was faced with deadlock.

When execute FileWriteAheadLogManager#rollOver, begin to clean WAL archive since we have reached the DataStorageConfiguration#maxWalArchiveSize, after deleting a segment, execute the GridEncryptionManager#onWalSegmentRemoved that wants to write to the metastore, but it will not succeed, since it will wait for FileWriteAheadLogManager#rollOver.

I suggest making the GridEncryptionManager#onWalSegmentRemoved asynchronous in a separate pool, for example, as a CacheGroupPageScanner#singleExecSvc.
Reply | Threaded
Open this post in threaded view
|

Re: Make GridEncryptionManager#onWalSegmentRemoved async

Pavel Pereslegin
Hello, Kirill!

Personally, I see no problem with this improvement. Please check my
comment in IGNITE-13831 [1] on the implementation of this change.

[1] https://issues.apache.org/jira/browse/IGNITE-13831

пт, 11 дек. 2020 г. в 13:23, ткаленко кирилл <[hidden email]>:
>
> Hello to all!
>
> When implementing IGNITE-13831 I was faced with deadlock.
>
> When execute FileWriteAheadLogManager#rollOver, begin to clean WAL archive since we have reached the DataStorageConfiguration#maxWalArchiveSize, after deleting a segment, execute the GridEncryptionManager#onWalSegmentRemoved that wants to write to the metastore, but it will not succeed, since it will wait for FileWriteAheadLogManager#rollOver.
>
> I suggest making the GridEncryptionManager#onWalSegmentRemoved asynchronous in a separate pool, for example, as a CacheGroupPageScanner#singleExecSvc.
Reply | Threaded
Open this post in threaded view
|

Re: Make GridEncryptionManager#onWalSegmentRemoved async

Kirill Tkalenko
Hi, Pavel!

I think we can use the system pool as well. I think it would be more correct to do it in a separate ticket. Thanks!

11.12.2020, 16:16, "Pavel Pereslegin" <[hidden email]>:

> Hello, Kirill!
>
> Personally, I see no problem with this improvement. Please check my
> comment in IGNITE-13831 [1] on the implementation of this change.
>
> [1] https://issues.apache.org/jira/browse/IGNITE-13831
>
> пт, 11 дек. 2020 г. в 13:23, ткаленко кирилл <[hidden email]>:
>>  Hello to all!
>>
>>  When implementing IGNITE-13831 I was faced with deadlock.
>>
>>  When execute FileWriteAheadLogManager#rollOver, begin to clean WAL archive since we have reached the DataStorageConfiguration#maxWalArchiveSize, after deleting a segment, execute the GridEncryptionManager#onWalSegmentRemoved that wants to write to the metastore, but it will not succeed, since it will wait for FileWriteAheadLogManager#rollOver.
>>
>>  I suggest making the GridEncryptionManager#onWalSegmentRemoved asynchronous in a separate pool, for example, as a CacheGroupPageScanner#singleExecSvc.
Reply | Threaded
Open this post in threaded view
|

Re: Make GridEncryptionManager#onWalSegmentRemoved async

Kirill Tkalenko
Hi, Pavel!

I created a IGNITE-13847, but I was unable to create a PR from your branch.


13.12.2020, 18:35, "ткаленко кирилл" <[hidden email]>:

> Hi, Pavel!
>
> I think we can use the system pool as well. I think it would be more correct to do it in a separate ticket. Thanks!
>
> 11.12.2020, 16:16, "Pavel Pereslegin" <[hidden email]>:
>>  Hello, Kirill!
>>
>>  Personally, I see no problem with this improvement. Please check my
>>  comment in IGNITE-13831 [1] on the implementation of this change.
>>
>>  [1] https://issues.apache.org/jira/browse/IGNITE-13831
>>
>>  пт, 11 дек. 2020 г. в 13:23, ткаленко кирилл <[hidden email]>:
>>>   Hello to all!
>>>
>>>   When implementing IGNITE-13831 I was faced with deadlock.
>>>
>>>   When execute FileWriteAheadLogManager#rollOver, begin to clean WAL archive since we have reached the DataStorageConfiguration#maxWalArchiveSize, after deleting a segment, execute the GridEncryptionManager#onWalSegmentRemoved that wants to write to the metastore, but it will not succeed, since it will wait for FileWriteAheadLogManager#rollOver.
>>>
>>>   I suggest making the GridEncryptionManager#onWalSegmentRemoved asynchronous in a separate pool, for example, as a CacheGroupPageScanner#singleExecSvc.