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

Una finestra di errore nella finestra Cloud Pak for Data principale mostra un messaggio simile al seguente:
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:

  1. Apri una shell nel contenitore data-gate-api del Data Gate pod:
    oc exec -it -c data-gate-api ${DG_POD_ID} -- bash
    
    
    dove il valore di DG_POD_ID può essere determinato come segue:
    1. 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        6h58m

      L'ID dell'istanza in questo esempio èdg1699914520773847.

    2. Determina l'ID del pod del server Data Gate dell'istanza eseguendo il seguente comando:
      
      DG_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}')
      dove DG_INSTANCE_ID è l'ID dell'istanza identificato nel passaggio 1.a.
  2. Rimuovi il .JETTY.INITIALIZED file all'interno del contenitore data-gate-api:
    rm /head/clone-api/.JETTY.INITIALIZED
  3. Elimina il pod:
    oc delete pod ${DG_POD_ID}

    dove DG_POD_ID è l'ID del pod identificato nel passaggio 1.b.

  4. Il pod viene ricreato e si riavvia automaticamente. Attendi fino a quando il pod non sarà nuovamente in esecuzione.
Verifica della correzione:
  1. Apri una shell nel contenitore data-gate-api del pod Data Gate riavviato:
    oc exec -it -c data-gate-api ${DG_POD_ID} -- bash
    
    

    Per il valore di DG_POD_ID, vedere il passaggio 1.b.

  2. 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*
  3. Verificare che siano visualizzate le versioni corrette.
  4. Riprova l'operazione che prima sembrava non funzionare.