Seems, a race possible on MapQueryResult*s*.close() as this code can be called twice.
Let's rewrite it make sure every map result is closed via MapQueryResult*s*.closeResult(int) method only.
Then allow cleanup once all map results are closed.
Then MapQueryResult*s*.allClosed() can be optimized as we always know number of map results and all map results are closed via MapQueryResult*s* instance.
Seems, MepQueryExecutor.onQueryRequest0() has dead code. See "res.openResult(rs)" call when 'null' passed as argument.
Start point is MapQueryResult.openResult(res).