Skip to content

hooks enabled: infinite lease glitch / exporter denial of service #236

@evakhoni

Description

@evakhoni

lease ended during beforeLease hook - session keeps open - infinite lease

 uv run jmp shell --selector hooks=both --duration 10s
[02/16/26 16:17:40] INFO     Acquiring lease 019c66d0-68bd-7949-ad31-1ea6e4a2e456 for selector hooks=both for duration 0:00:10 [jumpstarter.client.lease]
                    INFO     Waiting for ready connection at /run/user/1000/jumpstarter-f5j9j8tf/socket [jumpstarter.client.lease]
[02/16/26 16:17:50] INFO     Lease 019c66d0-68bd-7949-ad31-1ea6e4a2e456 ended at 2026-02-16 16:17:50+02:00 [jumpstarter.client.lease]
[02/16/26 16:17:51] INFO     Status changed: None -> LEASE_READY (version=3) [jumpstarter.client.status_monitor]
                    INFO     Starting hook subprocess... [exporter:beforeLease]
                    INFO     Creating PTY pair... [exporter:beforeLease]
                    INFO     PTY created: parent_fd=20, child_fd=21 [exporter:beforeLease]
python ⚡hooks-test-both ➤                     INFO     Executing inline script (interpreter: /bin/sh) [exporter:beforeLease]          

an attempt to open shell to that stuck lease:

 uv run jmp shell --lease 019c66d0-68bd-7949-ad31-1ea6e4a2e456
⠹ Waiting for server to provide status updates... (0:00:05)

if the client is killed (terminal window closed) - the lease is stuck forever. unable to connect to exporer anymore

 uv run jmp shell --selector hooks=both                
[02/16/26 20:09:07] INFO     Acquiring lease 019c67a4-50f8-7131-a875-200c30c047ec for selector hooks=both for duration 0:30:00 [jumpstarter.client.lease]                                     
                    INFO     Waiting for ready connection at /run/user/1000/jumpstarter-la8szncu/socket [jumpstarter.client.lease]                                                            
[02/16/26 20:09:27] INFO     Releasing Lease 019c67a4-50f8-7131-a875-200c30c047ec [jumpstarter.client.lease]                                                                                  
Error: Connection to exporter lost


 uv run jmp admin get exporter --namespace jumpstarter-lab
NAME             STATUS      ENDPOINT                               DEVICES  AGE  
hooks-test-both  LeaseReady  grpc.jumpstarter.10.0.0.1.nip.io:8082  3        5d22h
hooks-test-none  Offline     grpc.jumpstarter.10.0.0.1.nip.io:8082  0        5d22h

# in exporter logs
INFO:jumpstarter.exporter.exporter:Currently leased by hooks-client under 019c67b1-91ba-7354-be9e-72210b69cadc
INFO:jumpstarter.exporter.exporter:Currently not leased
WARNING:jumpstarter.exporter.exporter:Ignoring spurious leased=False during active session (status: LEASE_READY)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions