Datastore-Inkonsistenzfehler beim Abrufen von "InputStream for blobId"

Erfahren Sie, wie Sie den Datenspeicher zum Abrufen des InputStream-Fehlers auflösen. Kompilieren Sie eine Liste von und stellen Sie Pfade zu fehlenden Dateien und zur Neuindizierung wieder her.

Beschreibung description

Umgebung

  • Experience Manager 6.4
  • Experience Manager 6.5

Problem/Symptome

Sie haben eine FileDataStore in Ihrem Adobe Experience Manager 6.x-/Oak 1.x-System konfiguriert ist und im error.log Folgendes angezeigt wird:

Fehler beim Abrufen 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 Ihrem Adobe Experience Manager-Datenspeicherverzeichnis fehlen.  Der Verlust von Datenspeicherdateien kann auf einen Fehler der Oak Blob Garbage Collection, einen Speicherplatzausfall, eine Instabilität der Festplatte oder Netzwerkfreigabe zurückzuführen sein. Oder es kann darauf zurückzuführen sein, dass ein Benutzer fälschlicherweise Dateien vom Server löscht.

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

  1. Installieren Sie die neueste CFP/SP-Version.

    Sie finden die neuesten Hotfixes auf Adobe Package Share.

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

    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 beim 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 Vorkommen von Fehlern. Datensatz nicht gefunden

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

    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 der blobId Fehler, suchen Sie dann Ihre Protokolldateien unter crx-quickstart/logs für alle Vorkommnisse des Fehlers 'Error occurred while obtaining InputStream for blobId' stattdessen:

    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äß funktioniert hat, dann wird der Inhalt von missing_ds_files.txt würde 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. Unter Windows: Verwenden Sie einen Texteditor wie Textpad oder Notepad++, um alle Vorkommen von Eintrag nicht gefunden. Extrahieren Sie dann nach dem Auffinden aller Vorkommnisse die Dateinamen mithilfe eines Makros, schreiben Sie ein Skript oder kopieren Sie die Dateinamen manuell und erstellen Sie sie in einer neuen Textdatei.

    DataStore-Dateipfade werden aus dem Datensatznamen in folgendem Format erstellt: {die ersten beiden Zeichen der Datensatz-ID}/{zweite zwei Zeichen der Datensatz-ID}/{dritt zwei Zeichen Datensatz-ID}/{Datensatz-ID}

    In diesem Fehler beispielsweise:

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

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

  4. Wiederherstellen der fehlenden Dateien.

    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 sind, können Sie sie aus anderen Adobe Experience Manager-Instanzen in Ihrer Umgebung kopieren.

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

    Unter Linux können Sie sich bei jeder der funktionierenden Adobe Experience Manager-Instanzen anmelden und einen Befehl wie rsync verwenden, um eine der fehlenden Dateien zu kopieren, die in ihnen vorhanden sind. Beispiel: Führen Sie sie aus dem Datenspeicherverzeichnis auf dem Server aus, der über die fehlenden Dateien verfügt:

    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 eine rsync aus, die alle Dateien kopiert, die in missing_ds_files.txt aufgeführt sind, die auf dem Server vorhanden sind.

  5. Bereinigen Sie nicht wiederherstellbare Dateiverweise.

    Wenn Sie einige der Dateien nicht aus der Sicherung oder aus anderen Adobe Experience Manager-Instanzen wiederherstellen konnten, sollten Sie die fehlerhaften Datenspeicherverweise bereinigen oder beheben. Führen Sie die DataStore-Konsistenzprüfung erneut aus, während wir sie in Schritt 4 ausgeführt haben. Sie erhalten eine aktuelle Liste der fehlenden Dateien.

    Überprüfen Sie die einzelnen aufgelisteten Knotenpfade, die auf fehlende Datenspeicherdateien verweisen. Überprüfen Sie alle fehlenden DAM-Assets oder -Dateien, die mit Ihrem Benutzer auf Seiten hochgeladen wurden. Bitten Sie sie, die fehlenden erneut hochzuladen. Nicht benötigte Elemente können sicher über die Benutzeroberfläche von Adobe Experience Manager gelöscht werden. Wenn etwas unter /var/audit oder /var/eventing fehlt, kann es sicher gelöscht werden. Für Dateien, bei denen Sie sich nicht sicher sind, gehen Sie zu here und kontaktieren Sie das AEM Support-Team, um Hilfe zu erhalten.

  6. Neuindizieren aller asynchronen Oak-Indizes.

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

    Diese fehlenden Dateien werden nicht in der Konsistenzprüfung /system/console/repositorycheck gemeldet, da sie von Repository-Durchläufen ausgeblendet werden. Leider würden solche Dateien nicht über verschiedene AEM hinweg übereinstimmen.

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

    WARNUNG: Dieser Vorgang ist äußerst kostspielig und erfordert längere Ausfallzeiten, die je nach Menge der Inhalte im System zwischen 10 Minuten und mehreren Tagen dauern können.

    So indizieren Sie die asynchronen Indizes neu:

    1. Laden Sie oak-run 1.0.x herunter, die mit der Version übereinstimmt, die Sie in Ihrer Oak-Umgebung installiert haben: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/

    2. Laden Sie die Oak-Run 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, Befehl:

      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 von org.apache.jackrabbit.oak.plugins.index. Wenn Sie weitere Details zur Indizierung anzeigen möchten, wechseln Sie zur Benutzeroberfläche /system/console/slinglog und aktivieren Sie die Protokollierung auf Debug-Ebene für org.apache.jackrabbit.oak.plugins.index.

      Sie sollten Protokollmeldungen wie die folgenden 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 Schleife angezeigt, die diese Protokollmeldung wiederholt:

      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