AEM Communities-Benutzersynchronisierung funktioniert nicht mehr und Benutzer werden nicht mehr zwischen Veröffentlichungsinstanzen synchronisiert.

Ursache

Es kann viele Gründe dafür geben, dass die Benutzersynchronisierung fehlschlägt.  Die häufigsten sind:

  • Misconfiguration
  • Ein Fehler beim Speichern, wenn sich der Benutzer in der Veröffentlichungsinstanz befindet
  • Systemfehler beim Speichern des Benutzerpakets aufgrund eines Fehlers oder Berechtigungsproblems (Author- oder Publish-Instanz)
  • Sling-Aufträge bleiben aufgrund fehlender Benutzerpakete hängen

Lösung

I. Befolgen Sie die Dokumentation zur Fehlerbehebung

II. Aktualisieren Sie das „VaultDistributionPackageBuilderFactory“ (gilt nur für AEM 6.2)

** Dies gilt nur für AEM 6.2.

Aktualisieren Sie die Datei socialpubsync-vlt Vault Package Builder Factory, um diese Elemente zu behandeln:

  • Speichern Sie die Benutzersynchronisierungspakete im Dateisystem auf nicht gruppierten Instanzen, um die Stabilität und Leistung zu erhöhen.
  • Schließen Sie rep:policy-Knoten ein und vermeiden Sie .token- und rep:cache-Knoten, die mit dem Benutzer synchronisiert werden
  • Vermeiden Sie den Fehler „Pakete konnten nicht abgerufen werden“ [1]
  1. Navigieren Sie zur OSGi-Konsole „http://host:port/system/console/configMgr

  2. Finden Sie „Apache Sling Distribution Packaging - Vault Package Builder Factory“ mit dem Name-Feld „socialpubsync-vlt“.

  3. Klicken Sie auf die Dropdownliste und wählen „Dateipakete“ anstelle von „JCR-Pakete“ aus.  Führen Sie diesen Schritt nur auf Nicht-Cluster-Instanzen durch.

  4. Fügen Sie im Feld „Paketfilter“ die folgenden Werte hinzu:

    • /home/users|-.*/rep:cache
    • /home/users|-.*/.tokens
    • /home/users|-.*/rep:policy 

    Hinweis:

    Durch Hinzufügen von rep:Cache wird der Fehler unten vermieden:

    POST /libs/sling/distribution/services/importers/socialpubsync HTTP/1.1] org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage Error during install.
    javax.jcr.nodetype.ConstraintViolationException: OakConstraint0034: Versuchen Sie, den vom System gepflegten Cache anzulegen oder zu ändern.

     

  5. Wählen Sie: Der Digest-Algorithmus, zur Berechnung der Paket-Prüfsumme der Dropdown-Liste und wählen Sie md5.

  6. Klicken Sie auf "Speichern".

Wenn Sie AEM 6.2 verwenden, installieren Sie Cumulative Fix Pack 3 für alle Author- und Publish-Instanzen oder wenden Sie sich an den AEM-Kundendienst, um einen Hotfix für NPR-13034 anzufordern.  Wenn Sie diese Einstellungen nicht installieren, hat die oben genannte Konfiguration keine Auswirkungen. 

III. Stellen Sie den Sling sicher: Ordnerknoten sind verteilt (gilt nur für AEM 6.2)

** Dies gilt nur für AEM 6.2.

Es liegt ein Problem mit der Standardkonfiguration in der Sync vor, bei der die sling:nodes wie „Social/relationships/following“ nicht verteilt werden. 

  1. Gehen Sie zu http://aem-host:port/system/console/configMgr/com.adobe.cq.social.sync.impl.UserSyncListenerImpl und loggen Sie sich als Administrator ein.

  2. Fügen Sie sling:-Ordner zu den Knotentypen hinzu.

IV. Löschen Sie Benutzerpakete

Je nachdem, welche Version von Sling Distribution und AEM Social Communities Sie haben, können Sie Benutzerpakete unter /etc/packages/sling (ältere Versionen - AEM 6.1 ohne Hotfixes) oder /var/sling/distribution/packages (neuere Versionen) erstellen - AEM 6.1 mit AEM Social Communities FP4 oder höher.

  1. Gehen Sie auf: http://host:port/crx/explorer/index.jsp

  2. Melden Sie sich als Administrator an.

  3. Durchsuchen Sie /etc/packages und löschen Sie den Unterordner "Sling".

  4. Gehen Sie zu /var/sling/distribution und löschen Sie den Unterordner "Packages".

  5. Klicken Sie auf „Speichern“.

