• Stefy Lanza (nextime / spora )'s avatar
    a pod the account rents could be destroyed but not taken over (v0.6.8) · 471d2029
    Stefy Lanza (nextime / spora ) authored
    The RunPod page learned to show pods nothing here rented -- another host on
    the same account, or a pod whose registry entry was lost -- and the only thing
    it could do with one was terminate it. For a pod that is healthy, already
    rented and already billing, that is the expensive answer: it throws away a
    card and a 6-14 minute boot that have both been paid for, and under a warm
    floor the pool then rents a replacement and pays that boot again.
    
    The blocker was always stated as "it needs the pod's bearer, and get_pod()
    does not select env". That was half wrong. pod_plan writes the token to TWO
    places, and the one that matters most is not the environment: vLLM and
    llama.cpp take it as --api-key, so for them it is in the pod's ARGS. Only a
    coderai pod reads it from the environment. Both are recoverable from the pod's
    own launch, so get_pod_launch() asks for exactly that -- on a path of its own,
    with one caller, because get_pod/list_pods rows are rendered on the admin page
    and logged, and a token that reaches either is a token leaked.
    
    Adoption then goes through the REGISTRY rather than inserting a handle into a
    pool: the entry is written with its owner cleared, and the pool's own survivor
    sweep takes it through find_shared_pod. So the image check, the card check, the
    health probe and the per-pod bearer are the ones already in use everywhere
    else, and an adoption that should not happen is refused by the code that
    refuses it everywhere else. If no pool ever takes it, the heartbeat goes stale
    and the reaper collects it -- the right end for a pod nothing here can serve.
    
    The hazard that keeps `force`: a pod named for another deployment may still be
    MANAGED by that deployment. Two controllers on one pod each dispatch to it,
    each miscount its in-flight work, and either may terminate it under the other.
    Nothing RunPod reports says who is managing a pod, so it cannot be detected --
    only refused by default, with the reason said in full, and overridden by an
    operator asserting what the API cannot tell us. PodNotOursError carries that
    distinction structurally, because the other refusal on the same endpoint -- a
    pod no token can authenticate -- must NOT be re-offered with force.
    Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
    471d2029
Name
Last commit
Last update
codai Loading commit data...
docs Loading commit data...
packaging Loading commit data...
samples Loading commit data...
tests Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.dockerignore Loading commit data...
.gitignore Loading commit data...
AI.PROMPT Loading commit data...
CODERAI_API_DOCUMENTATION.md Loading commit data...
CoderAI.gif Loading commit data...
DISTRIBUTION.md Loading commit data...
LICENSE.md Loading commit data...
MULTIMODAL_CAPABILITIES.md Loading commit data...
MULTIMODAL_UI_EXAMPLES.md Loading commit data...
README.md Loading commit data...
REQUEST-geoclip-embeddings.md Loading commit data...
REQUEST-vpr-embeddings.md Loading commit data...
amdgpu-coredump-05000.bin Loading commit data...
build-oci.sh Loading commit data...
build.ps1 Loading commit data...
build.sh Loading commit data...
coderai Loading commit data...
coderai-broker-implementation-reference.md Loading commit data...
coderai-integration.md Loading commit data...
commands Loading commit data...
osxbuild.sh Loading commit data...
package-oci.sh Loading commit data...
package-tarball.sh Loading commit data...
requirements-acestep.txt Loading commit data...
requirements-crisperwhisper.txt Loading commit data...
requirements-embedders-tf4.txt Loading commit data...
requirements-h3.txt Loading commit data...
requirements-latentsync.txt Loading commit data...
requirements-longcat-train.txt Loading commit data...
requirements-longcat.txt Loading commit data...
requirements-melotts.txt Loading commit data...
requirements-musetalk.txt Loading commit data...
requirements-nemo.txt Loading commit data...
requirements-nvidia.txt Loading commit data...
requirements-ocr-paddle.txt Loading commit data...
requirements-ocr.txt Loading commit data...
requirements-parler.txt Loading commit data...
requirements-pyannote.txt Loading commit data...
requirements-surya.txt Loading commit data...
requirements-vllm.txt Loading commit data...
requirements-vulkan.txt Loading commit data...
requirements-xtts.txt Loading commit data...
requirements.txt Loading commit data...
run-oci.sh Loading commit data...
smoke-test-oci.sh Loading commit data...
todo.md Loading commit data...