L'aggiunta o il caricamento delle tabelle sembra non funzionare dopo l'aggiornamento dell'istanza ( NoSuchMethodError )
Dopo aver aggiornato Data Gate un'istanza, viene visualizzato un messaggio di errore nella finestra Data Gate principale che indica un errore nell'aggiunta o nel caricamento della tabella. Il messaggio di errore è in realtà un falso messaggio di errore; tutte le tabelle selezionate sono state aggiunte o caricate correttamente. Per evitare che il falso messaggio di errore ricompaia, segui i passaggi descritti in questa sezione.
Sintomi
Errore nell'invio dell'Error Handler: java.lang.NoSuchMethodError:
com/fasterxml/jackson/core/util/BufferRecycler.releaseToPool()V
(caricato dal file:
/head/clone-api/work/jetty-0_0_0_0-8188-clone-api_war-_clone_system-any-/webapp/WEB-INF/lib/jackson-
core-2.15.4.jar di WebAppClassLoader{clone-api }@6adc203b )
chiamato dalla classe com.fasterxml.jackson.databind.ObjectMapper
(caricato da file:/head/clone-api/work/jetty-0_0_0_0-8188-clone-api_war-_clone_system-any-/webapp/WEB-INF/lib/jackson-
databind-2.18.2.jar di WebAppClassLoader{clone-api }@6adc203b ).
Cause
Il messaggio è causato dalla dipendenza jackson-databind, che non è stata aggiornata correttamente durante l'aggiornamento. Non indica un vero e proprio errore di aggiunta o caricamento.
Risoluzione del problema
Per evitare che questo messaggio ricompaia in futuro, procedi come segue:
- Apri una shell nel contenitore data-gate-api del Data Gate pod:
dove il valore dioc exec -it -c data-gate-api ${DG_POD_ID} -- bashDG_POD_IDpuò essere determinato come segue:- Determinare l'ID Data Gate dell'istanza che si desidera aggiornare eseguendo il oc get dginstance comando, come in questo esempio:
oc get dginstance -n ${PROJECT_CPD_INST_OPERANDS} NAME VERSION BUILD STATUS RECONCILED AGE dg1699914520773847 5.0.0 5.0.0.82 Completed 5.0.0 6h58mL'ID dell'istanza in questo esempio èdg1699914520773847.
- Determina l'ID del pod del server Data Gate dell'istanza eseguendo il seguente comando:
doveDG_POD_ID=$(oc get pod -l icpdsupport/app=dg-instance-server,\ icpdsupport/serviceInstanceId=`echo ${DG_INSTANCE_ID} | sed 's/^dg//'` -o jsonpath='{.items[0].metadata.name}')DG_INSTANCE_IDè l'ID dell'istanza identificato nel passaggio 1.a.
- Determinare l'ID Data Gate dell'istanza che si desidera aggiornare eseguendo il oc get dginstance comando, come in questo esempio:
- Rimuovi il .JETTY.INITIALIZED file all'interno del contenitore data-gate-api:
rm /head/clone-api/.JETTY.INITIALIZED - Elimina il pod:
oc delete pod ${DG_POD_ID}dove
DG_POD_IDè l'ID del pod identificato nel passaggio 1.b. - Il pod viene ricreato e si riavvia automaticamente. Attendi fino a quando il pod non sarà nuovamente in esecuzione.
- Apri una shell nel contenitore data-gate-api del pod Data Gate riavviato:
oc exec -it -c data-gate-api ${DG_POD_ID} -- bashPer il valore di
DG_POD_ID, vedere il passaggio 1.b. - Elenca le librerie interessate:
ls -la /head/clone-api/work/jetty-0_0_0_0-8188-clone-api_war-_clone_system-any-/webapp/WEB-INF/lib/jackson* - Verificare che siano visualizzate le versioni corrette.
- Riprova l'operazione che prima sembrava non funzionare.