lucenenet-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Mathew (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LUCENENET-610) Reduce locking in FieldCacheImpl::Cache::Get
Date Fri, 12 Jul 2019 22:58:00 GMT

     [ https://issues.apache.org/jira/browse/LUCENENET-610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Thomas Mathew updated LUCENENET-610:
------------------------------------
    Description: 
We noticed a lot of contention in FieldCacheImpl::Cache::Get (our queries use a lot of query
time joins + sorting, so we hit the field cache a lot).

We use a SearcherManager with warm-up queries to populate the field cache so we would expect
it to be initialized in most cases before we hit it for actual requests.

The implementation seems to lock even for the happy path (when everything's already initialized).
This seems like a by-product of the choice of data structures (the underlying WeakDictionary,
WeakHashMap etc are not threadsafe) and so the locking is required in case the dictionary
gets resized.

Ideally we could be using thread-safe data structures and only lock when initializing the
data.

  was:
We noticed a lot of contention in FieldCacheImpl::Cache::Get (our queries use a lot of query
time joins + sorting, so we hit the field cache a lot).

We use a SearcherManager with warm-up queries to populate the field cache so we would expect
the field cache to be initialized in most cases before we hit it for actual requests.

The implementation seems to lock even for the happy path (when everything's already initialized).
This seems like a by-product of the choice of data structures (the underlying WeakDictionary,
WeakHashMap etc are not threadsafe) and so the locking is required in case the dictionary
gets resized.

Ideally we could be using thread-safe data structures and only lock when initializing the
data.


> Reduce locking in FieldCacheImpl::Cache::Get
> --------------------------------------------
>
>                 Key: LUCENENET-610
>                 URL: https://issues.apache.org/jira/browse/LUCENENET-610
>             Project: Lucene.Net
>          Issue Type: Improvement
>          Components: Lucene.Net Core
>    Affects Versions: Lucene.Net 4.8.0
>            Reporter: Thomas Mathew
>            Priority: Minor
>
> We noticed a lot of contention in FieldCacheImpl::Cache::Get (our queries use a lot
of query time joins + sorting, so we hit the field cache a lot).
> We use a SearcherManager with warm-up queries to populate the field cache so we would
expect it to be initialized in most cases before we hit it for actual requests.
> The implementation seems to lock even for the happy path (when everything's already initialized).
This seems like a by-product of the choice of data structures (the underlying WeakDictionary,
WeakHashMap etc are not threadsafe) and so the locking is required in case the dictionary
gets resized.
> Ideally we could be using thread-safe data structures and only lock when initializing
the data.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Mime
View raw message