Datenspeicher-Inkonsistenzfehler beim Abrufen von „InputStream for blobId“

Erfahren Sie, wie Sie den Fehler beim Abrufen des InputStream-Datenspeichers beheben. Kompilieren Sie eine Liste von - und stellen Sie die Pfade zu fehlenden Dateien wieder her - und indizieren Sie sie neu.

Beschreibung description

Umgebung

  • Experience Manager 6.4
  • Experience Manager 6.5

Problem/Symptome

Adobe Experience Manager In Ihrem ​ 6.x/Oak 1.x-System ​ Sie einen „FileDataStore“ konfiguriert. Im error.log wird Folgendes angezeigt:

Fehler beim Abrufen von InputStream für blobId.

10.09.2015 10:38:04.220 *ERROR* [ pool-9-thread-3]  org.apache.sling.commons.scheduler.impl.QuartzScheduler
Exception during job execution of org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@7fe7e8fa :
Error occurred while obtaining InputStream for blobId [ add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]
java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId [ add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]

Auflösung resolution

Dieser Fehler bedeutet, dass möglicherweise Dateien aus dem Adobe Experience Manager-Datenspeicherverzeichnis fehlen.  Der Verlust von Datenspeicherdateien kann auf einen Fehler bei der Oak Blob Garbage Collection, einen Speicherplatzausfall, einen Datenträger oder eine Instabilität der Netzwerkfreigabe zurückzuführen sein. Oder es kann daran liegen, dass ein Benutzer versehentlich Dateien vom Server löscht.

