[ https://issues.apache.org/jira/browse/GEODE-9602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alberto Gomez reassigned GEODE-9602: ------------------------------------ Assignee: Alberto Gomez > QueryObserver improvements > -------------------------- > > Key: GEODE-9602 > URL: https://issues.apache.org/jira/browse/GEODE-9602 > Project: Geode > Issue Type: Bug > Components: querying > Reporter: Alberto Gomez > Assignee: Alberto Gomez > Priority: Major > > The QueryObserver interface allows to create classes that would be notified > about query events. > The way to set a QueryObserver is by means of the QueryObserverHolder class, > that is able to hold a single instance of a QueryObserver. > This mechanism currently has two problems: > * The QueryObserverHolder class is not thread-safe. The observer instance to > be returned by the getInstance() class could return an undefined value. > * Given that the observer is retrieved via the > QueryObserverHolder::getInstance() method at different points of the query > execution, it is possible that if several queries with different observers > are run in parallel, the observers for the queries will be changed in the > middle of the query execution with unexpected results for the queries. > In order to solve the above problems, the following is proposed: > * Make the QueryObserverHolder class thread-safe. > * Allow for having an observer per query. A simple way to allow this is to > set the observer in the query context when the query is started. That way, > several queries could be run in parallel, each with its own observer. > Apart from the above, it's been observed that there are no QueryObserver > before/after iteration evaluation 'callbacks' invoked when the query is using > indexes. > It is also proposed to add these before/after IterationEvaluation callbacks > so that they are called also when the query is using indexes. -- This message was sent by Atlassian Jira (v8.3.4#803005)