Aggiungi nuovo datastore durante l'aggiornamento

Aug 24 2020

Voglio migrare il contenuto binario dal segmentstore a un nuovo datastore durante un aggiornamento del repository. La versione corrente del mio repository è 1.6.1. Utilizza TarMK segmentstore e non ha datastore. Nella mia esperienza, avere binari in un archivio dati di file offre un notevole aumento delle prestazioni. Quindi è quello che voglio fare con il mio aggiornamento a 1.26.0. Ma come si copiano i file binari in un nuovo datastore?

Questo comando migra il mio contenuto nel nuovo repository. L'applicazione carica il contenuto correttamente. Ma non esiste un datastore.

$ java -jar ~/oak-upgrade-1.26.0.jar --copy-binaries 
    --copy-orphaned-versions=false --copy-versions=false 
    --include-paths=/apps/lsa,/content/lsa,/var/recyclebin/content/lsa 
    ../dev-jun-author/sling/repository sling/repository

Quando provo a copiare i file binari in un nuovo archivio dati usando questo comando ...

  $ java -jar ~/oak-upgrade-1.26.0.jar --copy-binaries 
         --include-paths=/apps/lsa,/content/lsa,/var/recyclebin/content/lsa 
         --datastore=sling/repository/datastore ../dev-jun-author/sling/repository sling/repository

Ha il seguente output ..

24.08.2020 16: 43: 12.263 [main] INFO org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationOptions - parametro copyVersions impostato su 1969-12-31 24.08.2020 16: 43: 12.265 [main] INFO org .apache.jackrabbit.oak.upgrade.cli.parser.MigrationOptions - parametro copyOrphanedVersions impostato su 1969-12-31 24.08.2020 16: 43: 12.265 [principale] INFO org.apache.jackrabbit.oak.upgrade.cli.parser. MigrationOptions - percorsi da includere: [/ apps / lsa, / content / lsa, / var / recyclebin / content / lsa] 24.08.2020 16: 43: 12.265 [main] INFO org.apache.jackrabbit.oak.upgrade.cli. parser.MigrationOptions - Dimensione cache: 256 MB 24.08.2020 16: 43: 12.269 [principale] INFOorg.apache.jackrabbit.oak.upgrade.cli.parser.StoreArguments - Fonte: SEGMENT_TAR [../ dev-jun-author / sling / repository] 24.08.2020 16: 43: 12.271 [main] INFO org.apache.jackrabbit .oak.upgrade.cli.parser.StoreArguments - Destinazione: SEGMENT_TAR [sling / repository] 24.08.2020 16: 43: 12.296 [main] INFO org.apache.jackrabbit.oak.segment.file.FileStore - Creazione dell'archivio file FileStoreBuilder { versione = 1.26.0, directory = .. / dev-jun-author / sling / repository / segmentstore, blobStore = null, maxFileSize = 256, segmentCacheSize = 256, stringCacheSize = 256, templateCacheSize = 64, stringDeduplicationCacheSize = 15000, templateDeduplicationCacheSize = 3000 , nodeDeduplicationCacheSize = 1048576, memoryMapping = false, offHeapAccess = false, gcOptions = SegmentGCOptions {paused = false, estimationDisabled = false, gcSizeDeltaEstimation = 1073741824, retryCount = 5, forceTimeout = 60, retainedGenerations} 16.08 : 43: 12.428 [principale] INFO org.apache.jackrabbit.oak.segment.file.ReadOnlyFileStore - TarMK ReadOnly aperto: ../dev -jun-author / sling / repository / segmentstore (mmap = false) 24.08.2020 16: 43: 12.601 [main] INFO org.apache.jackrabbit.oak.segment.file.ReadOnlyFileStore - TarMK chiuso: ../dev-jun -author / sling / repository / segmentstore 24.08.2020 16: 43: 12.618 [main] INFO org.apache.jackrabbit.oak.upgrade.cli.parser.DatastoreArguments - Blob incorporati in SEGMENT_TAR [../ dev-jun-author / sling / repository] verrà copiato in FileDataStore [sling / repository / datastore] 24.08.2020 16: 43: 12.619 [main] INFO org.apache.jackrabbit.oak.upgrade.cli.parser.DatastoreArguments - Source blob store: DummyBlobStore 24.08 .2020 16: 43: 12.619 [main] INFO org.apache.jackrabbit.oak.segment.file.FileStore - Creazione dell'archivio file FileStoreBuilder {versione = 1.26.0, directory = .. / dev-jun-author / sling / repository / segmentstore, blobStore = null, maxFileSize = 256, segmentCacheSize = 256, stringCacheSize = 256, templateCacheSize = 64, stringDeduplicationCacheSize = 15000, templateDeduplicationCacheSize = 3000, nodeDeduplicationCacheSize = 1048576, memoryMapping = true , offHeapAccess = false, gcOptions = SegmentGCOptions {paused = false, estimationDisabled = false, gcSizeDeltaEstimation = 1073741824, retryCount = 5, forceTimeout = 60, retainedGenerations = 2, gcType = FULL}} 24.08.2020 16: 43: 12.632 [main] INFO org.apache.jackrabbit.oak.segment.file.ReadOnlyFileStore - TarMK ReadOnly aperto: ../dev-jun-author/sling/repository/segmentstore (mmap = true) 24.08.2020 16: 43: 12.635 [main] INFO org .apache.jackrabbit.oak.segment.SegmentNodeStore $ SegmentNodeStoreBuilder

  • Creazione dell'archivio del nodo del segmento SegmentNodeStoreBuilder {blobStore = inline} 24.08.2020 16: 43: 12.644 [main] INFO org.apache.jackrabbit.oak.segment.scheduler.LockBasedScheduler - Inizializzazione di SegmentNodeStore con l'opzione commitFairLock abilitata. 24.08.2020 16: 43: 12.654 [main] INFO org.apache.jackrabbit.oak.upgrade.cli.parser.DatastoreArguments - Archivio BLOB di destinazione: FileDataStore [sling / repository / datastore] 24.08.2020 16: 43: 12.665 [main ] INFO org.apache.jackrabbit.oak.segment.file.FileStore - Creazione dell'archivio file FileStoreBuilder {versione = 1.26.0, directory = sling / repository / segmentstore, blobStore = DataStore supportato BlobStore [org.apache.jackrabbit.oak.plugins .blob.datastore.OakFileDataStore], maxFileSize = 256, segmentCacheSize = 256, stringCacheSize = 256, templateCacheSize = 64, stringDeduplicationCacheSize = 15000, templateDeduplicationCacheSize = 3000, nodeDeduplicationCacheSize = 1048576, memoryCacheSize = 1048576, memoryMappment false, estimationDisabled = false, gcSizeDeltaEstimation = 1073741824, retryCount = 5, forceTimeout = 60, retainedGenerations = 2, gcType = FULL}}

