Skip to content

Changes

Started 8 days 0 hr ago
Took 20 hr

Summary

  1. [GovWayCore] (commit: cf22638) (details)
Commit cf22638f1f634a247e4101e38c0204639b0fbf91 by Andrea Poli
[GovWayCore]
Risolte diverse anomalie presenti nella gestione dei contatori distribuiti (Hazelcast e Redis):
- corretto  meccanismo di rotazione degli intervalli temporali: i nodi che non vincevano la competizione CAS al cambio di intervallo
  non aggiornavano il riferimento locale al nuovo contatore, causando `DistributedObjectDestroyedException` permanente (Hazelcast)
  o contatori stale (Redis) dopo il cleanup del contatore scaduto.
- Aggiunta protezione nell'END-PATH delle richieste in-flight (Hazelcast) per gestire contatori distrutti durante la transizione di intervallo,
  evitando la propagazione dell'errore al chiamante.
- Introdotto fail-fast in `DatoAtomicLong` (Hazelcast) per contatori distrutti nel CP Subsystem:
  il retry era inutile (name poisoning permanente) e causava ~4.5s di latenza e log massivi sul partition owner.
- Introdotta ottimizzazione sui contatori Redis (Redisson):
  . introdotto fast-path locale con cache `lastKnownActiveRequestIntervalDate` per evitare round-trip Redis nel hot path;
  . pre-check senza semaforo in `resetPolicyCounterForDate`;
  . TTL asincrono (`forceApplyTTLAsync`, `applyTTLIfNeededAsync`) in `DatoRAtomicLong.compareAndSet` per non bloccare il thread dentro il semaforo;
  . TTL specifico per activeRequestCounter con intervallo (`intervalloSecondi×3`, `renewTTLOnWrite=false`); operazione `getAsync` in `DatoRAtomicLong`.
- Il timer di cleanup dei contatori orfani Hazelcast non distrugge più i contatori di coordinamento (senza intervallo)
  per policy temporaneamente inattive. Nel CP Subsystem un nome distrutto è permanentemente avvelenato e non può essere ricreato,
  rendendo la policy inutilizzabile alla ripresa del traffico.
- Rinominata la proprietà `orphanedProxy.thresholdHours` in `orphanedProxy.threshold` con supporto per suffisso `h` (ore) e `m` (minuti)
  per una configurazione più flessibile.
- Aggiunto filtro RegexFilter a livello appender nel log4j2 per sopprimere i messaggi "is already destroyed" loggati internamente da Hazelcast
  sul partition owner, già gestiti dal codice applicativo.
(commit: cf22638)
The file was modifiedcore/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatoRAtomicLong.java (diff)
The file was modifiedChangeLog (diff)
The file was modifiedcore/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatiCollezionatiDistributedRedisAtomicLong.java (diff)
The file was modifiedcore/deploy/properties/govway.properties (diff)
The file was modifiedcore/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/HazelcastManager.java (diff)
The file was modifiedcore/src/org/openspcoop2/pdd/config/OpenSPCoop2Properties.java (diff)
The file was modifiedcore/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatoAtomicLong.java (diff)
The file was modifiedcore/deploy/properties/govway.log4j2.properties (diff)
The file was modifiedcore/src/org/openspcoop2/core/controllo_traffico/beans/DatiCollezionati.java (diff)
The file was modifiedcore/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatiCollezionatiDistributedAtomicLong.java (diff)
The file was modifiedcore/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatiCollezionatiDistributedPNCounter.java (diff)
The file was modifiedcore/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatoPNCounter.java (diff)
The file was modifiedcore/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatiCollezionatiDistributedLongAdder.java (diff)