AEM Communities 用户同步停止工作

AEM Communities 用户同步停止工作,并且用户不再在发布实例之间进行同步。

原因

用户同步失败的原因可能有多种。最常见的原因包括:

  • 配置错误
  • 用户在发布实例中进行保存时出现错误
  • 由于错误或权限问题,系统无法保存用户包(创作或发布实例)
  • 由于缺少用户包,Sling 作业停滞

解决方案

I. 遵循故障诊断指南文档

II. 更新 VaultDistributionPackageBuilderFactory(仅适用于 AEM 6.2)

** 此解决方案仅适用于 AEM 6.2

更新 socialpubsync-vlt Vault Package Builder Factory 以解决下列各项:

  • 将用户同步包存储在非群集实例的文件系统中,以提高稳定性和性能。
  • 包含 rep:policy 节点,避免 .token 和 rep:cache 节点与用户同步
  • 避免出现错误“无法检索包”[1]
  1. 转到 OSGi 控制台 http://host:port/system/console/configMgr

  2. 找到名称字段为 socialpubsync-vltApache Sling Distribution Package - Vault Package Builder Factory

  3. 选择类型下拉列表,然后选择文件包而非 jcr 包。请仅对非群集实例执行此步骤。

  4. 在“包过滤器”字段中,添加以下值:

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

    在此处添加 rep:cache 可避免出现以下错误:

    [... 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: Attempt to create or change the system maintained cache.

  5. 选择 The digest algorithm to calculate the package checksum 下拉列表,然后选择 md5

  6. 单击“保存”。

如果您运行的是 AEM 6.2,请为所有创作和发布实例安装累积修复包 3,或联系 AEM 客户关怀团队以请求获取 NPR-13034 的修补程序。如果未安装这些程序,则上述配置将不会起作用。 

III. 确保已分发 sling:Folder 节点(仅适用于 AEM 6.2)

** 此解决方案仅适用于 AEM 6.2

用户同步中的默认配置存在问题,该配置不分发 sling:Folder 节点,例如 social/relationships/following。 

  1. 转到 http://aem-host:port/system/console/configMgr/com.adobe.cq.social.sync.impl.UserSyncListenerImpl,然后以管理员身份登录。

  2. 将 sling:Folder 添加到节点类型

IV. 清除用户包

根据您拥有的 Sling Distribution 和 AEM Social Communities 的版本,可能会在 /etc/packages/sling(较旧的版本 - 无修补程序的 AEM6.1)或 /var/sling/distribution/packages(较新的版本 - 带有 AEM Social Communities FP4 或更高版本的 AEM6.1)下创建用户包。

  1. 转到 http://host:port/crx/explorer/index.jsp

  2. 以管理员身份登录。

  3. 浏览到 /etc/packages,然后删除 sling 子文件夹。

  4. 浏览到 /var/sling/distribution,然后删除 packages 子文件夹。

  5. 单击“保存”。

如果您已在 Vault Package Builder Factory 配置中将类型字段设置为文件包,则必须清除 temp 文件夹中的包:

  1. 登录到您的 AEM 服务器。

  2. 转到 AEM java 进程使用的 temp 目录(这可能由 JVM 参数 -Djava.io.tmpdir 定义)。

  3. 删除该文件夹中的所有包。以下是可用于 Linux 的命令示例:for i in dstrpck*; do rm $i; done

  4. 对所有 AEM 实例(发布实例和创作实例)重复此操作。

V. 取消阻止分发队列:

由于您已清除包,因此,请删除所有引用这些包的 Sling 停滞作业。如果 /var/eventing/jobs/unassigned 下的旧作业由于某些错误而未处理,则这些作业可能导致用户同步失败。删除每个 AEM 节点上的旧作业,以取消阻止同步队列:

  1. 转到 http://host:port/crx/explorer/index.jsp

  2. 以管理员身份登录。

  3. 打开内容资源管理器。

  4. 浏览到 /var/eventing/jobs

  5. 右键单击 /var/eventing/jobs/unassigned 的第一个子文件夹

  6. 找到以 org.apache.sling.distribution 开头的子节点

  7. 右键单击该节点并以递归方式删除。

  8. 取消选中“初步扫描”复选框。

  9. 进行删除。

VI. 进一步分析

如果以上步骤均未修复用户同步问题,请为这些 java 包启用调试级别日志记录(创作和发布实例):

  1. 转到 http://aem-host:port/system/console/slinglog

  2. 单击“添加新记录器”。

  3. 设置以下值:

    • Log Level -> Debug
    • Log File -> logs/usersync.log
    • Loggers
      • org.apache.sling.distribution
      • org.apache.sling.event
      • com.adobe.cq.social.sync
  4. 单击“保存”。

  5. 联系 AEM 客户关怀团队以获取相关帮助,联系时需提供问题描述并附加日志文件。

[1] 应用 6.2 累积修复包 5 或更高版本后,用户同步出现错误

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

 Adobe

更快、更轻松地获得帮助

新用户?