GemFire: Set EXPIRY_THREADS when using expiration feature
search cancel

GemFire: Set EXPIRY_THREADS when using expiration feature

book

Article ID: 294463

calendar_today

Updated On:

Products

VMware Tanzu Gemfire

Issue/Introduction

We have discovered an issue in current GemFire products where it is possible to lose expiration related messages.   The symptoms will be that expiration will potentially stop expiring entries, driving higher entry counts and higher heap consumption, resulting in potential GC issues, membership issues, and negative business impact.

Environment

Product Version: 9.15
OS: ALL

Resolution

We are already investigating potential candidate fixes for this issue.  That said, we already do have an easy way to greatly reduce chances of being impacted by any such lost expiration message.

GemFire has a system property:   gemfire.EXPIRY_THREADS

If you set this value to any value greater than 1, you would be protected from any single lost message.   Essentially, the higher you set the number of expiration threads, the more protection you have from being impacted.   In other words, if one such thread becomes blocked irreparably due to a lost message, you will still have other expiry threads continuing to expire entries.

GemFire also has plans to change the default of gemfire.EXPIRY_THREADS going forward, purely as an additional protection, ever as we will also fix our known lost message issue.

The recommendation is to set gemfire.EXPIRY_THREADS=3 going forward to protect you, until we alter the default, and eliminate our known timing/race condition issue driving this bad behavior.