OSGi コンソール(http://host:port/system/console/configMgr)にアクセスします。
AEM Communities でのユーザーの同期が停止し、パブリッシュインスタンス間でユーザーが同期されなくなります。
原因
ユーザーの同期が停止する場合は、様々な原因が考えられます。特に多い原因は次のとおりです。
- 設定ミス
- ユーザーがパブリッシュインスタンスにいるときの保存時にエラーが発生する
- エラーまたは許可の問題により、ユーザーのパッケージを保存する際にシステムエラーが発生する(オーサーインスタンスまたはパブリッシュインスタンス)
- ユーザーパッケージが不足していることが原因で Sling ジョブが停止する
解決策
I. 次のトラブルシューティング用のガイドを参考にする
II.VaultDistributionPackageBuilderFactory を更新する(AEM 6.2 のみ)
** AEM 6.2 のみに当てはまります。
socialpubsync-vlt の Vault Package Builder Factory を更新して、次の処理をおこないます。
- ユーザー同期パッケージを、非クラスターインスタンスでファイルシステムに格納し、安定性とパフォーマンスを高めます。
- rep:policy ノードを追加し、.token および rep:cache ノードがユーザーと同期されないようにします。
- 「パッケージを取得できない」というエラーを防ぎます [1]。
-
-
Apache Sling Distribution Packaging - Vault Package Builder Factory を見つけます(「名前」フィールドは socialpubsync-vlt)。
-
タイプのドロップダウンリストで、jcr パッケージではなくファイルパッケージを選択します。 非クラスターインスタンスでのみこの手順を実行します。
-
「パッケージフィルター」フィールドに次の値を追加します。
- /home/users|-.*/rep:cache
- /home/users|-.*/.tokens
- /home/users|-.*/rep:policy
注意:担当者を追加:ここでは、キャッシュは、次のエラーを発生しない:
[... 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: システムが保守するキャッシュを作成または変更しようとしている。 -
パッケージチェックサムを計算するための Digest アルゴリズムドロップダウンリストを選択し、「md5」を選択します。
-
「保存」をクリックします。
AEM 6.2 を実行している場合は、Cumulative Fix Pack 3 をすべてのオーサーインスタンスおよびパブリッシュインスタンスにインストールするか、AEM カスタマーケアに連絡し、NPR-13034 の修正プログラムをリクエストしてください。これらの修正プログラムをインストールしないと、上記の設定の効果が出ません。
III.sling:Folder ノードが配布されていることを確認する(AEM 6.2 のみ)
** AEM 6.2 のみに当てはまります。
ユーザーの同期のデフォルト設定に問題があり、social/relationships/following などの sling:Folder ノードが配布されていません。
-
http://aem-host:port/system/console/configMgr/com.adobe.cq.social.sync.impl.UserSyncListenerImpl にアクセスし、管理者としてログインします。
-
sling:Folder をノードタイプに追加します。
IV.ユーザーのパッケージを消去する
ご利用の Sling 配布および AEM Social Communities のバージョンによって、ユーザーパッケージの作成場所は /etc/packages/sling(旧バージョン - 修正プログラムが適用されていない AEM 6.1)または /var/sling/distribution/packages(新しいバージョン - AEM Social Communities FP4 以降を含む AEM 6.1)になります。
-
http://host:port/crx/explorer/index.jsp にアクセスします。
-
管理者としてログインします。
-
/etc/packages を参照して Sling サブフォルダーを削除します。
-
/var/sling/distribution を参照し、パッケージサブフォルダーを削除します。
-
「保存」をクリックします。
Vault Package Builder Factory の設定でタイプフィールドが既にファイルパッケージに設定されている場合は、次の手順で temp フォルダーからそのパッケージを消去する必要があります。
-
AEM サーバーにログインします。
-
AEM の java プロセスで使用される temp ディレクトリに移動します(JVM パラメーターの -Djava.io.tmpdir によって定義されている場合があります)。
-
そのフォルダーからすべてのパッケージを削除します。例えば、Linux では for i in dstrpck*; do rm $i; done というコマンドを使用できます。
-
すべての AEM インスタンス(パブリッシュインスタンスとオーサーインスタンス)で同じ手順を繰り返します。
V. 配布キューのブロックを解除する
パッケージを削除したら、そのパッケージを参照している停止中の Sling ジョブをすべて削除します。何らかのエラーが原因で /var/eventing/jobs/unassigned の古いジョブが処理されないと、ユーザーの同期が失敗する場合があります。各 AEM ノードで該当のジョブを削除し、次の手順で同期キューのブロックを解除します。
-
http://host:port/crx/explorer/index.jsp にアクセスします。
-
管理者としてログインします。
-
Content Explorer を起動します。
-
/var/eventing/jobs を参照します。
-
/var/eventing/jobs/unassigned の最初のサブフォルダーを右クリックします。
-
org.apache.sling.distribution で始まる子ノードを見つけます。
-
そのノードを右クリックし、「再帰的に削除」を選択します。
-
「予備スキャン」チェックボックスをオフにします。
-
削除します。
VI.詳細分析
上記の方法でユーザー同期の問題が解消されない場合は、次の手順で、対象の java パッケージに対してデバッグレベルのログを有効にします(オーサーインスタンスおよびパブリッシュインスタンス)。
-
http://aem-host:port/system/console/slinglog にアクセスします。
-
「新しいロガーを追加」をクリックします。
-
次のように値を設定します。
- ログレベル / デバッグ
- ログファイル / logs/usersync.log
- ロガー
- org.apache.sling.distribution
- org.apache.sling.event
- com.adobe.cq.social.sync
-
「保存」をクリックします。
-
問題の説明とログファイルを添えて AEM カスタマーケアに問い合わせます。
[1] 6.2 Cumulative Fix Pack 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