Gehen Sie wie folgt vor, um die fehlenden Dateien wiederherzustellen.

  1. Installieren Sie das neueste CFP/SP.

    Die neuesten Hotfixes finden Sie auf Adobe Package Share.

  2. Führen Sie eine Konsistenzprüfung des Datenspeichers aus.

    Führen Sie mit oak-run jar 1.6.6 und höher den folgenden Befehl aus:

    code language-none
    java -jar oak-run-*.jar datastorecheck --consistency -ref --id --fds crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config --repoHome crx-quickstart/repository --store crx-quickstart/repository/datastore --dump temp --verbose --track
    
  3. Erstellen Sie eine Liste der Pfade der fehlenden Dateien.

    Der nächste Schritt zum Wiederherstellen der fehlenden Dateien besteht darin, eine vollständige Liste der Pfade der fehlenden Dateien zu erstellen.

    Durchsuchen Sie die Ausgabe der Konsistenzprüfung nach allen Fehlervorfällen (nicht gefunden

    a. Unter Linux oder Unix: Verwenden Sie diesen Befehl, um die Liste der fehlenden Dateien an einen missing_ds_files.txt auszugeben:

    code language-none
    grep "blobId" consistency_check_output.txt | grep -Eo "[ 0-9a-f] {40,200}" | awk '{ print
    substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }' | sort -u >
    missing_ds_files.txt
    

    Hinweis - Wenn Ihre Adobe Experience Manager-Instanz aufgrund von blobId nicht startet, durchsuchen Sie stattdessen Ihre Protokolldateien unter crx-quickstart/logs nach allen Vorkommen der 'Error occurred while obtaining InputStream for blobId':

    code language-none
    grep "Error occurred while obtaining InputStream for blobId" error.log* | grep -Eo "[ 0-9a-f] {40,200}" | awk '{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }' | sort -u > missing_ds_files.txt
    

    Wenn der Befehl ordnungsgemäß funktionierte, würde der Inhalt von missing_ds_files.txt in etwa wie folgt aussehen:

    code language-none
    12/92/04/129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2
    9f/d8/38/9fd8386d20cf55e7e0024e18d0c7d4e8400454ee
    7a/13/15/7a1315788f45dafd6630454f04183601682a9f80
    28/37/d2/2837d24aed3ff223cd40e90222226c4ef2e2a0c6
    

    b. In Windows: Verwenden Sie einen Texteditor wie Textpad oder Notepad++, um alle Vorkommen von "nicht gefunden“. Extrahieren Sie dann, nachdem Sie alle derartigen Vorkommen gefunden haben, die Dateinamen mithilfe eines Makros, indem Sie ein Skript schreiben oder indem Sie die Dateinamen manuell kopieren und in eine neue Textdatei erstellen.

    Datenspeicherdateipfade werden aus dem Datensatznamen in folgendem Format erstellt: {first two chars of record id}/{second two chars of record id}/{third two chars of record id}/{record id}

    In diesem Fehler:

    code language-none
    java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId
    [ add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]
    

    Die Datensatz-ID ist add1dd8fc5093b27b1fae1b753cb48b24ef3231f und der Dateipfad ad/d1/dd/add1dd8fc5093b27b1fae1b753cb48b24ef3231f

  4. Stellen Sie die fehlenden Dateien wieder her.

    Verwenden Sie nun die Ausgabe aus dem letzten Schritt, um dieselben Dateien in anderen Adobe Experience Manager-Instanzen in Ihrer Umgebung zu suchen. Da die Datenspeicherdateien eindeutig gespeichert werden, können Sie sie von anderen Adobe Experience Manager-Instanzen in Ihrer Umgebung kopieren.

    Wenn Sie einige der Dateien nicht in anderen Instanzen finden können, durchsuchen Sie Ihre Backups und stellen Sie sie dort wieder her, falls möglich.

    Unter Linux können Sie sich bei jeder der funktionierenden Adobe Experience Manager-Instanzen anmelden und einen Befehl wie rsync verwenden, um alle fehlenden Dateien zu kopieren, die in ihnen vorhanden sind. Beispielsweise durch Ausführen von über das Datenspeicherverzeichnis auf dem Server, auf dem die Dateien fehlen:

    code language-none
    rsync -avR --files-from=missing_ds_files.txt . user@hostname-of-server-missing-files:/path/to/crx-quickstart/repository/repository/datastore/
    

    Der Befehl führt einen rsync-Befehl aus, der alle Dateien kopiert, die in missing_ds_files.txt aufgeführt sind und auf dem Server vorhanden sind.

  5. Bereinigen Sie nicht wiederherstellbare Dateiverweise.

    Wenn Sie einige der Dateien nicht aus der Sicherung oder von anderen Adobe Experience Manager-Instanzen wiederherstellen konnten, bereinigen oder beheben Sie die fehlerhaften Datenspeicherverweise. Führen Sie die Konsistenzprüfung des Datenspeichers so erneut aus, wie wir sie in Schritt 4 ausgeführt haben. Es wird eine aktuelle Liste der fehlenden Dateien angezeigt.

    Überprüfen Sie alle aufgelisteten Knotenpfade, die auf fehlende Datenspeicherdateien verweisen. Überprüfen Sie mit Ihrem Benutzer alle fehlenden DAM-Assets oder Dateien, die auf Seiten hochgeladen wurden. Fordern Sie sie auf, alle fehlenden Dateien erneut hochzuladen. Alle nicht erforderlichen Elemente können sicher über die Benutzeroberfläche von Adobe Experience Manager gelöscht werden. Wenn unter /var/audit oder /var/eventing etwas fehlt, kann es sicher gelöscht werden. Wenn Sie sich nicht sicher sind, gehen Sie hier und wenden Sie sich an das AEM-Supportteam.

  6. Indizieren Sie alle asynchronen Oak-Indizes neu.

    Da Indexdateien im Oak-Repository gespeichert werden, kann es auch sein, dass einige Dateien in /oak:index lucene-basierten Indizes fehlen.

    Diese fehlenden Dateien werden bei der Konsistenzprüfung unter /system/console/repository nicht gemeldet, da sie vor Repository-Durchläufen ausgeblendet sind. Leider stimmen solche Dateien nicht über verschiedene AEM-Instanzen hinweg überein.

    Um diese Inkonsistenzen zu beheben, indizieren Sie die betroffenen asynchronen Oak-Indizes neu.

    WARNUNG: Dieser Vorgang ist extrem teuer und erfordert verlängerte Ausfallzeiten von 10 Minuten bis zu mehreren Tagen, je nach Volumen des Inhalts im System.

    So indizieren Sie die asynchronen Indizes neu:

    1. Laden Sie oak-run 1.0.x herunter, das der in Ihrer Oak-Umgebung installierten Version entspricht: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/

    2. Laden Sie die oak-run-Datei auf den Adobe Experience Manager-Server hoch.

    3. Beenden Sie alle Adobe Experience Manager-Instanzen.

    4. Führen Sie den folgenden Befehl aus, der dem Oak-Speicher Ihrer Adobe Experience Manager-Instanz entspricht:

      TarMK-:

      code language-none
      java -Xmx4096m -jar /apps/staging/oak-run-*-*.jar checkpoints crx-quickstart/repository/segmentstore rm-all
      

      MongoMK-Befehl:

      code language-none
      java -Xmx4096m -jar oak-run-*-*.jar checkpoints mongodb://localhost/aem-author rm-all
      
    5. Starten Sie Adobe Experience Manager erneut und überwachen Sie Ihre Protokolldateien auf INFO-Protokollmeldungen aus org.apache.jackrabbit.oak.plugins.index. Wenn Sie weitere Details zur Indizierung sehen möchten, gehen Sie zu /system/console/slinglog UI und aktivieren Sie die Protokollierung auf Debugging-Ebene für org.apache.jackrabbit.oak.plugins.index.

      Sie sollten Protokollmeldungen wie die folgende sehen:

      code language-none
      23.06.2015 14:26:23.070 *INFO* [ FelixStartLevel]  org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: [ /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]
      
      23.06.2015 14:26:23.517 *INFO* [ FelixStartLevel]  org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing Traversed #10000 /jcr:system/jcr:versionStorage/c8/5f
      ...
      23.06.2015 14:28:51.999 *INFO* [ pool-8-thread-1]  org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing report
          - /oak:index/counter*(708)
          - /oak:index/authorizables*(159)
          - /oak:index/cqPageLucene*(1913)
          - /oak:index/ntBaseLucene*(444)
          - /oak:index/cqTagLucene*(512)
          - /oak:index/workflowDataLucene*(116)
      ...
      
      23.06.2015 14:28:52.009 *INFO* [ pool-8-thread-1]  org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Reindexing (async) completed for indexes: [ /oak:index/counter*(708), /oak:index/authorizables*(159), /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444), /oak:index/cqTagLucene*(512), /oak:index/workflowDataLucene*(116)]  in 30.36 s
      
    6. Wenn die Indizierung aus irgendeinem Grund fehlschlägt, wird sie in einer Schleife angezeigt, wobei diese Protokollmeldung wiederholt wird:

      code language-none
      23.06.2015 14:26:23.070 *INFO* [ FelixStartLevel]  org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: [ /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]
      
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f