<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by andreapoli</shortDescription></cause><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by andreapoli</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigin3.1.jenkins _class='hudson.plugins.git.util.Build'><buildNumber>6</buildNumber><marked><SHA1>990a6a613b76be884385cfc28d7aa6dc67729f3d</SHA1><branch><SHA1>990a6a613b76be884385cfc28d7aa6dc67729f3d</SHA1><name>refs/remotes/origin/3.1.jenkins</name></branch></marked><revision><SHA1>990a6a613b76be884385cfc28d7aa6dc67729f3d</SHA1><branch><SHA1>990a6a613b76be884385cfc28d7aa6dc67729f3d</SHA1><name>refs/remotes/origin/3.1.jenkins</name></branch></revision></refsremotesorigin3.1.jenkins><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>1381</buildNumber><marked><SHA1>e858bb00cd8c8efab90c5a351ae57f06d19ef832</SHA1><branch><SHA1>e858bb00cd8c8efab90c5a351ae57f06d19ef832</SHA1><name>origin/master</name></branch></marked><revision><SHA1>e858bb00cd8c8efab90c5a351ae57f06d19ef832</SHA1><branch><SHA1>e858bb00cd8c8efab90c5a351ae57f06d19ef832</SHA1><name>origin/master</name></branch></revision></originmaster><origin3.1.jenkins _class='hudson.plugins.git.util.Build'><buildNumber>76</buildNumber><marked><SHA1>fbd33042190e7fcbeb9182a6909b8ff8d9a5656a</SHA1><branch><SHA1>fbd33042190e7fcbeb9182a6909b8ff8d9a5656a</SHA1><name>origin/3.1.jenkins</name></branch></marked><revision><SHA1>fbd33042190e7fcbeb9182a6909b8ff8d9a5656a</SHA1><branch><SHA1>fbd33042190e7fcbeb9182a6909b8ff8d9a5656a</SHA1><name>origin/3.1.jenkins</name></branch></revision></origin3.1.jenkins><origin3.3.0.jdk11 _class='hudson.plugins.git.util.Build'><buildNumber>285</buildNumber><marked><SHA1>10354f7c80b4e499ba1c695eea151d13f42d6f0a</SHA1><branch><SHA1>10354f7c80b4e499ba1c695eea151d13f42d6f0a</SHA1><name>origin/3.3.0.jdk11</name></branch></marked><revision><SHA1>10354f7c80b4e499ba1c695eea151d13f42d6f0a</SHA1><branch><SHA1>10354f7c80b4e499ba1c695eea151d13f42d6f0a</SHA1><name>origin/3.3.0.jdk11</name></branch></revision></origin3.3.0.jdk11></buildsByBranchName><lastBuiltRevision><SHA1>e858bb00cd8c8efab90c5a351ae57f06d19ef832</SHA1><branch><SHA1>e858bb00cd8c8efab90c5a351ae57f06d19ef832</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/link-it/govway.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='hudson.plugins.sonar.action.SonarAnalysisAction'><ceTaskId>f79156e9-518f-4ce6-afe8-3c9ee9ca5632</ceTaskId><credentialsId>govwaysonarqubeadmin</credentialsId><installationName>Sonar-GovWay</installationName><installationUrl>https://jenkins.link.it/govway-sonarqube/</installationUrl><new>true</new><serverUrl>https://jenkins.link.it/govway-sonarqube</serverUrl><skipped>false</skipped><sonarqubeDashboardUrl>https://jenkins.link.it/govway-sonarqube/dashboard?id=govway</sonarqubeDashboardUrl></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>2</failCount><skipCount>0</skipCount><totalCount>9047</totalCount><urlName>testReport</urlName></action><action _class='hudson.plugins.testng.TestNGTestResultBuildAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>9034</totalCount><urlName>testngreports</urlName></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='hudson.plugins.disk_usage.BuildDiskUsageAction'></action><action _class='hudson.plugins.sonar.action.SonarBuildBadgeAction'><url>https://jenkins.link.it/govway-sonarqube/dashboard?id=govway</url></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#1381</displayName><duration>67946808</duration><estimatedDuration>73663599</estimatedDuration><fullDisplayName>GovWay #1381</fullDisplayName><id>1381</id><inProgress>false</inProgress><keepLog>false</keepLog><number>1381</number><queueId>100</queueId><result>SUCCESS</result><timestamp>1772647122838</timestamp><url>https://jenkins.link.it/govway/job/GovWay/1381/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/HazelcastManager.java</affectedPath><affectedPath>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatiCollezionatiDistributedRedisAtomicLong.java</affectedPath><affectedPath>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatiCollezionatiDistributedLongAdder.java</affectedPath><affectedPath>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatiCollezionatiDistributedAtomicLong.java</affectedPath><affectedPath>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatoRAtomicLong.java</affectedPath><affectedPath>core/deploy/properties/govway.properties</affectedPath><affectedPath>core/src/org/openspcoop2/core/controllo_traffico/beans/DatiCollezionati.java</affectedPath><affectedPath>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatoAtomicLong.java</affectedPath><affectedPath>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatoPNCounter.java</affectedPath><affectedPath>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatiCollezionatiDistributedPNCounter.java</affectedPath><affectedPath>core/deploy/properties/govway.log4j2.properties</affectedPath><affectedPath>ChangeLog</affectedPath><affectedPath>core/src/org/openspcoop2/pdd/config/OpenSPCoop2Properties.java</affectedPath><commitId>e858bb00cd8c8efab90c5a351ae57f06d19ef832</commitId><timestamp>1772646786000</timestamp><author><absoluteUrl>https://jenkins.link.it/govway/user/poli</absoluteUrl><fullName>Andrea Poli</fullName></author><authorEmail>andreapoli80@gmail.com</authorEmail><comment>[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.
</comment><date>2026-03-04 18:53:06 +0100</date><id>e858bb00cd8c8efab90c5a351ae57f06d19ef832</id><msg>[GovWayCore]</msg><path><editType>edit</editType><file>core/deploy/properties/govway.log4j2.properties</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/HazelcastManager.java</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatoPNCounter.java</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatiCollezionatiDistributedLongAdder.java</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatoAtomicLong.java</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatiCollezionatiDistributedRedisAtomicLong.java</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/config/OpenSPCoop2Properties.java</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatiCollezionatiDistributedPNCounter.java</file></path><path><editType>edit</editType><file>core/deploy/properties/govway.properties</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/redisson/counters/DatoRAtomicLong.java</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/core/controllo_traffico/beans/DatiCollezionati.java</file></path><path><editType>edit</editType><file>core/src/org/openspcoop2/pdd/core/controllo_traffico/policy/driver/hazelcast/counters/DatiCollezionatiDistributedAtomicLong.java</file></path><path><editType>edit</editType><file>ChangeLog</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.link.it/govway/user/poli</absoluteUrl><fullName>Andrea Poli</fullName></culprit></freeStyleBuild>