message: Add get executor
diff: @@ -29,6 +29,9 @@ limitations under the License.
  constexpr char kS3ClientAllocationTag[] = "S3ClientAllocation";
  constexpr int64_t kS3TimeoutMsec = 300000; // 5 min
  +constexpr char kExecutorTag[] = "TransferManagerExecutorAllocation";
  +constexpr int kExecutorPoolSize = 25;
  +
  static void* plugin_memory_allocate(size_t size) { return calloc(1, size); }
  static void plugin_memory_free(void* ptr) { free(ptr); }
  @@ -167,6 +170,18 @@ static void GetS3Client(TF_Filesystem* filesystem) {
  }
  }
  +static void GetExecutor(TF_Filesystem* filesystem) {
  + auto s3_file =
  + static_cast<tf_s3_filesystem::S3File*>(filesystem->plugin_filesystem);
  + absl::MutexLock l(&s3_file->initialization_lock);
  +
  + if (s3_file->executor.get() == nullptr) {
  + s3_file->executor =
  + Aws::MakeShared<Aws::Utils::Threading::PooledThreadExecutor>(
  + kExecutorTag, kExecutorPoolSize);
  + }
  +}
  +
  static void ShutdownClient(Aws::S3::S3Client* s3_client) {
  if (s3_client != nullptr) {
  delete s3_client;
  