ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Maxim Muzafarov <maxmu...@gmail.com>
Subject [QUESTION] SegmentAware holder initialization (fix of WAL blocked rollOver)
Date Fri, 28 Sep 2018 13:05:46 GMT
Igniters,

I would like to discuss this question here and create a separate topic for
it. Previously, I've posted some comments on the probable issue in Apache
Ignite 2.7 topic [2]. My question is related to the IGNITE-8559 [3] (commit
[4]). We've added a new SegmentAware class and change the
FileWriteAheadLogManager behaviour.


The FileWriteAheadLogManager now contains:

`private final SegmentAware segmentAware;`.

The SegmentAware have the `interrupt()` method which at manager
de-activation sets (e.g. for SegmentArchivedStorage) `interrupted` filed to
`true` value [5] but never revert it to `false` after activation. So, the
SegmentArchivedStorage after de-activation always remain interrupted.

I think it can lead us to unpredictable issues with multiple cluster
activation/de-activation. I don't know why all tests in master branch
suppose to be successful but in my local branch, they hang on exchange
future get() method.

My local solution (probably not ideal) is:
1) make it volatile - `private volatile SegmentAware segmentAware;`
2) move field init to the `start0()` method of FileWriteAheadLogManager;

With these changes, everything begins to work fine but I can miss something
because I don’t understand the whole this change well enough.

Can anyone comment on this and share details IGNITE-8559 implementation?


[1]
https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java#L319
[2]
http://apache-ignite-developers.2346864.n4.nabble.com/Apache-Ignite-2-7-release-tp34076p35863.html
[3] https://issues.apache.org/jira/browse/IGNITE-8559
[4]
https://github.com/apache/ignite/commit/2f72fe758d4256c4eb4610e5922ad3d174b43dc5
[5]
https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/aware/SegmentArchivedStorage.java#L117
-- 
--
Maxim Muzafarov

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message