• Stefy Lanza (nextime / spora )'s avatar
    one pod, one entry: a pool must not hold the same pod twice (v0.4.29) · a98d4b67
    Stefy Lanza (nextime / spora ) authored
    Two paths append pods -- a fresh rent and an adoption -- and neither checked
    whether the pod was already in the pool. On a restart both fire for the same
    machine within the same second:
    
      [runpod] adopting pod j74fxkxr9vs3fg's bearer token
      [runpod] reclaim: took back a pod for 'datalab-to/surya-ocr-2' ...
    
    and the pool then held one A40 twice. Every capacity question is answered by
    walking self.pods, so the duplicate is not cosmetic:
    
    * the pool claimed 2 x max_inflight_per_pod = 128 slots on a card that was
      serving 31, reporting "2 in pool, 2 healthy, 2 at cap" with 255 pages
      queued -- and refusing work the pod could have taken;
    * max_pods is enforced against that same count, so a cap of ONE was satisfied
      by two entries for one pod, which is how a second real pod came to be rented
      beside it and billed at $1.18/hr for a configuration that asked for $0.59;
    * the in-flight staleness sweep added in 0.4.28 cannot help here, because both
      entries hold legitimate fresh timestamps. A duplicate is not a leak.
    
    Both sites now go through `_add_pod`, which is the only remaining way into the
    pool and refuses a pod id it already holds. The EXISTING handle is kept rather
    than replaced: it carries the in-flight accounting for work already dispatched
    to that pod, and dropping it would strand every slot it holds. What can
    legitimately change is refreshed onto it -- the address, since RunPod remaps
    ports and the pod id is the identity, not the url.
    
    A test asserts there is exactly one `self.pods.append(` in the file: the guard
    is worth nothing if a third path is added later that bypasses it.
    Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01KnfkxBpcZ1v6ypRFFyhrVM
    a98d4b67
