code: private void setupDefaultExecutorServicesIfNecessary() {
          if (isPartitioningBehaviorEnabled()) {
  
              if (MapUtils.isEmpty(getDataSourceSpecificExecutors())) {
  
                  Set<CobarDataSourceDescriptor> dataSourceDescriptors = getCobarDataSourceService()
                          .getDataSourceDescriptors();
                  for (CobarDataSourceDescriptor descriptor : dataSourceDescriptors) {
                      ExecutorService executor = createExecutorForSpecificDataSource(descriptor);
                      getDataSourceSpecificExecutors().put(descriptor.getIdentity(), executor);
                  }
              }
  
              addDefaultSingleThreadExecutorIfNecessary();
          }
      }
docs: If more than one data sources are involved in a data access request, we
  need a collection of executors to execute the request on these data
  sources in parallel.<br>
  But in case the users forget to inject a collection of executors for this
  purpose, we need to setup a default one.<br>