hrnext / it-dgc-verificac19-spring

Java Spring Digital Green Certificate SDK
Apache License 2.0
4 stars 6 forks source link

A StackOverflowError is a runtime error in Java. #12

Closed MatteoVianello27 closed 2 years ago

MatteoVianello27 commented 2 years ago

Buongiorno, quando lancio l'applicazione mi si preenta il seguente errore: A StackOverflowError is a runtime error in Java. Mentre aggiorna in certificati entra in un loop infinito.

marcoserafini2 commented 2 years ago

Ciao @MatteoVianello27, puoi fornire qualche informazioni più? Su che DB stai effettuando persistenza tramite JPA?

MatteoVianello27 commented 2 years ago

sto effettuando la persistenza su H2 in memeory database: spring.datasource.url=jdbc:h2:file:./check19.db

ho aggiunto questi parametri con più memoria per la JVM: -Xmx4096m -Xms256m -Xss10M

sta scaricando certificati da circa 20 minuti.

ghesio commented 2 years ago

Ciao, stesso problema pure da me (sia sul mio fork sia sull'ultimo tag del master della repo). Sembra esserci qualcosa che non va nel download della DRL, da cui se lasciata andare per lungo tempo può portare ad andare OOM come riportato da @MatteoVianello27 .

Ho provato a stampare il resumeTokem dal metodo VerifierRepository:fetchCertificate e l'output è il seguente:

8781
8782
8783
8784
8785
2022-02-28 11:15:12.759  INFO 13412 --- [           main] i.d.v.data.VerifierRepositoryImpl        : Version DRL: 0 
2022-02-28 11:15:36.051  INFO 13412 --- [           main] i.d.v.data.VerifierRepositoryImpl        : downloadChunks: 1
8784
8785
2022-02-28 11:16:04.417  INFO 13412 --- [           main] i.d.v.data.VerifierRepositoryImpl        : Version DRL: 0 
2022-02-28 11:16:05.689  INFO 13412 --- [           main] i.d.v.data.VerifierRepositoryImpl        : downloadChunks: 1
8784
8785
2022-02-28 11:16:24.023  INFO 13412 --- [           main] i.d.v.data.VerifierRepositoryImpl        : Version DRL: 0 
2022-02-28 11:17:20.256  INFO 13412 --- [           main] i.d.v.data.VerifierRepositoryImpl        : downloadChunks: 1
8784
8785
2022-02-28 11:19:36.596  INFO 13412 --- [           main] i.d.v.data.VerifierRepositoryImpl        : Version DRL: 0 
...

sembrerebbe esserci un problema quando il download arriva all'ultimo resumeToken che lo manda in loop all'infinito

orzesmatteo commented 2 years ago

Salve a tutti, stamattina ho riscontrato il medesimo problema, in una sessione di debug ho notato che vengono effettuati alcuni controlli sulle versioni dei certificati revocati utilizzando '==' invece che equals() su alcuni Long non primitivi. In particolare mi riferisco ai metodi outDatedVersion e getRevokeList della classe VerifierRepositoryImpl. Sostituiti i controlli utilizzando equals() l'applicativo ha completato la sincronizzazione e funziona correttamente.

francesconigro commented 2 years ago

Fix rilasciata. Grazie