Inkonsekvent datalagerfel vid hämtning av InputStream för blobId
Lär dig hur du löser datalagret genom att hämta InputStream-fel. Kompilera en lista över och återställ sökvägar till saknade filer och indexera om.
Beskrivning description
Miljö
- Experience Manager 6.4
- Experience Manager 6.5
Problem/symtom
Du har konfigurerat FileDataStore i ditt Adobe Experience Manager 6.x-/Oak 1.x-system och i error.log visas följande:
Ett fel uppstod när InputStream for blobId hämtades.
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]
Upplösning resolution
Detta fel innebär att du kanske saknar filer i Adobe Experience Manager datalagerkatalog. Förloringen av datalagerfiler kan bero på fel i Oak Blob Garbage Collection, ett diskutrymmesavbrott, en disk- eller nätverksresursinstallation. Det kan också bero på att en användare felaktigt tar bort filer från servern.
Följ stegen nedan för att återställa de saknade filerna.
-
Installera den senaste CFP/SP.
Du hittar de senaste snabbkorrigeringarna på Adobe Package Share.
-
Kör konsekvenskontroll av datalager.
Använd ekrun jar 1.6.6 och senare och kör följande kommando:
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 -
Skapa en lista med sökvägar för de saknade filerna.
Nästa steg på vägen mot att återställa de saknade filerna är att kompilera en fullständig lista över sökvägarna till de filer som saknas.
Sök i utdata från konsekvenskontrollen efter alla förekomster av felet Posten hittades inte
a. I Linux eller Unix: Använd det här kommandot om du vill visa listan över saknade filer i en fil
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.txtObs - Om din Adobe Experience Manager-instans inte startas på grund av
blobId-felen söker du i loggfilerna undercrx-quickstart/logsefter alla förekomster av felet'Error occurred while obtaining InputStream for blobId'i stället: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.txtOm kommandot fungerade korrekt skulle innehållet i
missing_ds_files.txtse ut ungefär så här:code language-none 12/92/04/129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2 9f/d8/38/9fd8386d20cf55e7e0024e18d0c7d4e8400454ee 7a/13/15/7a1315788f45dafd6630454f04183601682a9f80 28/37/d2/2837d24aed3ff223cd40e90222226c4ef2e2a0c6b. I Windows: Använd en textredigerare som TextPad eller Anteckningar++ för att hitta alla förekomster av Post som inte hittas. När du har hittat alla sådana förekomster extraherar du filnamnen med ett makro, skriver ett skript eller genom att kopiera och konstruera filnamnen manuellt i en ny textfil.
Sökvägar till DataStore-filer skapas från postnamnet i det här formatet: {de två första tecknen med post-ID}/{de två andra tecknen med post-ID}/{de två tredje tecknen med post-ID}/{post-id}
I det här felet:
code language-none java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId [ add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]post-ID är
add1dd8fc5093b27b1fae1b753cb48b24ef3231foch filsökvägen ärad/d1/dd/add1dd8fc5093b27b1fae1b753cb48b24ef3231f -
Återställ de saknade filerna.
Använd nu utdata från det sista steget för att söka efter samma filer i andra Adobe Experience Manager-instanser i din miljö. Eftersom datalagrets filer lagras unikt kan du kopiera dem från andra Adobe Experience Manager-instanser i din miljö.
Om du inte kan hitta vissa filer i andra instanser söker du efter säkerhetskopior och återställer dem därifrån om det är möjligt.
I Linux kan du logga in på var och en av de fungerande Adobe Experience Manager-instanserna och använda ett kommando som t.ex. rsync för att kopiera över de saknade filerna som finns i dem. Genom att köra den från datalagrets katalog på servern som har de saknade filerna:
code language-none rsync -avR --files-from=missing_ds_files.txt . user@hostname-of-server-missing-files:/path/to/crx-quickstart/repository/repository/datastore/Kommandot kör en synkronisering som kopierar över alla filer i listan missing_ds_files.txt som finns på servern.
-
Rensa oåterkalleliga filreferenser.
Om du inte kunde återställa vissa av filerna från en säkerhetskopia eller från andra Adobe Experience Manager-instanser bör du rensa eller åtgärda de felaktiga datalagerreferenserna. Kör konsekvenskontrollen för DataStore igen när vi körde den i steg 4. Du får en aktuell lista över saknade filer.
Granska alla nodsökvägar i listan som refererar till saknade datalagerfiler. Granska eventuella saknade DAM-resurser eller filer som överförts till sidor med användaren. Låt dem ladda upp alla saknade som de behöver. Allt de inte behöver kan tas bort via Adobe Experience Manager användargränssnitt. Om något saknas under /var/audit eller /var/eventing kan tas bort. För filer som du inte är säker på går du hit och kontaktar AEM supportteamet för att få hjälp.
-
Indexera om alla asynkrona Oak-index.
Eftersom indexfiler lagras i Oak-databasen kan det också vara möjligt att vissa filer saknas i /oak:index-baserade index.
De saknade filerna kommer inte att rapporteras i konsekvenskontrollen /system/console/database eftersom de är dolda för databasöverföringar. Tyvärr matchar inte sådana filer i olika AEM instanser.
Om du vill åtgärda sådana inkonsekvenser indexerar du om de påverkade asynkrona Oak-indexen.
VARNING! Den här åtgärden är extremt dyr och kräver längre driftstopp, var som helst från 10 minuter till flera dagar för att slutföras beroende på systemets innehållsvolym.
Så här indexerar du om asynkrona index:
-
Ladda ned eko-run 1.0.x som matchar den version du har installerad i din Oak-miljö: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/
-
Ladda upp ekkörningen till Adobe Experience Manager-servern.
-
Stoppa alla Adobe Experience Manager-instanser.
-
Kör kommandot nedan som motsvarar din Adobe Experience Manager-instans Oak-lagring:
Kommandot TARMK:
code language-none java -Xmx4096m -jar /apps/staging/oak-run-*-*.jar checkpoints crx-quickstart/repository/segmentstore rm-allMongoMK-kommando:
code language-none java -Xmx4096m -jar oak-run-*-*.jar checkpoints mongodb://localhost/aem-author rm-all -
Starta Adobe Experience Manager igen och övervaka loggfilerna för INFO-loggmeddelanden från
org.apache.jackrabbit.oak.plugins.index. Om du vill se mer information om indexeringen går du till /system/console/slinglog UI och aktiverar felsökningsnivåloggning förorg.apache.jackrabbit.oak.plugins.index.Du bör se loggmeddelanden som dessa:
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 -
Om indexeringen av någon anledning misslyckas, skulle du se en slinga och upprepa det här loggmeddelandet:
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]
-