jdbc-protolib/src/main/java/com/streamsets/pipeline/lib/jdbc/multithread/JdbcBaseRunnable.java
private TableReadContext getOrLoadTableReadContext() throws ExecutionException, InterruptedException {
    initTableEvalContextForProduce(
        tableJdbcELEvalContext, tableRuntimeContext,
        Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of(tableJdbcConfigBean.timeZoneID)))
    );
    //Check and then if we want to wait for query being issued do that
    TableReadContext tableReadContext = tableReadContextCache.getIfPresent(tableRuntimeContext);

    LOG.trace("Selected table : '{}' for generating records", tableRuntimeContext.getDescription());

    if (tableReadContext == null) {
      //Wait before issuing query (Optimization instead of waiting during each batch)
      waitIfNeeded();
      //Set time before query
      initTableEvalContextForProduce(
          tableJdbcELEvalContext, tableRuntimeContext,
          Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of(tableJdbcConfigBean.timeZoneID)))
      );
      tableReadContext = tableReadContextCache.get(tableRuntimeContext);
      //Record query time
      lastQueryIntervalTime = System.currentTimeMillis();
    }
    return tableReadContext;
  }
private TableReadContext getOrLoadTableReadContext() throws ExecutionException, InterruptedException {
    initTableEvalContextForProduce(
        tableJdbcELEvalContext, tableRuntimeContext,
        Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of(tableJdbcConfigBean.timeZoneID)))
    );
    //Check and then if we want to wait for query being issued do that
    TableReadContext tableReadContext = tableReadContextCache.getIfPresent(tableRuntimeContext);

    LOG.trace("Selected table : '{}' for generating records", tableRuntimeContext.getDescription());

    if (tableReadContext == null) {
      //Wait before issuing query (Optimization instead of waiting during each batch)
      waitIfNeeded();
      //Set time before query
      initTableEvalContextForProduce(
          tableJdbcELEvalContext, tableRuntimeContext,
          Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of(tableJdbcConfigBean.timeZoneID)))
      );
      tableReadContext = tableReadContextCache.get(tableRuntimeContext);
      //Record query time
      lastQueryIntervalTime = System.currentTimeMillis();
    }
    return tableReadContext;
  }
Get Or Load {@link TableReadContext} for {@link #tableRuntimeContext}