Gehen Sie zu http://aem-host:port/crx/de/index.jsp und melden Sie sich als Administrator an.
Problem
Das Löschen oder Verschieben bestimmter Ordner oder Elemente in AEM über die /assets.html oder /damadmin ist entweder langsam oder schlägt fehl.
Wenn das Entfernen oder Verschieben fehlschlägt, finden Sie in der Protokolldatei diese [1] Protokollwarnmeldung: „The query read or traversed more than X nodes.“
java.lang.UnsupportedOperationException: The query read or traversed more than 100000 nodes. To avoid affecting other tasks, processing was stopped. at org.apache.jackrabbit.oak.query.FilterIterators.checkReadLimit(FilterIterators.java:66) at org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy$PathIterator.fetchNextPossiblyDuplicate(ContentMirrorStoreStrategy.java:422) at org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy$PathIterator.fetchNext(ContentMirrorStoreStrategy.java:365) at org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy$PathIterator.next(ContentMirrorStoreStrategy.java:449) at org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy$PathIterator.next(ContentMirrorStoreStrategy.java:303) at com.google.common.collect.Iterators$7.computeNext(Iterators.java:646) at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143) at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) at org.apache.jackrabbit.oak.spi.query.Cursors$PathCursor.hasNext(Cursors.java:205) at org.apache.jackrabbit.oak.query.ast.SelectorImpl.next(SelectorImpl.java:407) at org.apache.jackrabbit.oak.query.QueryImpl$RowIterator.fetchNext(QueryImpl.java:773) at org.apache.jackrabbit.oak.query.QueryImpl$RowIterator.hasNext(QueryImpl.java:798) at com.google.common.collect.Iterators$5.hasNext(Iterators.java:542) at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.fetchNext(FilterIterators.java:137) at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.hasNext(FilterIterators.java:151) at org.apache.jackrabbit.oak.jcr.query.QueryResultImpl$3.fetch(QueryResultImpl.java:181) at org.apache.jackrabbit.oak.jcr.query.QueryResultImpl$3.<init>(QueryResultImpl.java:176) at org.apache.jackrabbit.oak.jcr.query.QueryResultImpl.getNodes(QueryResultImpl.java:170) at org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.findResources(JcrResourceProvider.java:346) at org.apache.sling.resourceresolver.impl.tree.RootResourceProviderEntry$2.seek(RootResourceProviderEntry.java:148) at org.apache.sling.resourceresolver.impl.tree.RootResourceProviderEntry$2.<init>(RootResourceProviderEntry.java:134) at org.apache.sling.resourceresolver.impl.tree.RootResourceProviderEntry.findResources(RootResourceProviderEntry.java:132) at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.findResources(ResourceResolverImpl.java:694) at com.day.cq.dam.core.impl.AssetReferenceResolverImpl.getReferences(AssetReferenceResolverImpl.java:524) at com.day.cq.wcm.core.impl.commands.DeletePageCommand.performCommand(DeletePageCommand.java:142) at com.day.cq.wcm.core.impl.commands.WCMCommandServlet$CommandHolder.performCommand(WCMCommandServlet.java:161) at com.day.cq.wcm.core.impl.commands.WCMCommandServlet.performCommand(WCMCommandServlet.java:264) at com.day.cq.commons.servlets.AbstractCommandServlet.doPost(AbstractCommandServlet.java:49)
Ursache
Während bestimmter Aktionen in AEM Assets, führt das System die Suche unten aus, sie stammt von AssetReferenceResolverImpl.getReferences:
//element(*, nt:unstructured)[(jcr:like(@dam:resolvedPath, '/content/dam/geometrixx/services%') or jcr:like(@sling:resource , '/content/dam/geometrixx/services%'))]
Wenn das System sehr viele Inhalte enthält, ist diese Suche nicht immer erfolgreich und schlägt möglicherweise mit dem oben genannten Fehler fehl.
Lösung
Um dies zu beheben, können Sie einige Eigenschaften dem Out-of-the-box-Index /oak:index/ntBaseLucene hinzufügen.
-
-
Navigieren Sie zu /oak:index/ntBaseLucene/indexRules/nt:base/properties
-
Fügen Sie zwei nt:unstrukturierte Knoten hinzu slingResource und damResolvedPath unter /oak:index/ntBaseLucene/indexRules/nt:base/properties.
-
Legen Sie die folgenden Eigenschaften für die Knoten fest (bei denen dies angefordert wird und der Property-Index den booleschen Datentyp haben):
slingResource
name="sling:resource"
ordered=false
propertyIndex= true
type="String"
damResolvedPath
name="dam:resolvedPath"
ordered=false
propertyIndex=true
type="String" -
Setzen Sie auf dem /oak:index/ntBaseLucene Knoten die Eigenschaft reindex=true.
fest -
Klicken Sie auf Alle Speichern.
-
Überwachen Sie den error.log, um festzustellen, wann die Indizierung abgeschlossen ist:
Reindexing completed for indexes: [/oak:index/ntBaseLucene]
Sie können auch sehen, ob die Indizierung abgeschlossen ist, indem Sie den /oak:index/ntBaseLucene Knoten im CRXDe aktualisieren, da die neu indexierte Eigenschaft auf falsch zurückspringen würde.
-
Nachdem die Indizierung abgeschlossen ist, rufen Sie CRXDe erneut auf und setzen Sie den Eigenschaftswert „type“ auf den folgenden beiden Indizes auf „disabled“:
- /oak:index/slingResource
- /oak:index/damResolvedPath
-
Klicken Sie auf „Alle Speichern“.
Die Ordner- und Assetlöschung und die Bewegungen sollten nun schneller und stabiler sein.