Wenn Sie in Ihrer Vault Package Builder Factory-Konfiguration bereits das Typfeld auf Dateipakete gesetzt haben, müssen Sie die Pakete aus dem temporeren Ordner löschen:

  1. Melden Sie sich bei Ihrem AEM-Server an.

  2. Wechseln Sie in das vom AEM-Java-Prozess verwendete temporere Verzeichnis (dies könnte durch den JVM-Parameter -Djava.io.tmpdir definiert sein).

  3. Löschen Sie alle Pakete aus diesem Ordner.  Hier ist ein Beispielbefehl, der unter Linux verwendet werden könnte: für i in dstrpck*; do rm $i; done

  4. Wiederholen Sie dies für alle AEM-Instanzen (publizieren Sie Instanzen und die Autoreninstanz).

V. Entsperren Sie die Verteilungswarteschlange:

Da Sie die Pakete gelöscht haben, löschen Sie alle festgefahrenen Sling-Aufträge, die auf sie verweisen.  Wenn alte Aufträge unter /var/eventing/jobs/nicht zugewiesen aufgrund eines Fehlers nicht verarbeitet werden, können sie dazu führen, dass die Benutzersynchronisierung fehlschlägt. Löschen Sie diese auf jedem AEM-Knoten, um die Synchronisierungswarteschlange zu entsperren:

  1. Gehen Sie auf http://host:port/crx/explorer/index.jsp

  2. Melden Sie sich als Administrator an.

  3. Öffnen Sie den Content Explorer.

  4. Navigieren Sie zu /var/eventing/jobs

  5. Klicken Sie auf den ersten Unterordner von /var/eventing/jobs/unassigned

  6. Suchen Sie den kleinen Knoten, der mit org.apache.sling.distribution beginnt

  7. Klicken Sie mit der rechten Maustaste auf diesen Knoten und löschen Sie rekursiv.

  8. Deaktivieren Sie das Kontrollkästchen Vorläufiger Scan.

  9. Löschen.

VI. Weitere Analyse

Wenn keiner der obigen Schritte das Problem mit der Benutzersynchronisation behoben hat, dann aktivieren Sie die Debug-Level-Protokollierung für diese Java-Pakete (Author- und Publish-Instanzen):

  1. Gehen Sie zu http://aem-host:port/system/console/slinglog

  2. Klicken Sie auf "neuen Logger hinzufügen".

  3. Legen Sie die folgenden Werte fest:

    • Log Level -> Debug
    • Log File -> logs/usersync.log
    • Loggers
      • org.apache.sling.distribution
      • org.apache.sling.event
      • com.adobe.cq.social.sync
  4. Klicken Sie auf „Speichern“.

  5. Wenden Sie sich an den Kundendienst von AEM, und fügen Sie eine Beschreibung des Problems sowie die Protokolldateien hinzu.

[1] Fehler in der Benutzersynchronisierung nach Anwendung von 6.2 Kumulatives Fixpack 5 oder höher

22.08.2017 12:38:16.044 *ERROR* [sling-default-655-scheduledEventTriggerorg.apache.sling.distribution.agent.impl.TriggerAgentRequestHandler@3b05483d] org.apache.sling.distribution.agent.impl.SimpleDistributionAgent [agent][socialpubsync] cannot retrieve packages
org.apache.sling.distribution.common.DistributionException: java.lang.NullPointerException
at org.apache.sling.distribution.packaging.impl.FileDistributionPackageBuilder.readPackageInternal(FileDistributionPackageBuilder.java:127)
at org.apache.sling.distribution.packaging.impl.AbstractDistributionPackageBuilder.readPackage(AbstractDistributionPackageBuilder.java:111)
at org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory.readPackage(VaultDistributionPackageBuilderFactory.java:243)
at org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransport.retrievePackage(SimpleHttpDistributionTransport.java:156)
at org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporter.exportPackages(RemoteDistributionPackageExporter.java:82)
at org.apache.sling.distribution.agent.impl.SimpleDistributionAgent.exportPackages(SimpleDistributionAgent.java:214)
at org.apache.sling.distribution.agent.impl.SimpleDistributionAgent.execute(SimpleDistributionAgent.java:182)
at org.apache.sling.distribution.agent.impl.TriggerAgentRequestHandler.handle(TriggerAgentRequestHandler.java:71)
at org.apache.sling.distribution.trigger.impl.ScheduledDistributionTrigger$ScheduledDistribution.run(ScheduledDistributionTrigger.java:134)
at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:118)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException: null

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie