この記事ではSitecore Experience Commerce (XC) 9.3 Initial Release のhotfix ロールアップ パッケージについて説明します。このhotfix のロールアップ パッケージには、2020年11月19日までにSitecore XC 9.3.0 用にリリースされたすべての公開hotfix が含まれています。パッケージに含まれているhotfix の詳細なリストは、この記事の最後にあります。
お客様は、2020年11月19日以降に公開されたいずれかのSitecore XC 9.3.0向けのhotfix をインストールされる場合、事前にこのhotfix ロールアップ パッケージを適用する必要があります[1]。
Sitecore Experience Commerce 9.3.0 hotfix ロールアップ パッケージは、次のリンク先からダウンロードできます:
SC Hotfix 439942-3 Sitecore Commerce 9.3 Hotfix Rollup Package.zip
Sitecore XC 9.3.0 のhotfix ロールアップ パッケージをインストールする前に、Sitecore プラットフォームのhotfix SC Hotfix 436551-1.zip を適用する必要があります。
Commerce Engine データベースを更新する
- SQL スクリプト439942-stored-procedure-update.sql を実行して、エンジンのグローバル データベースと共有データベースを更新します。
Commerce Engine を更新して再コンパイルする
備考:以前にカスタマイズされていない場合でも、Commerce Engineを再コンパイルする必要があります。
- Sitecore.Commerce.Engine.SDKで、Customer.Sample.Solution を開きます。
- Sitecore.Commerce.Engine プロジェクトを開き、Commerce プラグインのNuGet パッケージへのすべての参照をこのロールアップ パッケージで提供されているものに置き換えます。 更新されたNuGet プラグイン パッケージの完全なリストは、このドキュメントの最後にあります。
- Commerce NuGet パッケージに依存するすべてのカスタム プラグインに対して上記の手順を繰り返します。
- Startup.cs ファイルを更新します。Startup.cs ファイルに変更を加えていない場合は、ロールアップ パッケージに含まれているファイルに置き換えます。
Startup.cs ファイルをカスタマイズしたことがある場合、変更をマージして、カスタマイズしたStartup.cs ファイルに最新の更新が含まれるようにします。
以下は、Startup.cs に含まれる変更の例の一部です:
- 新しいusing ステートメント。
- Sitecore().Caching が構成されているConfigureServices(IServiceCollection services) メソッド(238行目あたり)の変更。
- クラス private static void AddTransientFaultHandling(IServiceCollection services) の新しいプライベート メソッド。
- ConfigureServices(IServiceCollection services) メソッドのメソッドへの新しい呼び出し。
- 以下のコードを:
if (redisCacheSettings.Enabled)
{
_nodeContext.IsRedisCachingEnabled = true;
config
.AddRedisStore(redisCacheSettings.CacheStoreName, redisCacheSettings.Options.Configuration, redisCacheSettings.Options.InstanceName)
.ConfigureCaches(WildcardMatch.All(), redisCacheSettings.CacheStoreName);
}
添付のcodesample.cs ファイルのコードに置き換えることで、ConfigureServices(IServiceCollection services) メソッドのRedis 接続動作の監視を追加しました。「Product ID from Shared database」は、製品の実際のIDに置き換える必要があることに注意してください。
- このパッケージに含まれているサンプルのGlobal.json ファイル(オン プレミスおよびCloud バージョン)からの変更をマージして、Global.json ファイルを更新します。
- 新しい Sitecore.Commerce.Plugin.Content.DefaultContentPathsPolicy とEntityShardingPolicy が、Commerce Engineサービスのブートストラップ フォルダーのGlobal.json ファイルに追加されました。
- PlugIn.Search.PolicySet-1.0.0.json ファイルを更新して、次の新しいSearchPolicyを追加します:
{
"$type": "Sitecore.Commerce.Plugin.Search.SearchPolicy, Sitecore.Commerce.Plugin.Search",
"MaxNumberOfRows": 1000000,
"IndexBatchSize": 1000,
"DeleteBatchSize": 50,
"ConcurrentIndexingOperations": 1
}
- 最新のconfig.json をカスタマイズしたconfig.json ファイルとマージして、config.json ファイルを更新します。Caching.Redis セクションには、次の新しいプロパティが含まれています:
"IntervalBetweenConnectionAttemptsInSeconds": 60,
"RedisConnectionPoolSize": 1,
"RedisCompressionEnabled": true,
備考:Redisの推奨に従って、RedisConnectionPoolSizeを2で割ったコア数の値に設定します。例えば、16コア マシンの場合、"RedisConnectionPoolSize"= 8を設定します。
ただし、十分に重い負荷がかかると、RedisConnectionPoolSize の値を増やす必要がある場合があります。
- ソリューションを再構築しリパブリッシュします。
- ビルド出力で、StackExchange.Redis.dll バイナリのバージョン2.1.58がダウンロードされていることを確認します。
- IIS Manager で、Commerce Engine サービスを再起動します。
- 環境をブートストラップします。
- Redis キャッシュをフラッシュします。
- コンテンツを同期します。Postman で、SitecoreCommerce_DevOps|3 Environment Initialize フォルダーを開き、次のコマンド引数を使用してEnsure\Sync default content paths を実行します:
- {{ShopName}}をショップの名前に置き換えます。(例えば、「Storefront」や「CommerceEngineDefaultStorefront」等)
- {{Environment}} を「GlobalEnvironment」に置き換えます。
注意:このコマンドは、環境ごとに1回だけ実行できます。 コンテンツを再同期する必要がある場合は、「Sync content path」リクエストを実行して、すべてのコンテンツ アイテムを同期します。
上記の手順を完了した後、Commerce コントロール パネルのアイテムを、SitecoreCommerce9_Global データベースとSitecoreCommerce9_SharedEnvironments データベースの両方の「ContentEntities」テーブルと「ContentEntity」テーブルに同期する必要があります。
- Redis キャッシュをフラッシュします。
- IIS Manager で、Commerce Engine サービスを再起動します。
Commerce Engine Connect、Storefront、およびConnect コアに更新する(Sitecore XC内):
- Hotfix ロールアップ パッケージのBinaries\Sitecore_CDCM\bin フォルダーで、次のバイナリ(.DLL)をCDおよびCM bin フォルダーにコピーします:
- Sitecore.Commerce.Engine.Connect.dll
- Sitecore.Commerce.ExperienceProfile.dll
- Sitecore.Commerce.Connect.Core.dll
- Sitecore.Commerce.XA.*.dll
- Sitecore.framework.*.dll
- Sitecore.Commerce.Engine.Connect.Caching.dll
- config_source_files/Sitecore/App_Config/Include/Y.Commerce.Engine フォルダーには、次のファイルの新しいバージョンが含まれています:
- Sitecore.Commerce.Engine.Connectors.Inventory.config
- Sitecore.Commerce.Engine.Connect.config
Sitecore.Commerce.Engine.Connect.config ファイルには次の変更が含まれています:
- \configuration\sitecore\commerceCachingConfiguration\cachingSettings\redissection に3つの新しいプロパティが追加されました:
- <intervalBetweenConnectionAttemptsInSeconds>60</intervalBetweenConnectionAttemptsInSeconds>
- <redisConnectionPoolSize>1</redisConnectionPoolSize>
- <redisCompressionEnabled>true</redisCompressionEnabled>
備考:Redisの推奨に従って、RedisConnectionPoolSizeを2で割ったコア数の値に設定します。例えば、16コア マシンの場合、"RedisConnectionPoolSize"= 8を設定します。
ただし、非常に重い負荷がかかった場合、RedisConnectionPoolSize の値を増やす必要がある場合があります。
- 次のセクションに新しいプロパティが追加されました:
- <fullCacheRefreshThreshold>20</fullCacheRefreshThreshold>
注意:デフォルト値を貴社のデプロイメントに適した値に変更してください。
デプロイメント内のファイルをカスタマイズしていない場合、提供された新しいファイルと交換してください。それ以外の場合、カスタマイズしたファイルのバージョンを提供された新しいバージョンと比較し、変更をマージしてください。
- config_source_files/Sitecore/App_Config/Include/Foundation/Commerce/ フォルダには新しいバージョンのSitecore.Commerce.XA.Foundation.Connect.config ファイルが含まれています。デプロイメントでこれをカスタマイズしていない場合、提供された新しいファイルと交換してください。それ以外の場合、カスタマイズしたファイルのバージョンを提供された新しいバージョンと比較し、変更をマージしてください。
SelectListEntities の新しいストアド プロシージャ
元のストアド プロシージャSelectListEntities は、次の2つのストアド プロシージャに分離されました:
- SelectListEntitiesByRange
- SelectListEntitiesByRangeWithoutVersioning (このプロシージャはバージョン管理を考慮しないため、より高いパフォーマンスが得られます)
Commerce Engine は、IFindEntitiesInListPipeline パイプラインで渡されるエンティティ タイプに基づいて呼び出すストアド プロシージャを決定します。そのエンティティ タイプに対してバージョン管理が有効になっている場合、またはタイプがCommerceEntityの場合、SelectListEntitiesByRangestored プロシージャが呼び出されます。それ以外の場合、SelectListEntitiesByRangeWithoutVersioning ストアド プロシージャが呼び出されます。SelectListEntitiesByRangeWithoutVersioning が提供する最適化されたパフォーマンスを利用するには、具体的なエンティティ タイプを渡すことが重要です。
SelectListEntitiesByRangeWithoutVersioning クエリは常にエンティティ バージョン1を返します。
SelectListEntitiesByRange も同様に動作します。環境に応じて、最新の公開されたエンティティ バージョンまたは最新のエンティティバージョンのいずれかを返します。
さらに、次の2つの新しいストアド プロシージャが追加されました:
- SelectAllListEntities
- SelectAllListEntitiesWithoutVersioning
ページ付けを使用しない場合、これらの新しいストアド プロシージャは、リストに含まれるすべてのエンティティを取得し、「順序付け」などのコストのかかる操作を回避することでパフォーマンスを向上させます。
新しいSitecore.Commerce.Plugin.Search.SearchPolicypolicy
Sitecore.Commerce.Plugin.Search.SearchPolicypolicy は、複数の検索プロバイダーで使用される次の一般的な設定を提供します。
- MaxNumberOfRows は、量が指定されていないときにインデックスから取得されるドキュメントの最大数を定義します。
- IndexBatchSize は結果を小さなバッチに分割します。
これは、ミニオンがデフォルトで一度に1000のエンティティを処理するというアイテムのインデックス作成時に非常に役立ちます。その数にシステム内の言語の数を乗算すると、Azure Searchへの呼び出しが長時間実行されコストがかかる可能性があります。バッチ サイズを小さくすることで、元の結果セットが細かく分割されてから、検索インデックスに送信されるようになります。
- DeleteBatchSize は現在、アイテムのインデックスを再作成する前にアイテムをインデックスから削除するというインクリメンタル アイテムのインデックス作成時に特に使用されます。1つのバッチで削除されるドキュメントの数をよりきめ細かく制御できるため、検索サービスへの影響を軽減できます。
- ConcurrentIndexingOperations は、並行してインデックスが作成されるバッチの数を制御します。
デフォルト値は1です。これは現在の動作と同等ですが、必要に応じて増やすことができます。一般的に、Commerce Engine Connect 構成(例えば、C: \inetpub\wwwroot\XP0.sc\App_Config\Include\Y.Commerce.Engine 配下)のレプリカの数を超えないことが推奨されます。
このhotfix ロールアップ パッケージには、パッチが適用された次のファイルが含まれています。
- SQL スクリプト(「SQL_scripts 」フォルダー配下):
- 439942-stored-procedure-update.sql
- Sitecore CD/CM バイナリ(「Binaries\Sitecore_CDCM 」フォルダー配下):
- Sitecore.Commerce.Engine.Connect.dll
- Sitecore.Commerce.Engine.Connect.Caching.dll
- Sitecore.Commerce.ExperienceProfile.dll
- Sitecore.Framework.Caching.*
- Sitecore.Framework.Common.MatchingOptions.dll
- Sitecore.Framework.Diagnostics.*.dll
- Sitecore.Commerce.Connect.Core.dll
- Sitecore.Commerce.XA.Feature.Account.dll
- Sitecore.Commerce.XA.Feature.Cart.dll
- Sitecore.Commerce.XA.Foundation.Connect.dll
- Sitecore.Commerce.XA.Foundation.Common.dll
- Sitecore.Commerce.XA.Foundation.Catalog.dll
- Commerce Engine(「NugetPackages 」フォルダー配下):
- Sitecore.commerce.plugin.*.nupkg
- sitecore.commerce.provider.filesystem.5.0.25.nupkg
- Sitecore.Framework.*.nupkg
- Microsoft.Azure.Search.*.nupk
- Sitecore.commerce.engine.connect.caching.5.0.60.nupkg
- Sitecore.commerce.engine.connect.5.0.60.nupkg
- sitecore.commerce.core.5.0.51.nupkg
- ソース ファイルおよび構成ファイル:
- Startup.cs
- Global.json
- config.json
- Sitecore.Commerce.Engine.Connectors.Inventory.config
- Sitecore.Commerce.XA.Foundation.Connect.config
- Sitecore.Commerce.Engine.Connect.config
- SC Hotfix 442332-1 CommerceConnectCore 14.0.29.zip
- 同じ識別子・電子メールがすでにシャードに存在する場合、注文を確認する際に匿名ユーザーにSetPaymentMethodsを使用する問題を修正。
- SC Hotfix SC Hotfix 442409-1 CommerceEngine.CEConnect.zip:さらなるパフォーマンスの向上。
- スマートRedis 接続プールと圧縮を実装。
- SP SelectListEntitiesByRangeWithoutVersioning 実行時のパフォーマンスの向上。
- SC Hotfix 435769-1 CommerceEngine.zip
- SelectListEntitiesByRangeWithoutVersioning がEntityVersionによる並べ替えを使用し、パフォーマンスの低下を引き起こす問題を修正。
- SC Hotfix 435548-1 CommerceEngine.CEConnect.zip:様々なパフォーマンス関連の修正
- Sitecore.Framework.Caching ライブラリのパフォーマンスの問題を修正し、新しいRedis ドライバーを更新。
- CommercePublishCacheRefreshからContext.Site.Nameを削除。
- CE Connect でHttpClientをHttpWebRequestに置き換えます。
- CheckTemplatesMapping() メソッドの「Commerce Connectorが見つからない」チェックの問題を修正。
- CE Connect:インクリメンタル インデックス作成が完了した後、キャッシュの更新を高速化。
- Redis サーバーへの接続が失われた後、Commerce エンジンが通信できない問題を修正。
- CE Connect にRedis 接続の再試行を追加。
- CE connect Redis バルク アクセスを導入。
- EngineおよびCE ConnectでRedis 接続プールを導入。
- SC Hotfix 434056-1 CommerceEngine 5.0.46.zip
- 複製されたカタログ・カテゴリに、複製されたカタログではなく、マスター カタログのChildrenCategoryListがある問題を修正。
- SC Hotfix 430776-1 CommerceEngineConnect 5.0.58.zip
- SXA Storefront がインストールされていない場合、ExperienceProfileのOrderDetailsに空のCartLinesが表示される問題を修正。
- SC Hotfix 421385-1 Sitecore.Commerce.XA.Foundation.Common 4.0.126.zip
- 値のないクエリ パラメータを追加するとArgumentOutOfRangeException が表示される問題を修正。
- SC Hotfix 421393-1 CommerceEngineConnect 5.0.57.zip
- SwitchOnRebuildSolrSearchIndex がSolrで機能しない問題を修正。
- SC Hotfix 418775-418944-1 CommerceEngine 5.0.80.zip
- Sitecore XCを9.2.0から9.3.0にアップグレードし、Redis hotfixをインストールした後のパフォーマンスが低下する問題を修正。 Azureの検索レイテンシ。
- 大量のデータを使用したSelectListEntitiesByRange プロシージャのパフォーマンスが低下する問題を修正。
- SC Hotfix 418773-1 Sitecore.Commerce.Experience.Accelerator.Scwdp.Content 4.0.125.zip
- Catalog & Cart コントローラーが、キャッシュからデータを取得する代わりにSOLRまたはAzureサービスにクエリを実行するため、検索サービスが過負荷となる問題を修正。
- SC Hotfix 413145-1 CommerceEngine 5.0.22.zip
- コンテンツ アイテムが存在しているにもかかわらず、「ContentEntities」テーブルから取得されない問題の修正(リクエストはCMに送信される)。
- SC Hotfix 412282-412582-1 CommerceEngine 5.0.78.zip
- 現在のライブラリに既知のパフォーマンスの問題が含まれているため、Redis クライアント ライブラリを最新のものに更新。
- FindEntitiesPipeline および他のすべてのコードが、新しいRedis ライブラリにある一括(Bulk)取得メカニズムを使用する必要がある件に対応。
- SC Hotfix 410145-1 CommerceEngineConnect5.0.56.zip
- indexing:completed イベント ハンドラーのすべてのキャッシュをクリーンアップするためのしきい値を構成できない問題を修正。
- SC Hotfix 409753-1 CommerceEngine.zip
- 親エンティティに複数のバージョンが存在する場合、インデックス フィールド ハンドラーの子エンティティへのフル パスが正しく計算されない問題を修正。
- SC Hotfix 409668 Sitecore.Commerce.XA.Foundation.Common 4.0.124.zip
- VaryByUrlcomponent キャッシング オプションが、他のオプションをオーバーライドする問題を修正。
- SC Hotfix 395228-1 Sitecore.Commerce.XA.Foundation.Connect 4.0.120.zip
- GetSellableItemSummary が、Commerce Engine へのリクエストに追加のスラッシュを追加し、ProductList ページを破損させる問題を修正。
- SC Hotfix 393774-1 CommerceEngine 5.0.43.zip
- プロモーションをワークフロー状態「承認の要求」から「拒否」に移動すると、プロモーションの英語のプロパティ値が消える問題を修正。
- SC Hotfix 445593-1 CommerceEngineConnect 5.0.61.zip
- CommerceRepository クラスのInitializeLanguages メソッドが、_languages コレクションに空の値を設定し、更新しない問題を修正。[1]
[1] ロールアップパッケージのSitecore.Commerce.Engine.Connect.dll はバージョン5.0.62に更新されました。このバージョンには、「SC Hotfix 445593-1 CommerceEngineConnect 5.0.61.zip」とデグレードの修正(453460)が含まれています。