Il registro degli errori di Sling ha questo output

25.08.2020 10: 32: 35.030 ERRORE [0: 0: 0: 0: 0: 0: 0: 1 [1598365955029] OTTIENI /content/lsa/assets/Screen%20Shot%202020-04-15%20at%204.06. 14% 20 PM.png HTTP / 1.1] org.apache.sling.engine.impl.SlingRequestProcessorImpl servizio: Uncaught Throwable java.lang.IllegalStateException: Tentativo di leggere il blob esterno con blobId [d4c06d8a7e0b3381caa5c918d6dd6619d603 jackrabbit.oak.segment.SegmentBlob.getBlob (SegmentBlob.java:248) [org.apache.jackrabbit.oak-segment-tar: 1.26.0] su org.apache.jackrabbit.oak.segment.SegmentBlob.getNewStream (SegmentBlob. java: 253) [org.apache.jackrabbit.oak-segment-tar: 1.26.0] su org.apache.jackrabbit.oak.segment.SegmentBlob.getNewStream (SegmentBlob.java:84) [org.apache.jackrabbit.oak -segment-tar: 1.26.0] in org.apache.jackrabbit.oak.plugins.value.jcr.BinaryImpl.getStream (BinaryImpl.java:59) [org.apache.jackrabbit.oak-store-spi: 1.26.0 ] in org.apache.sling.jcr.resource.internal.helper.LazyInputStream.getStr eam (LazyInputStream.java:106) [org.apache.sling.jcr.resource: 3.0.20] su org.apache.sling.jcr.resource.internal.helper.LazyInputStream.read (LazyInputStream.java:65) [org .apache.sling.jcr.resource: 3.0.20] su org.apache.commons.io.IOUtils.copyLarge (IOUtils.java:2314) [org.apache.commons.io:2.6.0] su org.apache. commons.io.IOUtils.copy (IOUtils.java:2270) [org.apache.commons.io:2.6.0] su org.apache.commons.io.IOUtils.copyLarge (IOUtils.java:2291) [org.apache .commons.io: 2.6.0] su org.apache.commons.io.IOUtils.copy (IOUtils.java:2246) [org.apache.commons.io:2.6.0] su com.peregrine.rendition.RenditionsServlet $ StreamResponse.writeTo (RenditionsServlet.java:191) [com.peregrine-cms.base.core: 1.0.0.SNAPSHOT] su com.peregrine.commons.servlets.AbstractBaseServlet.doRequest (AbstractBaseServlet.java:133) su com.peregrine .commons.servlets.AbstractBaseServlet.doGet (AbstractBaseServlet.java:82) su org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService (SlingSafeMethodsServlet.java:266) [org.apache.s ling.api: 2.22.0] su org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService (SlingAllMethodsServlet.java:137) [org.apache.sling.api: 2.22.0] su org.apache.sling.api servizio apache.sling.api: 2.22.0] su org.apache.sling.engine.impl.request.RequestData.service (RequestData.java:552) [org.apache.sling.engine: 2.7.2] su org.apache .sling.engine.impl.filter.SlingComponentFilterChain.render (SlingComponentFilterChain.java:44) [org.apache.sling.engine: 2.7.2] su org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter (AbstractSlingFilter .java: 82) [org.apache.sling.engine: 2.7.2] in org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent (SlingRequestProcessorImpl.java:283) [org.apache.sling.engine: 2.7. 2] in org.apache.sling.engine.impl.filter.RequestSlingFilterCha in.render (RequestSlingFilterChain.java:49) [org.apache.sling.engine: 2.7.2] in org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter (AbstractSlingFilterChain.java:82) [org.apache .sling.engine: 2.7.2] in org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter (RequestProgressTrackerLogFilter.java:110) [org.apache.sling.engine: 2.7.2] in org.apache. sling.engine.impl.filter.AbstractSlingFilterChain.doFilter (AbstractSlingFilterChain.java:72) [org.apache.sling.engine: 2.7.2] su org.apache.sling.i18n.impl.I18NFilter.doFilter (I18NFilter.java: 131) [org.apache.sling.i18n: 2.5.14] su org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter (AbstractSlingFilterChain.java:72) [org.apache.sling.engine: 2.7.2 ] su org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter (AbstractSlingFilterChain.java:78) [org.apache.sling.engine: 2.7.2] su org.apache.sling.engine.impl.SlingRequestProcessorImpl. doProcessRequest (SlingRequestProcessorImpl.java:151) [o g.apache.sling.engine: 2.7.2] su org.apache.sling.engine.impl.SlingMainServlet.service (SlingMainServlet.java:250) [org.apache.sling.engine: 2.7.2] su org.apache .felix.http.base.internal.handler.ServletHandler.handle (ServletHandler.java:123) [org.apache.felix.http.jetty: 4.0.18] su org.apache.felix.http.base.internal.dispatch .InvocationChain.doFilter (InvocationChain.java:86) [org.apache.felix.http.jetty: 4.0.18] su org.apache.sling.junit.impl.servlet.TestLogServlet$TestNameLoggingFilter.doFilter(TestLogServlet.java:257) [org.apache.sling.junit.core:1.0.26] at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.18] at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.18] at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:131) [org.apache.sling.i18n:2.5.14] at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.18] at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.18] at org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75) [org.apache.sling.engine:2.7.2] at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.18] at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.18] at org.apache.sling.engine.impl.parameters.RequestParameterSupportConfigurer.doFilter(RequestParameterSupportConfigurer.java:67) [org.apache.sling.engine:2.7.2] at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.18] at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.18] at org.apache.felix.http.base.internal.dispatch.Dispatcher$1.doFilter (Dispatcher.java:146) [org.apache.felix.http.jetty: 4.0.18] su org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter(WhiteboardManager.java:1002) [org.apache.felix.http.jetty:4.0.18] at org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:97) [org.apache.felix.http.sslfilter:1.2.6] at org.apache.felix.http.base.internal.handler.PreprocessorHandler.handle(PreprocessorHandler.java:136) [org.apache.felix.http.jetty:4.0.18] at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter (WhiteboardManager.java:1008) [org.apache.felix.http.jetty: 4.0.18] in org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.invokePreprocessors (WhiteboardManager.java:1012) [org.apache.felix.http.jetty: 4.0.18] su org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch (Dispatcher.java:91) [org.apache.felix.http.jetty : 4.0.18] su org.apache.felix.http.base.internal.dispatch.DispatcherServlet.service (DispatcherServlet.java:49) [org.apache.felix.http.jetty: 4.0.18] su javax.servlet. http.HttpServlet.service (HttpServlet.java:725) [org.apache.felix.http.servlet-api: 1.1.2] su org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:763) [org .apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:551) [org.apache.felix.http.jetty: 4.0.18] su org. eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:233) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server.session.SessionHandler.d oHandle (SessionHandler.java:1610) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:233) [org.apache.felix .http.jetty: 4.0.18] su org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1363) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse. jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:188) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.java:489) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:1580) [org.apache.felix.http.jetty: 4.0.18 ] su org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:186) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server.handler.ContextHandler. doScope (ContextHandler.java:1278) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:141) [o g.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server.handler.ContextHandlerCollection.handle (ContextHandlerCollection.java:221) [org.apache.felix.http.jetty: 4.0.18] in org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:127) [org.apache.felix.http.jetty: 4.0.18] in org.eclipse.jetty.server.Server.handle (Server .java: 500) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server.HttpChannel.lambda$handle$1 (HttpChannel.java:383) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server.HttpChannel.dispatch (HttpChannel.java:547) [org.apache.felix.http .jetty: 4.0.18] su org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:375) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.server. HttpConnection.onFillable (HttpConnection.java:273) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [org.apache.felix.http.jetty:4.0.18] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [org.apache.felix.http.jetty:4.0.18] at org.eclipse.jetty.io.ChannelEndPoint$2.run (ChannelEndPoint.java:117) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask (EatWhatYouKill.java:336) [org .apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce (EatWhatYouKill.java:313) [org.apache.felix.http.jetty: 4.0.18 ] su org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce (EatWhatYouKill.java:171) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.util.thread. strategy.EatWhatYouKill.run (EatWhatYouKill.java:129) [org.apache.felix.http.jetty: 4.0.18] su org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) [org.apache.felix.http.jetty:4.0.18] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) [org.apache.felix.http.jetty:4.0.18] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run (QueuedThreadPool.java:938) [org.apache.felix.http.jetty: 4.0.18] su java.base / java.lang.Thread.run (Thread.java:834)

Vedo che il repository ha un datastore con alcune cartelle. Ma le immagini nella mia app Sling non funzionano. Come posso migrare i file binari in un datastore utilizzando oak-upgrade o un'altra utility?

Risposte

wimsymons Sep 01 2020 at 15:25

L'ho fatto una volta tanto tempo fa. Il tuo comando per dividere il repository sembra corretto. È possibile controllare la cartella del datastore dopo aver eseguito lo strumento di aggiornamento di oak per vedere se sono stati creati file.

Non dimenticare di creare i file di configurazione necessari per utilizzare il file datastore prima di avviare Sling nella nuova posizione del repository (divisa).

Crea un org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.configfile nella installcartella che contiene almeno questa proprietà:

path="./repository/datastore"

Crea anche un org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.configfile nella installcartella che contiene almeno questa proprietà:

customBlobStore=B"true"

Il valore minRecordLength utilizzato per impostazione predefinita dallo strumento oak-upgrade è 16384 byte.

Vedere https://jackrabbit.apache.org/oak/docs/osgi_config.html#config-sling per ulteriori dettagli.

Suggerirei anche di non eseguire una migrazione parziale del contenuto quando si separano i file binari. Tutto in Sling è contenuto, inclusi anche i bundle OSGi, ecc.