docs: @SuppressWarnings("deprecation")
      private void reply(ParallelTaskState state, Exception t) {
  
          task.setState(state);
  
          logger.info("task.state : " + task.getState().toString());
  
          logger.info("task.totalJobNumActual : " + task.getRequestNumActual()
                  + " InitCount: " + task.getRequestNum());
          logger.info("task.response received Num {} ", task.getResponsedNum());
  
          if (state == ParallelTaskState.COMPLETED_WITH_ERROR) {
              task.getTaskErrorMetas().add(
                      new TaskErrorMeta(TaskErrorType.COMMAND_MANAGER_ERROR,
                              t == null ? "NA" : t.getLocalizedMessage()));
  
              String curTimeStr = PcDateUtils.getNowDateTimeStrStandard();
              logger.info("COMPLETED_WITH_ERROR.  " + this.requestCount
                      + " at time: " + curTimeStr);
  //TODO
              // #47
              if (t instanceof ExecutionManagerExecutionException
                      && ((ExecutionManagerExecutionException) t).getType() == ManagerExceptionType.TIMEOUT) {
  
                  for (Entry<String, NodeReqResponse> entry : task
                          .getParallelTaskResult().entrySet()) {
  
                      // no response yet
                      if (entry.getValue() != null
                              && entry.getValue().getSingleTaskResponse() == null) {
                          ResponseOnSingleTask response = new ResponseOnSingleTask();
                          response.setReceiveTimeInManager(curTimeStr);
                          response.setError(true);
                          response.setErrorMessage(t.getLocalizedMessage()+" Response was not received");
                          response.setReceiveTime(curTimeStr);
                          entry.getValue().setSingleTaskResponse(response);
                          logger.info("Found empty response for {}",
                                  entry.getKey());
                      }
                  }
              }//end if
  
          } else {
              logger.info("SUCCESSFUL GOT ON ALL RESPONSES: Received all the expected messages. Count matches: "
                      + this.requestCount
                      + " at time: "
                      + PcDateUtils.getNowDateTimeStrStandard());
  
          }
  
          ResponseFromManager batchResponseFromManager = new ResponseFromManager(
                  responseMap.size());
  
          responseMap.clear();
          director.tell(batchResponseFromManager, getSelf());
  
          // Send message to the future with the result
          endTime = System.currentTimeMillis();
  
          task.setExecutionEndTime(endTime);
  
          double durationSec = (endTime - startTime) / 1000.0;
          task.setDurationSec(durationSec);
          logger.info("\nTime taken to get all responses back : " + durationSec
                  + " secs");
          task.setExecutionEndTime(endTime);
          for (ActorRef worker : workers.values()) {
              getContext().stop(worker);
          }
          workers.clear();
  
          if (batchSenderAsstManager != null
                  && !batchSenderAsstManager.isTerminated()) {
              getContext().stop(batchSenderAsstManager);
          }
  
          if (timeoutMessageCancellable != null) {
              timeoutMessageCancellable.cancel();
          }
  
          if (getSelf() != null && !getSelf().isTerminated()) {
              getContext().stop(getSelf());
          }
      }