Alberto Gomez created GEODE-9602:
------------------------------------
Summary: QueryObserver improvements
Key: GEODE-9602
URL: https://issues.apache.org/jira/browse/GEODE-9602
Project: Geode
Issue Type: Bug
Components: querying
Reporter: Alberto Gomez
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)