- Spegnimento
- 23 settembre 2026 alle ore 10:41 UTC
- Autore
- Kamo
- Impegno
- e696226
getBulkPresence/getBulkLastSeen ha eseguito KEYS PRESENCE:*/PRESENCE LAST SEEN:* su ogni chiamata - colpito su ogni supporto di presenza-socket e la messa a fuoco scheda - e la spazzata 30s corsa due volte di più, tutti contro lo stesso Redis che tiene ogni sessione. KEYS passeggiate e blocchi l'intero spazio chiave; a scala della piattaforma che è un full-Redis stalla su un percorso di richiesta, non uno per-org. Ognuno dei tre ora legge un indice mantenuto invece di scansione: - PRESENCE ORG INDEX:{orgId} - a ZSET of memberId segnato dall'ultimo battito cardiaco, scritto da handleConnect/handleHeartbeat, rimosso da handleDisconnect's grace-period delete. getBulkPresence lo legge direttamente (il punteggio diorg è di costruzione ora, non un controllo per-candidate orgId); la metà del membro della spazza lo legge con ZRANGEBYSCORE per trovare solo candidati plausibilmente-stale. - PRESENCE ACTIVE ORGS - un SET di org ids, così la spazzata può visitare ogni org indice senza scoprire org ids dai dati dei membri della scansione. - No, no. - un supporto SET getBulkLastSeen il Allo stesso modo. Non spazzato, come prima: la chiave individuale di 400 giorni TTL è ancora ciò che lo ritira. - PRESENCE PUBLIC INDEX - un ZSET piatto per le sessioni dei visitatori (senza concetto di org, nulla li legge in massa da org), alimentando la metà pubblica della spazzata. Ogni chiave per-id hash (PRESENCE:, PRESENCE PUBLIC:, PRESENCE LAST SEEN:) è invariato - stessi campi, stessi TTL - e rimane l'unica fonte di verità per il suo stato; un indice solo restringe che ids ottenere guardato; una lettura o il spazzare ancora controlla l'hash reale prima di fidarsi o segnalare nulla, e self-heals (drops l'indice) se l'hash ha già superato. A rinvigorito battito cardiaco (chiave scaduta midsession) ancora non può attribuire un org - lo stesso divario che il vecchio KEYS+HGET("orgId") scansione aveva, dal momento che quel percorso non ha mai scritto il campo o; solo la vista org-bulk è influenzata, invariata da prima. Coperto da PresenceBulkLookupTest (nuovo) e PresenceSweepTest (riscritto per il nuovo meccanismo di scoperta, stessi perni comportamentali come prima più un "mai chiama KEYS" controllo), mutazione-controllato: cadere l'indice scrivere in manigliaConnect, il ramo auto-guarigione in getBulkPresence, e la guardia hasKey nella spazzata ogni volta una specifica asserzione rossa.
