# ES 8.6 - High contention over Global Ordingals Field Data for terms aggregation under load

**URL:** <https://discuss.elastic.co/t/es-8-6-high-contention-over-global-ordingals-field-data-for-terms-aggregation-under-load/368525>\
**Category:** Elasticsearch\
**Created:** [October 9, 2024, 12:33pm UTC](https://discuss.elastic.co/t/es-8-6-high-contention-over-global-ordingals-field-data-for-terms-aggregation-under-load/368525 "2024-10-09T12:33:31Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mikhail\_Khludnev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mikhail_khludnev/32/59591_2.png) [@Mikhail\_Khludnev](https://discuss.elastic.co/u/Mikhail_Khludnev)\
**Post date:** [October 9, 2024, 12:33pm UTC](https://discuss.elastic.co/t/es-8-6-high-contention-over-global-ordingals-field-data-for-terms-aggregation-under-load/368525/1 "2024-10-09T12:33:32Z")

</div>

Hello  
Under a moderate load (mostly filtering and massive terms aggregation) I see "benign" hot\_threads ie

```auto
..8.6..index.fielddata.ordinals.GlobalOrdinalMapping.lookupOrd(GlobalOrdinalMapping.java:71)
..8.6..index.mapper.flattened.KeyedFlattenedLeafFieldData.findMinOrd(KeyedFlattenedLeafFieldData.java:102)
..8.6..index.mapper.flattened.KeyedFlattenedLeafFieldData.getOrdinalsValues(KeyedFlattenedLeafFieldData.java:64)
..8.6..search.aggregations.support.ValuesSource$Bytes$WithOrdinals$FieldData.globalOrdinalsValues(ValuesSource.java:287)
..8.6..search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.getLeafCollector(GlobalOrdinalsStringTermsAggregator.java:111)

```

However under a certain rate threads stuck at the same lock :

```auto
java.base@19.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@19.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221)
java.base@19.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:715)
java.base@19.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:938)
java.base@19.0.1/java.util.concurrent.locks.ReentrantLock$Sync.lock(ReentrantLock.java:153)
java.base@19.0.1/java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:322)
..8.6....common.util.concurrent.ReleasableLock.acquire(ReleasableLock.java:43)
..8.6....common.cache.Cache.promote(Cache.java:739)
..8.6....common.cache.Cache.get(Cache.java:354)
..8.6....common.cache.Cache.computeIfAbsent(Cache.java:376)
..8.6....indices.fielddata.cache.IndicesFieldDataCache$IndexFieldCache.load(IndicesFieldDataCache.java:162)
..8.6....index.fielddata.plain.AbstractIndexOrdinalsFieldData.loadGlobalInternal(AbstractIndexOrdinalsFieldData.java:127)
..8.6....index.fielddata.plain.AbstractIndexOrdinalsFieldData.loadGlobal(AbstractIndexOrdinalsFieldData.java:93)
..8.6....index.mapper.flattened.FlattenedFieldMapper$KeyedFlattenedFieldData.loadGlobal(FlattenedFieldMapper.java:532)
..8.6....search.aggregations.support.ValuesSource$Bytes$WithOrdinals$FieldData.globalOrdinalsValues(ValuesSource.java:285)
..8.6....search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.getLeafCollector(GlobalOrdinalsStringTermsAggregator.java:111)

```

Am I right that it check global ordinals field data for eviction?  
if so, how I can bypass that, since I don't need ever evict global ordinals.  
I'm aware about `map` hint. Isn't there fixes in the recent version?  
Thanks

---

<div class="post-metadata">

**Author:** ![Mikhail\_Khludnev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mikhail_khludnev/32/59591_2.png) [@Mikhail\_Khludnev](https://discuss.elastic.co/u/Mikhail_Khludnev)\
**Post date:** [October 10, 2024, 8:33am UTC](https://discuss.elastic.co/t/es-8-6-high-contention-over-global-ordingals-field-data-for-terms-aggregation-under-load/368525/2 "2024-10-10T08:33:39Z")

</div>

early evidence of the similar problem [High CPU load, many hot threads with the same stack](https://discuss.elastic.co/t/high-cpu-load-many-hot-threads-with-the-same-stack/76271)
