Release 36.0.0-deepbi2
·
96 commits
to master
since this release
Fixes
Fixed a race condition in off-heap cached lookups
Lookup usage is now safer during concurrent query execution and lookup refresh.
Previously, a query could keep using a lookup cache entry while a lookup refresh had already replaced and deleted that entry from mmap-backed storage. This could make in-flight lookup queries reference disposed off-heap data.
The fix adds lookup cache retirement: old cache entries are kept alive while queries still reference them and are deleted only after those references are released.
Retained lookup extractors are used across lookup query paths, including registered lookup extraction functions, lookup dimension specs, lookup joins, and lookup segment iteration.
Configuration
| Property | Description | Default |
|---|---|---|
druid.lookup.namespace.maxRetiredCacheEntries |
The maximum number of retired cache versions that may be kept while still referenced by running queries. If the limit is reached, future cache refreshes may be skipped until retired entries are released or expire. | 1 |
druid.lookup.namespace.retiredCacheEntryTimeoutMillis |
The amount of time after retirement before a retained cache version may be disposed, even if its retained references have not been closed yet. This prevents abandoned retained references from blocking future cache refreshes indefinitely. | 900,000 |
Note: This release includes all fixes and improvements from previous 36.0.0-deepbiX releases.