issue_ticket writes the updated Event (with incremented tickets_issued) back to persistent storage but never calls extend_ttl afterward. Every other persistent write in the contract (create_event, save_ticket) immediately extends the TTL, so an event that only ever receives issuances (never a fresh create_event call) can approach expiry even while actively in use.
Suggested fix: After the set() call in issue_ticket, add env.storage().persistent().extend_ttl(&DataKey::Event(event_id), LEDGER_THRESHOLD, LEDGER_BUMP); to match the pattern used in create_event/save_ticket.
issue_ticketwrites the updatedEvent(with incrementedtickets_issued) back to persistent storage but never callsextend_ttlafterward. Every other persistent write in the contract (create_event,save_ticket) immediately extends the TTL, so an event that only ever receives issuances (never a freshcreate_eventcall) can approach expiry even while actively in use.Suggested fix: After the
set()call inissue_ticket, addenv.storage().persistent().extend_ttl(&DataKey::Event(event_id), LEDGER_THRESHOLD, LEDGER_BUMP);to match the pattern used increate_event/save_ticket.