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

[BACKPORT] Add system property to process WAN map remove events as delete #11178

Conversation

mmedenjak
Copy link
Contributor

@mmedenjak mmedenjak commented Aug 21, 2017

If the receiving cluster does not have a class defined in it's
classloader and uses the BINARY in-memory format, we can run into
ClassNotFoundException. The entry will be removed nevertheless but the
event processing will be flagged as failed and the ACTIVE cluster will
try and resend the WAN event. The second time it is sent, there
will be no entry with that key. This does not cause consistency
issues but performance issues since the WAN event operation is sent
twice.

We introduce a new system property to use delete instead of remove
when processing remove events. This will not avoid the
ClassNotFoundException since the delete operation does not try to
return the old value.

The system property is false by default, meaning it retains the old
behaviour unless explicitly set to true.

This new property also has the performance benefit that it does not
copy the old value from the partition owner. The WAN event processing
code does not use the returned value which makes the old value
unnecessary.

Fixes : https://github.com/hazelcast/hazelcast-enterprise/issues/1636
EE : https://github.com/hazelcast/hazelcast-enterprise/pull/1644

If the receiving cluster does not have a class defined in it's
classloader and uses the BINARY in-memory format, we can run into
ClassNotFoundException. The entry will be removed nevertheless but the
event processing will be flagged as failed and the ACTIVE cluster will
try and resend the WAN event. The second time it is sent, there
will be no entry with that key. This does not cause consistency
issues but performance issues since the WAN event operation is sent
twice.

We introduce a new system property to use delete instead of remove
when processing remove events. This will not avoid the
ClassNotFoundException since the delete operation does not try to
return the old value.

The system property is false by default, meaning it retains the old
behaviour unless explicitly set to true.

This new property also has the performance benefit that it does not
copy the old value from the partition owner. The WAN event processing
 code does not use the returned value which makes the old value
 unnecessary.

Fixes : https://github.com/hazelcast/hazelcast-enterprise/issues/1636
@mmedenjak mmedenjak merged commit 063b856 into hazelcast:maintenance-3.x Aug 28, 2017
@mmedenjak mmedenjak deleted the wan-passive-classnotfound-backport branch August 28, 2017 07:03
@mmedenjak mmedenjak added the Source: Internal PR or issue was opened by an employee label Apr 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Source: Internal PR or issue was opened by an employee Team: Core Type: Defect
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants