[
https://issues.apache.org/jira/browse/IGNITE-10680?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16721078#comment-16721078
]
ASF GitHub Bot commented on IGNITE-10680:
-----------------------------------------
GitHub user alex-plekhanov opened a pull request:
https://github.com/apache/ignite/pull/5669
IGNITE-10680 Add the ability to use existing kernel context in standalone
WAL iterator
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/alex-plekhanov/ignite ignite-10680
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/ignite/pull/5669.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #5669
----
commit 659cd31cce85aebdc097c20f807d5b1cd4ef476b
Author: Aleksey Plekhanov <plehanov.alex@...>
Date: 2018-12-14T09:01:19Z
IGNITE-10680 Add the ability to use existing kernel context in standalone
WAL iterator
----
> Add the ability to use existing kernel context in standalone WAL iterator
> -------------------------------------------------------------------------
>
> Key: IGNITE-10680
> URL: https://issues.apache.org/jira/browse/IGNITE-10680
> Project: Ignite
> Issue Type: Improvement
> Affects Versions: 2.7
> Reporter: Aleksey Plekhanov
> Assignee: Aleksey Plekhanov
> Priority: Major
> Fix For: 2.8
>
>
> In the current implementation it's only possible to use fake kernel context
> in standalone WAL iterator. If we need to use binary meta from the running
> Ignite node we must specify binary meta directory in parameters of standalone
> WAL iterator factory. But there is a possible race with binary meta files
> read/write since binary meta received with {{MetadataUpdateProposedMessage}}
> can be written to the file and concurrently read from the same file at the
> same time. This can lead to assertions like the following:
> {noformat}
> java.lang.AssertionError
> at
> org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:305)
> at
> org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:121)
> at
> org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:94)
> at
> org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10103)
> at
> org.apache.ignite.internal.processors.cache.binary.BinaryMetadataFileStore.restoreMetadata(BinaryMetadataFileStore.java:117)
> at
> org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.start(CacheObjectBinaryProcessorImpl.java:251)
> at
> org.apache.ignite.internal.processors.cache.persistence.wal.reader.StandaloneGridKernalContext.binaryProcessor(StandaloneGridKernalContext.java:180)
> at
> org.apache.ignite.internal.processors.cache.persistence.wal.reader.StandaloneGridKernalContext.<init>(StandaloneGridKernalContext.java:155)
> at
> org.apache.ignite.internal.processors.cache.persistence.wal.reader.IgniteWalIteratorFactory.prepareSharedCtx(IgniteWalIteratorFactory.java:359)
> at
> org.apache.ignite.internal.processors.cache.persistence.wal.reader.IgniteWalIteratorFactory.iterator(IgniteWalIteratorFactory.java:177)
> {noformat}
> To solve this we can use in standalone WAL iterator existing kernel context
> of the started node instead of creating new fake one.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)