Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix race condition when serializing the write task closure #46

Merged
merged 3 commits into from
Mar 13, 2023

Conversation

akudiyar
Copy link
Collaborator

The object with race condition was the tuple mapper, which is apparently changed by
different threads using the same RDD for different Tarantool spaces.

With this patch, it will be not more possible to use a custom mapper, but the
proper implementation of that feature needs now fixing the mapper race
condition possibility in the driver and re-implementing passing the
mapper without implicits.

May be related:

Fixes #45

akudiyar added 3 commits March 1, 2023 18:42
Highly loaded and concurrent Spark environment produced some strange
OptionalDataException errors when deserializing the write tasks.
That appeared to be a problem with an object that is changed concurrently
while being serialized, thus resulting in corrupted serialized data.

Using some deduction and exclusion, it became clear that the object with
such race condition is the mapper, which is apparently changed by
different threads using the same RDD for different Tarantool spaces.

With this patch it is not more possible to use a custom mapper, but the
proper implementation of that feature needs now fixing the mapper race
condition possibility in the driver and re-implementing passing the
mapper without implicits.
The latest netty and driver versions introduced a dependency conflict.
@akudiyar akudiyar merged commit d6b3269 into master Mar 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

OptionalDataException when deserializing the task closure
1 participant