jdbc-protolib/src/main/java/com/streamsets/pipeline/lib/jdbc/multithread/MultithreadedTableProvider.java
public synchronized boolean shouldGenerateNoMoreDataEvent() {
    boolean noMoreData = (
        !isNoMoreDataEventGeneratedAlready &&
            tablesWithNoMoreData.size() == tableContextMap.size());
    if (noMoreData) {
      isNoMoreDataEventGeneratedAlready = true;
    }
    return noMoreData;
  }
public synchronized boolean shouldGenerateNoMoreDataEvent() {
    boolean noMoreData = (
        !isNoMoreDataEventGeneratedAlready &&
            tablesWithNoMoreData.size() == tableContextMap.size());
    if (noMoreData) {
      isNoMoreDataEventGeneratedAlready = true;
    }
    return noMoreData;
  }
Used by the main thread {@link TableJdbcSource} to check whether all
tables have marked no more data
Generate event only if we haven't generate no more data event already
or we have seen a table with records after we generated an event before