diff options
Diffstat (limited to 'src/backend/replication/logical/launcher.c')
-rw-r--r-- | src/backend/replication/logical/launcher.c | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c index 7cc0a16d3bc..72e44d5a02d 100644 --- a/src/backend/replication/logical/launcher.c +++ b/src/backend/replication/logical/launcher.c @@ -468,39 +468,44 @@ retry: bgw.bgw_start_time = BgWorkerStart_RecoveryFinished; snprintf(bgw.bgw_library_name, MAXPGPATH, "postgres"); - if (is_parallel_apply_worker) + switch (worker->type) { - snprintf(bgw.bgw_function_name, BGW_MAXLEN, "ParallelApplyWorkerMain"); - snprintf(bgw.bgw_name, BGW_MAXLEN, - "logical replication parallel apply worker for subscription %u", - subid); - snprintf(bgw.bgw_type, BGW_MAXLEN, "logical replication parallel worker"); - } - else if (is_tablesync_worker) - { - snprintf(bgw.bgw_function_name, BGW_MAXLEN, "TablesyncWorkerMain"); - snprintf(bgw.bgw_name, BGW_MAXLEN, - "logical replication tablesync worker for subscription %u sync %u", - subid, - relid); - snprintf(bgw.bgw_type, BGW_MAXLEN, "logical replication tablesync worker"); - } - else - { - snprintf(bgw.bgw_function_name, BGW_MAXLEN, "ApplyWorkerMain"); - snprintf(bgw.bgw_name, BGW_MAXLEN, - "logical replication apply worker for subscription %u", - subid); - snprintf(bgw.bgw_type, BGW_MAXLEN, "logical replication apply worker"); + case WORKERTYPE_APPLY: + snprintf(bgw.bgw_function_name, BGW_MAXLEN, "ApplyWorkerMain"); + snprintf(bgw.bgw_name, BGW_MAXLEN, + "logical replication apply worker for subscription %u", + subid); + snprintf(bgw.bgw_type, BGW_MAXLEN, "logical replication apply worker"); + break; + + case WORKERTYPE_PARALLEL_APPLY: + snprintf(bgw.bgw_function_name, BGW_MAXLEN, "ParallelApplyWorkerMain"); + snprintf(bgw.bgw_name, BGW_MAXLEN, + "logical replication parallel apply worker for subscription %u", + subid); + snprintf(bgw.bgw_type, BGW_MAXLEN, "logical replication parallel worker"); + + memcpy(bgw.bgw_extra, &subworker_dsm, sizeof(dsm_handle)); + break; + + case WORKERTYPE_TABLESYNC: + snprintf(bgw.bgw_function_name, BGW_MAXLEN, "TablesyncWorkerMain"); + snprintf(bgw.bgw_name, BGW_MAXLEN, + "logical replication tablesync worker for subscription %u sync %u", + subid, + relid); + snprintf(bgw.bgw_type, BGW_MAXLEN, "logical replication tablesync worker"); + break; + + case WORKERTYPE_UNKNOWN: + /* Should never happen. */ + elog(ERROR, "unknown worker type"); } bgw.bgw_restart_time = BGW_NEVER_RESTART; bgw.bgw_notify_pid = MyProcPid; bgw.bgw_main_arg = Int32GetDatum(slot); - if (is_parallel_apply_worker) - memcpy(bgw.bgw_extra, &subworker_dsm, sizeof(dsm_handle)); - if (!RegisterDynamicBackgroundWorker(&bgw, &bgw_handle)) { /* Failed to start worker, so clean up the worker slot. */ |