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

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?

[3] https://issues.apache.org/jira/browse/IGNITE-8559
Maxim Muzafarov

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