{
  "repo": "tidbcloud/ffs",
  "binary": "throttler-server",
  "binary_path": "cmd/throttler-server/main.go",
  "dependencies": {
    "ThrottlingService.Throttle": {
      "infrastructure": {},
      "services": []
    },
    "ThrottlingService.Handover": {
      "infrastructure": {},
      "services": []
    },
    "ThrottlerLifecycle.BootstrapZoneClient": {
      "infrastructure": {},
      "services": [
        {
          "name": "universe",
          "target_interface": "UniverseService.GetZone",
          "operation_type": "grpc_client",
          "target_repo": "tidbcloud/ffs",
          "conditions": [
            "Bootstrap phase"
          ],
          "operations": [
            {
              "operation": "GetZone",
              "trigger": "Resolve zone endpoints before starting throttler heartbeats",
              "conditions": [
                "Bootstrap phase"
              ],
              "implementation": "throttler/server.go:49"
            }
          ]
        },
        {
          "name": "zone",
          "target_interface": "ZoneService.ThrottlerHeartbeat",
          "operation_type": "grpc_client",
          "target_repo": "tidbcloud/ffs",
          "conditions": [
            "Bootstrap phase"
          ],
          "operations": [
            {
              "operation": "ThrottlerHeartbeat",
              "trigger": "Register throttler endpoint with zone during bootstrap",
              "conditions": [
                "Bootstrap phase"
              ],
              "implementation": "throttler/server.go:62"
            }
          ]
        }
      ]
    },
    "ThrottlerLifecycle.WatchZoneUpdates": {
      "infrastructure": {},
      "services": [
        {
          "name": "universe",
          "target_interface": "UniverseService.WatchZones",
          "operation_type": "grpc_stream",
          "target_repo": "tidbcloud/ffs",
          "conditions": [
            "Background loop after bootstrap"
          ],
          "operations": [
            {
              "operation": "WatchZones",
              "trigger": "Refresh zone endpoints when universe metadata changes",
              "conditions": [
                "Background loop after bootstrap"
              ],
              "implementation": "throttler/server.go:70"
            }
          ]
        }
      ]
    },
    "ThrottlerLifecycle.ReportThrottlerHeartbeat": {
      "infrastructure": {},
      "services": [
        {
          "name": "zone",
          "target_interface": "ZoneService.ThrottlerHeartbeat",
          "operation_type": "grpc_client",
          "target_repo": "tidbcloud/ffs",
          "conditions": [
            "Periodic background loop"
          ],
          "operations": [
            {
              "operation": "ThrottlerHeartbeat",
              "trigger": "Periodically refresh throttler liveness in zone",
              "conditions": [
                "Periodic background loop"
              ],
              "implementation": "throttler/server.go:96"
            }
          ]
        }
      ]
    }
  }
}