Name
Last commit
Last update
..
conftest.py Loading commit data...
ocr_lane_stub_worker.py Loading commit data...
test_admin_auth.py Loading commit data...
test_admin_forward_auth.py Loading commit data...
test_admin_remote_ui.py Loading commit data...
test_admission_gate_derived.py Loading commit data...
test_admission_gate_warning.py Loading commit data...
test_adoption_matches_image_and_card.py Loading commit data...
test_audio_ml_backends.py Loading commit data...
test_audio_ml_endpoints.py Loading commit data...
test_autoupgrade.py Loading commit data...
test_autoupgrade_force_options.py Loading commit data...
test_autoupgrade_midnight_force.py Loading commit data...
test_autoupgrade_recovers_a_down_server.py Loading commit data...
test_autoupgrade_sees_training.py Loading commit data...
test_broker_config.py Loading commit data...
test_broker_dispatch.py Loading commit data...
test_broker_protocol.py Loading commit data...
test_broker_shutdown.py Loading commit data...
test_broker_streaming.py Loading commit data...
test_burst_placement.py Loading commit data...
test_character_studio_fetch.py Loading commit data...
test_chat_passthrough.py Loading commit data...
test_chunking.py Loading commit data...
test_cluster.py Loading commit data...
test_compose.py Loading commit data...
test_embed_long_input.py Loading commit data...
test_embedding_capability.py Loading commit data...
test_embedding_repo_file_detection.py Loading commit data...
test_field_report_fixes.py Loading commit data...
test_forward_auth_peer_trust.py Loading commit data...
test_front_api_auth.py Loading commit data...
test_front_inflight_leak.py Loading commit data...
test_front_ocr_swap_gate.py Loading commit data...
test_image_has_c_compiler.py Loading commit data...
test_ledger_out_of_band.py Loading commit data...
test_longcat_avatar_layout.py Loading commit data...
test_longcat_bsa.py Loading commit data...
test_longcat_cancellable.py Loading commit data...
test_longcat_checkpoint_resolve.py Loading commit data...
test_longcat_component_quant.py Loading commit data...
test_longcat_config_ui.py Loading commit data...
test_longcat_external_training.py Loading commit data...
test_longcat_int8_load.py Loading commit data...
test_longcat_lora.py Loading commit data...
test_longcat_orchestration.py Loading commit data...
test_longcat_packaging.py Loading commit data...
test_longcat_placement.py Loading commit data...
test_longcat_progress.py Loading commit data...
test_longcat_prompt_cache.py Loading commit data...
test_longcat_quantize.py Loading commit data...
test_longcat_scale.py Loading commit data...
test_longcat_tasks.py Loading commit data...
test_longcat_variants.py Loading commit data...
test_longcat_vendored_source.py Loading commit data...
test_longcat_venv_env.py Loading commit data...
test_longcat_vram_estimate.py Loading commit data...
test_longcat_worker.py Loading commit data...
test_loop_watch.py Loading commit data...
test_manual_multimodal_test_client.py Loading commit data...
test_model_scan_cache.py Loading commit data...
test_models_context_window.py Loading commit data...
test_no_blocking_calls_on_the_loop.py Loading commit data...
test_ocr_accent_repair.py Loading commit data...
test_ocr_accent_token_ids.py Loading commit data...
test_ocr_accent_visibility.py Loading commit data...
test_ocr_blank_page.py Loading commit data...
test_ocr_chandra.py Loading commit data...
test_ocr_confidence.py Loading commit data...
test_ocr_degraded_retry.py Loading commit data...
test_ocr_detector_venv.py Loading commit data...
test_ocr_dual_mode.py Loading commit data...
test_ocr_fanout.py Loading commit data...
test_ocr_language.py Loading commit data...
test_ocr_lease_leak_on_cancel.py Loading commit data...
test_ocr_lease_off_the_loop.py Loading commit data...
test_ocr_max_pages.py Loading commit data...
test_ocr_max_tokens_floor.py Loading commit data...
test_ocr_olmocr.py Loading commit data...
test_ocr_page_image.py Loading commit data...
test_ocr_pod_async_transport.py Loading commit data...
test_ocr_pod_pipeline_gate.py Loading commit data...
test_ocr_pod_pipeline_policy.py Loading commit data...
test_ocr_pod_pool_width.py Loading commit data...
test_ocr_raster_pool.py Loading commit data...
test_ocr_request_budgets.py Loading commit data...
test_ocr_resident_budget.py Loading commit data...
test_ocr_resume_engines.py Loading commit data...
test_ocr_resume_shared.py Loading commit data...
test_ocr_served_model.py Loading commit data...
test_ocr_surya_confidence.py Loading commit data...
test_ocr_token_trace.py Loading commit data...
test_ocr_unreadable_and_dpi.py Loading commit data...
test_ocr_vram_share_and_fallback.py Loading commit data...
test_ocr_window_published.py Loading commit data...
test_ocr_worker_lanes.py Loading commit data...
test_olmocr_pod_tls.py Loading commit data...
test_oom_priority.py Loading commit data...
test_placement_declines.py Loading commit data...
test_pod_http_pool.py Loading commit data...
test_pod_log_drain.py Loading commit data...
test_pod_loopback_tls.py Loading commit data...
test_pod_seed_model_type.py Loading commit data...
test_pod_teach_on_unknown_model.py Loading commit data...
test_pod_token_adoption_race.py Loading commit data...
test_pool_growth_adopts.py Loading commit data...
test_proxy_logprobs.py Loading commit data...
test_remote_execution.py Loading commit data...
test_remote_gateway_gate.py Loading commit data...
test_remote_pinned_never_loads_locally.py Loading commit data...
test_runpod_capacity_cache.py Loading commit data...
test_runpod_card_memo.py Loading commit data...
test_runpod_client_scale.py Loading commit data...
test_runpod_fleet_status.py Loading commit data...
test_runpod_grow_reason.py Loading commit data...
test_runpod_inflight_reclaim.py Loading commit data...
test_runpod_mixed_fleet.py Loading commit data...
test_runpod_no_duplicate_pods.py Loading commit data...
test_runpod_nonblocking_lease.py Loading commit data...
test_runpod_ocr_remotization.py Loading commit data...
test_runpod_placement.py Loading commit data...
test_runpod_pod_extra_args.py Loading commit data...
test_runpod_reaper_grace.py Loading commit data...
test_runpod_regional_volumes.py Loading commit data...
test_runpod_registry_heartbeat.py Loading commit data...
test_runpod_release_and_boot_cancel.py Loading commit data...
test_runpod_request_gpu_choice.py Loading commit data...
test_runpod_restart_orphans.py Loading commit data...
test_runpod_restart_reclaim.py Loading commit data...
test_runpod_scale_down.py Loading commit data...
test_runpod_scale_out.py Loading commit data...
test_runpod_schedule_region_spend.py Loading commit data...
test_runpod_status_never_hangs.py Loading commit data...
test_runpod_transient_api.py Loading commit data...
test_runpod_warm_floor_parallel.py Loading commit data...
test_runpod_warm_floor_rerent.py Loading commit data...
test_runpod_warm_floor_respects_max_pods.py Loading commit data...
test_runpod_warmup.py Loading commit data...
test_shared_pool_adapter_identity.py Loading commit data...
test_studio_composed_surfaces.py Loading commit data...
test_surya_item_cap.py Loading commit data...
test_surya_loop_reported.py Loading commit data...
test_surya_retry_budget.py Loading commit data...
test_surya_runpod_fixes.py Loading commit data...
test_surya_thread_boundary.py Loading commit data...
test_system_reload_endpoint.py Loading commit data...
test_task_budget_and_teardown.py Loading commit data...
test_text_lora_to_pod.py Loading commit data...
test_thread_pool_sizing.py Loading commit data...
test_township_api_key.py Loading commit data...
test_township_clip_geometry.py Loading commit data...
test_township_longcat.py Loading commit data...
test_township_page_js.py Loading commit data...
test_township_templates.py Loading commit data...
test_township_video_dataset.py Loading commit data...
test_upgrade_launcher.py Loading commit data...
test_video_as_b64_scope.py Loading commit data...
test_video_geometry.py Loading commit data...
test_vllm_served_names_sections.py Loading commit data...
test_vllm_share_self_tuning.py Loading commit data...
test_vram_releasers.py Loading commit data...
test_weight_stores.py Loading commit data...
test_whisper_server_local_models.py Loading commit data...