private void innerFinishHim() {
   InternalSearchResponse internalResponse =
       searchPhaseController.merge(sortedShardList, queryResults, fetchResults);
   String scrollId = null;
   if (request.scroll() != null) {
     scrollId = TransportSearchHelper.buildScrollId(request.searchType(), queryResults.values());
   }
   searchCache.releaseQueryResults(queryResults);
   searchCache.releaseFetchResults(fetchResults);
   invokeListener(
       new SearchResponse(
           internalResponse,
           scrollId,
           expectedSuccessfulOps,
           successulOps.get(),
           buildShardFailures()));
 }
 void innerFinishHim() throws Exception {
   sortedShardList = searchPhaseController.sortDocs(queryFetchResults);
   final InternalSearchResponse internalResponse =
       searchPhaseController.merge(sortedShardList, queryFetchResults, queryFetchResults);
   String scrollId = null;
   if (request.scroll() != null) {
     scrollId = TransportSearchHelper.buildScrollId(request.searchType(), firstResults, null);
   }
   listener.onResponse(
       new SearchResponse(
           internalResponse,
           scrollId,
           expectedSuccessfulOps,
           successulOps.get(),
           buildTookInMillis(),
           buildShardFailures()));
 }