{
  "repo": "tidbcloud/aws-shared-provider",
  "binary": "tidb-worker",
  "binary_path": "cmd/tidb-worker/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "extensions": {},
  "services": [
    {
      "name": "TidbWorkerLifecycle",
      "type": "lifecycle",
      "methods": [
        {
          "name": "LoadFlags",
          "name_key": "TidbWorkerLifecycle.LoadFlags",
          "description": "Parse tidb-worker startup flags such as kubeconfig, PD addresses, DSN, job limits, TLS files, listener addresses, and resource-manager feature gates."
        },
        {
          "name": "BuildKubeConfig",
          "name_key": "TidbWorkerLifecycle.BuildKubeConfig",
          "description": "Build the Kubernetes REST config from the startup kubeconfig flag."
        },
        {
          "name": "CreateManager",
          "name_key": "TidbWorkerLifecycle.CreateManager",
          "description": "Create the controller-runtime manager with leader election and the separate metrics listener."
        },
        {
          "name": "InitStorage",
          "name_key": "TidbWorkerLifecycle.InitStorage",
          "description": "Create the MySQL-backed storage database used by tidb-worker task tables."
        },
        {
          "name": "CreateServer",
          "name_key": "TidbWorkerLifecycle.CreateServer",
          "description": "Construct the tidb-worker server, its primary HTTP mux, and the gRPC server."
        },
        {
          "name": "CreatePDClient",
          "name_key": "TidbWorkerLifecycle.CreatePDClient",
          "description": "Create the PD client used by the task handlers for keyspace state and GC safe point operations."
        },
        {
          "name": "InitAdminController",
          "name_key": "TidbWorkerLifecycle.InitAdminController",
          "description": "Register the admin ConfigMap reconciler and admin HTTP handlers."
        },
        {
          "name": "InitOptionalResourceManager",
          "name_key": "TidbWorkerLifecycle.InitOptionalResourceManager",
          "description": "Initialize the optional resource-manager scheduler and pool manager when resource-manager mode is enabled."
        },
        {
          "name": "RegisterGCWorker",
          "name_key": "TidbWorkerLifecycle.RegisterGCWorker",
          "description": "Register the GC task handler and its HTTP hooks."
        },
        {
          "name": "RegisterGCV2Worker",
          "name_key": "TidbWorkerLifecycle.RegisterGCV2Worker",
          "description": "Register the GCV2 task handler and its HTTP hooks."
        },
        {
          "name": "RegisterBgTaskWorker",
          "name_key": "TidbWorkerLifecycle.RegisterBgTaskWorker",
          "description": "Register the background-task handler, shared-worker autoscaling logic, and worker-count HTTP hooks."
        },
        {
          "name": "RegisterTTLWorker",
          "name_key": "TidbWorkerLifecycle.RegisterTTLWorker",
          "description": "Register the TTL task handler."
        },
        {
          "name": "RegisterRemoteQueryWorker",
          "name_key": "TidbWorkerLifecycle.RegisterRemoteQueryWorker",
          "description": "Register the remote-query HTTP handler."
        },
        {
          "name": "RegisterAutoAnalyzeWorker",
          "name_key": "TidbWorkerLifecycle.RegisterAutoAnalyzeWorker",
          "description": "Register the auto-analyze task handler."
        },
        {
          "name": "StartPrimaryListeners",
          "name_key": "TidbWorkerLifecycle.StartPrimaryListeners",
          "description": "Start the cmux listener that serves both the primary HTTP APIs and the Scaler gRPC service on the same address."
        },
        {
          "name": "StartManager",
          "name_key": "TidbWorkerLifecycle.StartManager",
          "description": "Start the controller-runtime manager and its background runnables, including the metrics listener."
        }
      ]
    },
    {
      "name": "TidbWorkerMetrics",
      "type": "http",
      "base_path": "/",
      "methods": [
        {
          "name": "Metrics",
          "name_key": "TidbWorkerMetrics.Metrics",
          "method": "GET",
          "path": "/metrics",
          "description": "Expose controller-runtime and tidb-worker Prometheus metrics on the separate metrics listener."
        }
      ]
    },
    {
      "name": "TidbWorkerAPI",
      "type": "http",
      "base_path": "/scaler/api/v1",
      "methods": [
        {
          "name": "PauseTasks",
          "name_key": "TidbWorkerAPI.PauseTasks",
          "method": "ANY",
          "path": "/scaler/api/v1/admin/pause",
          "description": "Pause worker task queues and delete matching worker jobs."
        },
        {
          "name": "ResumeTasks",
          "name_key": "TidbWorkerAPI.ResumeTasks",
          "method": "ANY",
          "path": "/scaler/api/v1/admin/resume",
          "description": "Resume paused worker tasks for the selected keyspace or pool."
        },
        {
          "name": "CleanTasks",
          "name_key": "TidbWorkerAPI.CleanTasks",
          "method": "ANY",
          "path": "/scaler/api/v1/admin/clean",
          "description": "Delete task state and worker jobs for a selected keyspace or pool."
        },
        {
          "name": "SetLogLevel",
          "name_key": "TidbWorkerAPI.SetLogLevel",
          "method": "ANY",
          "path": "/scaler/api/v1/admin/loglevel",
          "description": "Update the tidb-worker process log level."
        },
        {
          "name": "SetTestKeyspace",
          "name_key": "TidbWorkerAPI.SetTestKeyspace",
          "method": "ANY",
          "path": "/scaler/api/v1/admin/testkeyspace",
          "description": "Mark a keyspace as a test keyspace for resource-manager-backed TTL scheduling."
        },
        {
          "name": "GetKeyspacePodCount",
          "name_key": "TidbWorkerAPI.GetKeyspacePodCount",
          "method": "ANY",
          "path": "/scaler/api/v1/admin/get_keyspace_pod_ct",
          "description": "Count worker pods for the requested keyspace."
        },
        {
          "name": "GetBatchWorker",
          "name_key": "TidbWorkerAPI.GetBatchWorker",
          "method": "ANY",
          "path": "/scaler/api/v1/bgtask/batch-worker",
          "description": "Return global batch-worker pause and worker-count state."
        },
        {
          "name": "GetDDLWorker",
          "name_key": "TidbWorkerAPI.GetDDLWorker",
          "method": "ANY",
          "path": "/scaler/api/v1/bgtask/ddl-worker",
          "description": "Return global DDL-worker pause and worker-count state."
        },
        {
          "name": "GetImportIntoWorker",
          "name_key": "TidbWorkerAPI.GetImportIntoWorker",
          "method": "ANY",
          "path": "/scaler/api/v1/bgtask/import-into-worker",
          "description": "Return global import-into-worker pause and worker-count state."
        },
        {
          "name": "GetBatchWorkerByKeyspace",
          "name_key": "TidbWorkerAPI.GetBatchWorkerByKeyspace",
          "method": "ANY",
          "path": "/scaler/api/v1/bgtask/batch-worker/{keyspace}",
          "description": "Return batch-worker state for one keyspace, including shared-worker autoscale count when enabled."
        },
        {
          "name": "GetDDLWorkerByKeyspace",
          "name_key": "TidbWorkerAPI.GetDDLWorkerByKeyspace",
          "method": "ANY",
          "path": "/scaler/api/v1/bgtask/ddl-worker/{keyspace}",
          "description": "Return DDL-worker state for one keyspace, including shared-worker autoscale count when enabled."
        },
        {
          "name": "GetImportIntoWorkerByKeyspace",
          "name_key": "TidbWorkerAPI.GetImportIntoWorkerByKeyspace",
          "method": "ANY",
          "path": "/scaler/api/v1/bgtask/import-into-worker/{keyspace}",
          "description": "Return import-into-worker state for one keyspace, including shared-worker autoscale count when enabled."
        },
        {
          "name": "GetAutoAnalyzeWorkerByKeyspace",
          "name_key": "TidbWorkerAPI.GetAutoAnalyzeWorkerByKeyspace",
          "method": "ANY",
          "path": "/scaler/api/v1/bgtask/auto-analyze-worker/{keyspace}",
          "description": "Return auto-analyze shared-worker autoscale enablement for one keyspace."
        },
        {
          "name": "SubmitRemoteQuery",
          "name_key": "TidbWorkerAPI.SubmitRemoteQuery",
          "method": "ANY",
          "path": "/scaler/api/v1/remote-query/query",
          "description": "Accept a remote-query request and launch the corresponding worker job."
        }
      ]
    },
    {
      "name": "ScalerGRPC",
      "type": "grpc",
      "methods": [
        {
          "name": "Ping",
          "name_key": "ScalerGRPC.Ping",
          "description": "Check whether the tidb-worker gRPC service is reachable."
        },
        {
          "name": "RegisterGC",
          "name_key": "ScalerGRPC.RegisterGC",
          "description": "Record a new GC task in storage."
        },
        {
          "name": "RecycleGC",
          "name_key": "ScalerGRPC.RecycleGC",
          "description": "Mark GC tasks at or before the reported safe point as done."
        },
        {
          "name": "RegisterGCV2",
          "name_key": "ScalerGRPC.RegisterGCV2",
          "description": "Record a new GCV2 task and retire older GCV2 records."
        },
        {
          "name": "RecycleGCV2",
          "name_key": "ScalerGRPC.RecycleGCV2",
          "description": "Mark GCV2 tasks at or before the reported safe point as done."
        },
        {
          "name": "UpdateGCLifeTime",
          "name_key": "ScalerGRPC.UpdateGCLifeTime",
          "description": "Update the persisted GC lifetime for the keyspace."
        },
        {
          "name": "GetBgTaskConfig",
          "name_key": "ScalerGRPC.GetBgTaskConfig",
          "description": "Return background-task worker configuration. The current implementation is a stub that reports not implemented."
        },
        {
          "name": "RegisterBgTask",
          "name_key": "ScalerGRPC.RegisterBgTask",
          "description": "Record a new background sub-task assignment in storage."
        },
        {
          "name": "RecycleBgTask",
          "name_key": "ScalerGRPC.RecycleBgTask",
          "description": "Mark a background task or sub-task as done."
        },
        {
          "name": "UpdateBgTaskExecID",
          "name_key": "ScalerGRPC.UpdateBgTaskExecID",
          "description": "Update the exec IDs attached to background sub-tasks."
        },
        {
          "name": "RegisterRemoteQuery",
          "name_key": "ScalerGRPC.RegisterRemoteQuery",
          "description": "Record a remote-query registration. The current implementation is a stub that reports not implemented."
        },
        {
          "name": "RegisterTTLTask",
          "name_key": "ScalerGRPC.RegisterTTLTask",
          "description": "Persist TTL table metadata and schedule a fresh TTL task."
        },
        {
          "name": "DeleteTTLTableInfo",
          "name_key": "ScalerGRPC.DeleteTTLTableInfo",
          "description": "Delete TTL table metadata and mark related TTL tasks as deleted."
        },
        {
          "name": "RecycleTTLTask",
          "name_key": "ScalerGRPC.RecycleTTLTask",
          "description": "Mark TTL tasks that finished before the reported finish time as done."
        },
        {
          "name": "UpdateTTLJobEnable",
          "name_key": "ScalerGRPC.UpdateTTLJobEnable",
          "description": "Update the persisted TTL enable switch for the keyspace."
        },
        {
          "name": "RegisterAutoAnalyze",
          "name_key": "ScalerGRPC.RegisterAutoAnalyze",
          "description": "Record a new auto-analyze task, either as a dedicated task or a shared-worker background task."
        },
        {
          "name": "RecycleAutoAnalyze",
          "name_key": "ScalerGRPC.RecycleAutoAnalyze",
          "description": "Mark an auto-analyze task as done, falling back to the shared-worker task table when needed."
        }
      ]
    },
    {
      "name": "AdminConfigController",
      "type": "controller",
      "methods": [
        {
          "name": "ReconcileAdminConfig",
          "name_key": "AdminConfigController.ReconcileAdminConfig",
          "description": "Watch the admin ConfigMap and refresh in-memory pause, cleanup, and worker-image settings."
        },
        {
          "name": "CleanupMarkedJobs",
          "name_key": "AdminConfigController.CleanupMarkedJobs",
          "description": "Periodically delete worker jobs for task types marked with cleanup=true in the admin ConfigMap."
        }
      ]
    },
    {
      "name": "GCWorker",
      "type": "worker",
      "methods": [
        {
          "name": "PollTasks",
          "name_key": "GCWorker.PollTasks",
          "description": "Poll pending GC tasks, validate keyspace state, and launch worker jobs or resource-manager tasks."
        },
        {
          "name": "RecycleDoneJobs",
          "name_key": "GCWorker.RecycleDoneJobs",
          "description": "Delete completed GC worker jobs and move finished GC rows into the done table."
        },
        {
          "name": "RecycleOrphanJobs",
          "name_key": "GCWorker.RecycleOrphanJobs",
          "description": "Mark running GC tasks as done when their keyspace is no longer enabled."
        },
        {
          "name": "UpdateMetrics",
          "name_key": "GCWorker.UpdateMetrics",
          "description": "Refresh GC task metrics from storage."
        }
      ]
    },
    {
      "name": "GCV2Worker",
      "type": "worker",
      "methods": [
        {
          "name": "PollTasks",
          "name_key": "GCV2Worker.PollTasks",
          "description": "Poll pending GCV2 tasks, validate keyspace state, and launch worker jobs or resource-manager tasks."
        },
        {
          "name": "RecycleDoneJobs",
          "name_key": "GCV2Worker.RecycleDoneJobs",
          "description": "Delete completed GCV2 worker jobs and move finished rows into the done table."
        },
        {
          "name": "RecycleOrphanJobs",
          "name_key": "GCV2Worker.RecycleOrphanJobs",
          "description": "Mark running GCV2 tasks as done when their keyspace is no longer enabled."
        },
        {
          "name": "RecycleJammedWorkers",
          "name_key": "GCV2Worker.RecycleJammedWorkers",
          "description": "Recycle stale GCV2 runners and requeue new pending GCV2 work."
        },
        {
          "name": "UpdateMetrics",
          "name_key": "GCV2Worker.UpdateMetrics",
          "description": "Refresh GCV2 task metrics from storage."
        }
      ]
    },
    {
      "name": "BgTaskWorker",
      "type": "worker",
      "methods": [
        {
          "name": "PollTasks",
          "name_key": "BgTaskWorker.PollTasks",
          "description": "Poll pending background tasks, validate keyspace state, and either launch worker jobs or switch tasks to running for shared-worker autoscale mode."
        },
        {
          "name": "RecycleDoneJobs",
          "name_key": "BgTaskWorker.RecycleDoneJobs",
          "description": "Delete completed background worker jobs and move finished rows into the done table."
        },
        {
          "name": "RecycleOrphanJobs",
          "name_key": "BgTaskWorker.RecycleOrphanJobs",
          "description": "Mark background tasks as done when their keyspace is no longer enabled."
        },
        {
          "name": "AutoScaleSharedWorkers",
          "name_key": "BgTaskWorker.AutoScaleSharedWorkers",
          "description": "Scale shared workers up and down based on queued task history and current shared-worker jobs."
        },
        {
          "name": "UpdateMetrics",
          "name_key": "BgTaskWorker.UpdateMetrics",
          "description": "Refresh background-task metrics from storage."
        }
      ]
    },
    {
      "name": "TTLWorker",
      "type": "worker",
      "methods": [
        {
          "name": "PollTasks",
          "name_key": "TTLWorker.PollTasks",
          "description": "Poll eligible TTL tasks, validate keyspace state, and launch TTL jobs or resource-manager tasks for test keyspaces."
        },
        {
          "name": "RecycleDoneJobs",
          "name_key": "TTLWorker.RecycleDoneJobs",
          "description": "Delete completed TTL workers, optionally recycle resource-manager workers, and move finished rows into the done table."
        },
        {
          "name": "RecycleOrphanJobs",
          "name_key": "TTLWorker.RecycleOrphanJobs",
          "description": "Delete TTL metadata and mark TTL tasks deleted when the keyspace is no longer available."
        },
        {
          "name": "RecycleJammedWorkers",
          "name_key": "TTLWorker.RecycleJammedWorkers",
          "description": "Recycle stale TTL workers and enqueue replacement TTL tasks."
        },
        {
          "name": "UpdateMetrics",
          "name_key": "TTLWorker.UpdateMetrics",
          "description": "Refresh TTL task and TTL table metrics from storage."
        }
      ]
    },
    {
      "name": "AutoAnalyzeWorker",
      "type": "worker",
      "methods": [
        {
          "name": "PollTasks",
          "name_key": "AutoAnalyzeWorker.PollTasks",
          "description": "Poll pending auto-analyze tasks, validate keyspace state, and launch auto-analyze jobs."
        },
        {
          "name": "RecycleDoneJobs",
          "name_key": "AutoAnalyzeWorker.RecycleDoneJobs",
          "description": "Delete completed auto-analyze worker jobs and move finished rows into the done table."
        },
        {
          "name": "RecycleOrphanJobs",
          "name_key": "AutoAnalyzeWorker.RecycleOrphanJobs",
          "description": "Mark auto-analyze tasks as done when their keyspace is no longer enabled."
        },
        {
          "name": "RecycleJammedWorkers",
          "name_key": "AutoAnalyzeWorker.RecycleJammedWorkers",
          "description": "Recycle stale auto-analyze workers and mark their tasks done."
        },
        {
          "name": "UpdateMetrics",
          "name_key": "AutoAnalyzeWorker.UpdateMetrics",
          "description": "Refresh auto-analyze task metrics from storage."
        }
      ]
    },
    {
      "name": "ResourceManagerLifecycle",
      "type": "worker",
      "methods": [
        {
          "name": "StartResourceScheduler",
          "name_key": "ResourceManagerLifecycle.StartResourceScheduler",
          "description": "Start the optional resource scheduler, pool manager, config watcher, standby watcher, reconciler, node manager, and debug HTTP server."
        }
      ]
    },
    {
      "name": "ResourceManagerDebug",
      "type": "http",
      "base_path": "/debug",
      "methods": [
        {
          "name": "GetPools",
          "name_key": "ResourceManagerDebug.GetPools",
          "method": "ANY",
          "path": "/debug/get-pools",
          "description": "Return the current resource-manager pool configuration."
        },
        {
          "name": "GetStandbyWorkers",
          "name_key": "ResourceManagerDebug.GetStandbyWorkers",
          "method": "ANY",
          "path": "/debug/get-standby-workers",
          "description": "Return standby workers for the requested pool."
        },
        {
          "name": "ActivateWorker",
          "name_key": "ResourceManagerDebug.ActivateWorker",
          "method": "ANY",
          "path": "/debug/activate-worker",
          "description": "Manually activate a standby worker for the requested pool."
        },
        {
          "name": "RecycleWorker",
          "name_key": "ResourceManagerDebug.RecycleWorker",
          "method": "ANY",
          "path": "/debug/recycle-worker",
          "description": "Manually recycle a worker back into standby state."
        }
      ]
    }
  ]
}
