Heroku Connect のログメッセージと一般的なエラー
最終更新日 2024年04月02日(火)
Table of Contents
Heroku Connect は、その同期アクティビティのログを生成し、このログにはログドレインからアクセスできます。Logs
(ログ) タブをクリックすると、出力されたログをリアルタイムで確認することもできます。この記事では、これらのログに出力されるエラーとメッセージの一部について説明しています。Heroku External Objects のログ記録については、Heroku External Objects のドキュメントのログ記録に関する項目を参照してください。
アプリケーションのログ記録
ログメッセージの形式は、Heroku Connect の将来のリリースで変更される可能性があります。
Heroku Connect では、ログメッセージを Logplex に出力し、アプリケーションから CLI またはログ記録アドオンを使用して参照できるようにします。
ログエントリは、次の標準ログ形式に従います。
- アプリソース: たとえば、
app
herokuconnect
の Dyno-d
またはプロセスタイプ-p
、たとえば-d herokuconnect
または-p herokuconnect
event
やlevel
などの標準フィールドを持つ構造化データを含むメッセージ: 例: event="RELOAD TABLE broker__c
次に示すのは、broker__c
マッピングのリロードに対する Logplex エントリの例です。
$ heroku logs -d herokuconnect
2022-02-28T20:41:10.000000+00:00 app[herokuconnect]: event="RELOAD TABLE broker__c" addon_id=683f0847-bd8e-4011-b77a-89a83a6925cf app_name=dhdev-1101 object_type=mapping object_id=2a2a5511-e1c1-47c5-aa6c-afdc6b135743 object_name=Broker__c state=RELOAD_TABLE level=info
2022-02-28T20:41:11.000000+00:00 app[herokuconnect]: event="Cleared table broker__c for load" addon_id=683f0847-bd8e-4011-b77a-89a83a6925cf app_name=dhdev-1101 object_type=mapping object_id=2a2a5511-e1c1-47c5-aa6c-afdc6b135743 object_name=Broker__c state=RELOAD_TABLE level=info
2022-02-28T20:41:11.000000+00:00 app[herokuconnect]: event="Loading table broker__c via SOAP" addon_id=683f0847-bd8e-4011-b77a-89a83a6925cf app_name=dhdev-1101 object_type=mapping object_id=2a2a5511-e1c1-47c5-aa6c-afdc6b135743 object_name=Broker__c state=RELOAD_TABLE level=info
2022-02-28T20:41:11.000000+00:00 app[herokuconnect]: event="Broker__c QUERY ↷SALESFORCE 8 rows (0.15 secs)" addon_id=683f0847-bd8e-4011-b77a-89a83a6925cf app_name=dhdev-1101 object_type=sync object_id=683f0847-bd8e-4011-b77a-89a83a6925cf object_name=Broker__c state=IDLE level=info
2022-02-28T20:41:11.000000+00:00 app[herokuconnect]: event="Broker__c INSERT ↓DATABASE 8 rows (0.00 secs)" addon_id=683f0847-bd8e-4011-b77a-89a83a6925cf app_name=dhdev-1101 object_type=sync object_id=683f0847-bd8e-4011-b77a-89a83a6925cf object_name=Broker__c state=IDLE level=debug
2022-02-28T20:41:11.000000+00:00 app[herokuconnect]: event="RELOAD COMPLETE" addon_id=683f0847-bd8e-4011-b77a-89a83a6925cf app_name=dhdev-1101 object_type=mapping object_id=2a2a5511-e1c1-47c5-aa6c-afdc6b135743 object_name=Broker__c state=RELOAD_TABLE level=info
ログメッセージ
[2/34] Completed Bulk Batch … from Bulk Job …
このメッセージは、Bulk API を使用して Salesforce から PostgreSQL に同期するときにログに記録されます。データベースで多数のレコードを挿入または更新したことを示すメッセージの後に記録されます。このメッセージにより、通常の同期を継続する前に何個のバッチが残っているかを把握できます。
[31/267] Completed 31 Empty Bulk Batches from Bulk Job …
このメッセージは、Bulk API を使用して Salesforce から PostgreSQL に同期するときにログに記録されます。可能な場合、Connect では Native PK Chunking を使用します。これによって、Salesforce で空の一括バッチが生成される可能性があります。データの一括更新を処理するときに時間を節約するために、データがないと Salesforce から通知されたバッチはスキップします。コンテキストと進捗状況の全体像がわかるように、このメッセージがログに記録されます。
一般的なログメッセージ
接続でアプリケーションのログ記録を有効にしている場合、次のようなパターンに一致するさまざまなメッセージが記録されます。
$number $object_name $verb $arrow $salesforce_or_db $total_number ($timing secs) [$api]
いくつかの例と説明を以下に示しますが、すべてを網羅しているわけではありません。
1 Custom_Contact__c UPDATE ↑SALESFORCE 1 rows total (0.26 secs) [SOAP]
1 つの Custom_Contact__c レコードが PostgreSQL で更新され、Salesforce に書き込まれました。SOAP API を介して送信された書き込みを Salesforce で処理するのに 0.26 秒を要しました。
1 Custom_Account__c DELETE ↑SALESFORCE 1 rows total (0.44 secs) [SOAP]
1 つの Custom_Contact__c レコードが PostgreSQL で削除され、Salesforce から削除されました。SOAP API を介して送信された削除を Salesforce で処理するのに 0.44 秒を要しました。
Lead QUERY ↷SALESFORCE 1 rows (0.16 secs)
Lead レコードが SOAP クエリを介して更新されました。更新の適用に 0.16 秒を要しました。
Update_Table_Bulk__c UPDATE ↓DATABASE 5000 rows (4.15 secs)
Update_Table_Bulk__c オブジェクトで大量のレコードが変更されました。これらの変更のうち 5000 件が PostgreSQL に一括で適用され、一括更新に 4.15 秒を要しました。
Custom_Account__c, Streaming poll found 1 changes
Custom_Account__c オブジェクトで加速ポーリングが有効になっています。その結果、加速ポーリングが発生し、次の定期ポーリングの前に 1 つのレコードが更新されました。
Custom_Account__c DELETE ↓DATABASE 1 rows (0.01 secs)
Custom_Account__c のレコードが Salesforce で削除されました。このレコードを PostgreSQL から削除するのに 0.01 秒を要しました。
6 Custom_Account_c, 5 Custom_Contact_c INSERT ↑SALESFORCE 11 rows total (0.64 secs) [SOAP]
6 つの新しい Custom_Account_c レコードと 5 つの新しい Custom_Contact_c レコードが、1 回のリクエストで SOAP API を介して Salesforce に作成されました。新しく作成されたレコードを Salesforce で処理するのに 0.64 秒を要しました。
Account QUERY ↷SALESFORCE 2300 rows (1.80 secs)
SOAP クエリで 2300 件のレコードが Salesforce から見つかりました (所要時間 1.8 秒)。これは、Salesforce からのこのメッセージに 2300 件のレコードが含まれていたことを示すものではありません。メッセージに含まれる可能性があるレコードは最大でも 2000 件です。このメッセージの後に、次のような QUERY MORE メッセージが続きます。Account QUERY MORE ↷SALESFORCE 300 rows (0.70 secs)
は、別のデータページが Salesforce からフェッチされたことを示します。Account UPDATE ↓DATABASE 2000 rows (2.15 secs)
のようなログメッセージは、データのページが PostgreSQL データベースに書き込まれたことを示します。
Account QUERY MORE ↷SALESFORCE 300 rows (0.70 secs)
300 件のアカウントレコードが Salesforce からフェッチされました。これらは PostgreSQL データベースに書き込まれます。これは、更新を取得するための以前の SOAP クエリの続きです。QUERY MORE
が記録されている場合、これは QueryLocator カーソルが使用中であることを示しています。
このメッセージの前に、Account QUERY ↷SALESFORCE 2300 rows (1.80 secs)
のような同様のログメッセージが記録されます。
関連情報
- Reading Data from Salesforce (Salesforce からのデータの読み取り)
- Operation delayed, no available query cursors (操作遅延、利用可能なクエリカーソルなし)
ログエラー
Attempted to Open More Than 10 Queries to SFDC (SFDC へのクエリを 10 個より多く開こうとした)
Operation delayed, no available query cursors (操作遅延、利用可能なクエリカーソルなし) を参照
Operation delayed, no available query cursors (操作遅延、利用可能なクエリカーソルなし)
Salesforce では、接続されたユーザー 1 人につき開くことのできるクエリは 10 件までに制限されています。Heroku Connect では、各マッピングは個別に同期されるため、多くのマッピングが同時に同期されることはよくあります。このメッセージは、制限を超過して同期がさらに遅れるのを避けるために、Connect で自発的にスロットルを発動したことを示しています。
このメッセージが絶えず記録されている場合、調査する価値がある問題の存在を示している可能性があります。次のような可能性があります。
- 同じユーザー資格情報を複数の Connect インスタンスに使用している。接続ごとに異なるユーザーで Salesforce に認証してください。
- 多数のアクティブなマッピングがある。作成したマッピングの数を減らすことを検討してください。
- すべてのマッピングについて突然、このメッセージが記録されるようになった。レコードは同期されていない。サポートチケットを送信してください。Heroku のチームにて調査を行います。
SYSTEM_ERROR (予期しないエラー)
接続で SYSTEM_ERROR 状態が報告されている場合、このエラーは予期しない状況が発生したため同期を中断したことを示しています。状況が一時的なものであった場合、Connect ダッシュボードを使用して接続を回復できることがあります。Settings
(設定) リンクをクリックし、Manage Connection
(接続の管理) をクリックします。そこから、Recover
(回復) ボタンをクリックしてエラー状態をクリアし、同期の再開を試みることができます。
原因となっている問題が解決しない場合、接続は同じ状態になり、さらなる調査と手動での修復が必要になります。接続のログで詳細を確認し、問題を解決できない場合は Heroku サポートに問い合わせて調査を依頼してください。
(psycopg2.IntegrityError) duplicate key value violates unique constraint “lead_idx_rpm_account_id__c” (重複したキー値が一意性制約に違反している)
この問題には何種類かの原因が考えられます。
挿入ラウンドトリップの問題
"contact_idx_sfid"
などの SFID フィールドで競合が発生している場合、データベースへのレコード挿入に関連した競合状態が原因である可能性があります。データベースに新しいレコードを挿入し、Connect がそのレコードを Salesforce にプッシュすると、Connect は Salesforce からの成功応答の受信を待機し、新しく作成された行の SFID でデータベースレコードを更新します。最初の挿入がまだ処理中である間に、通常のポーリングの一環として Connect がその行を再取得する場合があります。この結果、両方のプロセスが同じ SFID でレコードを書き込もうとして競合状態が発生します。これによって一意インデックスの競合が発生する可能性がある一方で、データベースのレコードが重複して片方のレコードで SFID が欠落する可能性もあります。
これを回避するには、データベース側から作成するすべてのオブジェクトに外部 ID を追加してください。また、新しいレコードを作成するときは必ず、その 1 つ 1 つに (GUID などの) 一意 ID を設定してください。次に、その外部 ID に一意インデックスを追加してください。こうしておくと、重複したレコードを Connect が書き込もうとした場合に、一意インデックスによって書き込みが失敗します。ログにインデックス違反が記録されることは変わりませんが、これは外部 ID フィールドでの違反であり、レコードの重複は回避されたことを意味しています。
オブジェクトに外部 ID フィールドを追加する場合、一度設定した ID を変更しないことは重要です。
Error during sync: update or delete on table “mycustomobject__c” violates foreign key constraint… (同期中のエラー: テーブルでの更新または削除が外部キー制約に違反している)
マップされたテーブルまたは参照側のマップされたテーブルには外部キー制約を指定しないでください。Heroku Connect では、マップされたテーブルをリロードすることが必要な場合がありますが、外部キー制約があると、リロード前のクリーンアップのために Postgres テーブルのレコードの削除/切り捨てを行うことが不可能になります。この削除失敗により、通常、次のようなエラーが発生します。
Too many sync errors. Sync operations may be disabled for up to 15 minute(s).
Heroku Connect では、レコードのシステムはお客様の Salesforce 組織であり、Postgres データベースではありません。関係はお客様の Salesforce 組織で適用する必要があります。Heroku Connect では Postgres の外部キー制約をサポートしていません。
Error during sync: This Connection is closed (同期中のエラー: この接続は閉じている)
マッピングのリロード時にこのエラーが発生する場合、外部キー制約でデータベーステーブルが参照されている可能性があります。Heroku Connect では、マッピングをリロードするときにデータベーステーブルの切り捨てを試行しますが、これは、テーブルが外部キー制約に含まれている場合は実行できません。まず外部キー制約を削除してから、マッピングをリロードする必要があります。
Unable to Reload Mapping with ID: abcdef12… (特定の ID のマッピングをリロードできない)
このエラーは、マッピングの変更または構成のインポートを最近行ったことがある場合に記録されることがあります。Connect ダッシュボードでマッピングのステータスを確認してください。BULK_LOADING
と表示されている場合、Connect は一括ロード操作の途中であり、この操作は中断できません。マッピングをリロードするには、操作が完了するまで待つ必要があります。
QUERY_TIMEOUT: Your query request was running for too long. Trying again later. (クエリリクエストの実行時間が長すぎました。後で再試行します。)
このエラーからは、通常、次のような複数のエラーメッセージが出力されます。
Batch 751m0000001AoAtAAK of job 750m0000001BfWOAA0 failed: InternalServerError : Retried more than 15 times; InvalidBatch : Failed to process query: QUERY_TIMEOUT: Your query request was running for too long. Trying again later.; InvalidBatch : Failed to process query: QUERY_TIMEOUT: Your query request was running for too long. Trying again later.; InvalidBatch : Failed to process query: QUERY_TIMEOUT: Your query request was running for too long. Trying again later.; (...)
このエラーは Salesforce から直接出力されます。Connect では、Bulk API を使用して大量のデータをロードします。一括クエリがタイムアウトになり、Connect が自動的にクエリを再試行することがあります。数回の再試行後もクエリがタイムアウトになり続ける場合、Salesforce でチケットを開いて原因を調査してください。
Batch 54321000007DvJXYZ0 of job 54321000005lfIZXYZ failed: InvalidBatch : Failed to process query: INVALID_FIELD
このエラーは通常、マッピングの設定と Salesforce の間である程度のスキーマドリフトがあったことを示しています。Salesforce でフィールドが削除または名前変更されたにもかかわらず、マッピングの設定にはそのフィールドが残っているケースがほとんどです。問題を修正するには、マッピング設定を更新して無効なフィールドを削除します。
それ以外のケースでは、このエラーはアクセス許可の問題を示している場合があります。具体的には、特定のフィールドがマッピングの設定に含まれているにもかかわらず、接続上の Salesforce ユーザーからは認識できなくなっている、というものです。問題を解決するには、別の Salesforce ユーザー資格情報を使用して再認証するか、現在のユーザーのアクセス許可を変更してみてください。アクセス許可の問題が修正されたら、フィールドを削除してマッピング設定を更新してから設定を追加し直して、フィールドレベルで強制的に再同期することができます。あるいは、マッピング全体をリロードすることもできます。
Salesforce Configuration Saved for This Object no Longer Maps to the Current Salesforce Data Model (このオブジェクト用に保存した Salesforce 設定が現在の Salesforce データモデルにマップされなくなった)
フィールドのデータ型を変更するなど、マップされたオブジェクトに Salesforce で変更を加えた場合、Heroku Connect によってデータベーススキーマが自動的に更新されることはありません。結果として、このようなエラーが記録される場合があります。問題を解決するには、Connect ダッシュボードでマッピングを編集してください。
“Server Raised Fault: ‘REQUEST_LIMIT_EXCEEDED: ConcurrentPerOrgApex Limit exceeded” (サーバーエラー: ConcurrentPerOrgApex 制限の超過) または “System.LimitException: Apex CPU time limit exceeded” (Apex CPU 時間制限の超過)
Salesforce に更新を送信するように設定されたテーブルにレコードを書き込むと、Connect によって定期的にデータベースがポーリングされ、多数のレコード (最大 200 件) が Salesforce API への 1 つのリクエストにグループ化されます。
新しいレコードが作成されるとトリガーされる Apex コードがオブジェクトにある場合、Salesforce では、それらのトリガー専用に割り当てるコンピューティングリソースの量に制限があります。その結果、通常より多くのレコードを挿入した場合、上記のエラーのいずれかが記録される場合があります。この Salesforce ガイドでは、Apex コードを最適化してパフォーマンスを改善するいくつかの方法について説明しています。
この現象が発生し続ける場合は、書き込みバッチサイズの削減について Heroku サポートにお問い合わせください。挿入バッチを 100 または 50 レコードに制限できますが、これによって新しいレコードの挿入のレイテンシーも増加する場合があります。
DB is Missing Connect Metadata 「DatabaseValidationFailed」 (DB に Connect のメタデータがない)
Connect の接続先データベースが、初期化時に対象であったデータベースと同じでないことを示しています。これは通常、データベースのアップグレード手順に従わなかった場合に発生します。正常な状態に回復できない場合、接続を作成し直すと迅速に解決できる可能性があります。
プロセスによって _hc_meta
テーブルが削除された場合にも、この状況に陥る可能性があります。このテーブルは、正しい接続のために正しいデータベースと通信していることを検証する目的で Heroku Connect によって使用されます。この場合も、接続を作成し直すのが、正常な状態に復帰するための最速の解決策です。
“Expired Transition Aborted by Health_Check” (Health_Check による期限切れトランジションの中止) または “Expired transition aborted by sweep” (スイープによる期限切れトランジションの中止)
どちらのメッセージも、同期 Worker dyno がハングしたときにログに記録されます。別の dyno からのマッピングのヘルスチェックは 15 分おきに実行されます。ハングしたプロセスがヘルスチェックによって検出された場合、そのプロセスを強制終了し、マッピングの状態をリセットしてポーリングを再開します。これは、一時的なネットワーク障害や dyno の再起動など、さまざまな理由で発生する可能性があります。
Query_Wait_Timeout: Server Closed the Connection Unexpectedly (サーバーによって予期せず接続が閉じられた)
これは、同期操作中にデータベースが突然切断された場合に発生する可能性があります。Connect は自動的に回復を試みますが、回復しない場合、Connect ダッシュボードから接続を再開できます。
Streaming Error: 403::Organization Total Events Daily Limit Exceeded (ストリーミングエラー: 組織の 1 日の合計イベント数制限を超過した)
このエラーは、利用可能な PushTopic イベントを Salesforce Streaming API から使い果たしたことを意味します。このエラーは、無料かつ無制限の Salesforce Streaming API イベントを利用することによって回避できます。
エラーが発生した場合、同期は継続しますが、マッピングごとに設定したポーリング間隔にフォールバックします。24 時間の繰り返し期間がリセットされると、イベントは自動的に再開します。
Function get_xmlbinary() Does Not Exist (関数 get_xmlbinary() が存在しない)
Connect では、データベースの public
スキーマに get_xmlbinary
関数を作成し、同期プロセスの一部として使用します。search_path
から public
スキーマを削除した場合、Connect がその関数を見つけることができず、同期は失敗します。詳細は、Heroku Connect で “関数 get_xmlbinary() が存在しません” エラーを解決する方法のヘルプを参照してください。
Too Many Polling Errors. Polling will be Disabled for Up to 15 minute(s) (ポーリングエラーが多すぎるため最大 15 分間ポーリングを無効化)
このエラーは、データベースまたは Salesforce のポーリングが連続して、予期せず失敗したことを示しています。その結果、Connect は指定された期間中、ポーリングのペースを落とし、原因となっている問題の解決のための時間を確保します。Connect ダッシュボードの上部の通知から問題の説明を探すことができます。または、Logs
(ログ) タブのフィルターで Error (エラー) のログ行を抽出して調査することができます。これらの問題は、多くの場合、データベーススキーマが古くなっていることに関連しています。Salesforce オブジェクトフィールドを変更したのに Connect マッピングを編集して更新しない場合、スキーマが古くなる可能性があります。
Too Many Bulk Errors, Bulk Usage will be Disabled for up to 12 hour(s) for this mapping (一括処理のエラーが多すぎるため一括処理の使用がこのマッピングに対して最大 12 時間無効化される)
このエラーは、特定のマッピングに対して Salesforce の一括ポーリングリクエストが連続して、予期せず失敗したことを示しています。その結果、Connect は指定された期間中、一括ポーリングのペースを落とし、原因となっている問題の解決のための時間を確保します。Connect ダッシュボードの上部の通知から問題の説明を探すことができます。または、Logs
(ログ) タブのフィルターで Error (エラー) のログ行を抽出して調査することができます。これらの問題は、多くの場合、データベーススキーマが古くなっていることに関連しています。Salesforce オブジェクトフィールドを変更したのに Connect マッピングを編集して更新しない場合、スキーマが古くなる可能性があります。
Connect で強制的にマッピングを再びポーリングするようにするには、マッピングを編集して、データベーススキーマが Salesforce オブジェクトと一致するようにします。接続を回復することによってポーリングを再開することもできます。
Too many sync errors. Sync operations may be disabled for up to 15 minute(s) (同期エラーが多すぎるため同期操作が最大 15 分間無効化される可能性がある)
このエラーは、接続またはマッピングでデータの同期を試みたときの予期しない失敗が多すぎたことを示しています。その結果、Connect は同期試行のペースを落とします。指定された期間が経過すると、Connect はデータの同期を再試行します。
SERVER_UNAVAILABLE: Request Timed out waiting for Connection (リクエストが接続を待つ間にタイムアウトした)
次のようなメッセージがログに記録される場合があります。
faultcode = "sf:SERVER_UNAVAILABLE" faultstring = "SERVER_UNAVAILABLE: Request timed out waiting for connection: [config 1,000ms, actual 1,001ms]" detail = (detail){ UnexpectedErrorFault = (UnexpectedErrorFault){ exceptionCode = "SERVER_UNAVAILABLE" exceptionMessage = "Request timed out waiting for connection: [config 1,000ms, actual 1,001ms]" } } }
このエラーは、Salesforce で内部データベースへの接続に問題がある場合に発生します。これは一時的な問題であり、数分のうちに自然に解決します。繰り返し発生する場合は、Heroku サポートまでご連絡ください。
Server Raised Fault: 'OPERATION_TOO_LARGE: exceeded 100000 distinct who/what’s’ (サーバーエラー: 操作が大きすぎる: ユーザー/項目数が 100000 を超えた)
OPERATION_TOO_LARGE
エラーは、認証された Salesforce ユーザーに View All (すべて表示) のアクセス許可を付与しないことの結果です。このアクセス許可がない場合、Salesforce では、行ごとのチェックを実行して、その行を表示するためのアクセス許可がユーザーにあるかどうかを判断する必要があります。マッピングが大きい場合、アクセス許可の評価のオーバーヘッドによって OPERATION_TOO_LARGE
エラーが発生することがあります。このエラーを解決する唯一の方法は、このオブジェクト (および、必要に応じて関連オブジェクト) に対する View All (すべて表示) アクセス許可を付与してアクセス許可クエリを不要にすることです。
Parsing SOAP Response Failed: SAXParseException: <unknown>:1:0: syntax error (SOAP 応答の解析失敗: 構文エラー)
このエラーは、Heroku Connect で Salesforce に対して SOAP リクエストを実行したが、受信した応答が有効な SOAP XML ではなかったことを示しています。これは一時的な状況であり、Salesforce の内部エラーによって発生する場合があります。Heroku Connect は SOAP リクエストを自動的に再試行します。
SOAP Transport Error: BadStatusLine (SOAP トランスポートエラー)
このエラーは、Salesforce からの応答が不正な形式だったことを示しています。このエラーは一時的な性質のものです。したがって、このエラーが発生したレコードの同期を後から試行すれば成功します。このエラーは、Connect のマッピングに深刻な問題があることを表しているわけではありません。
(psycopg2.OperationalError) FATAL: Too Many Connections for Role (致命的: ロールに対して接続が多すぎる)
このエラーは、Connect でデータベースへの接続を開こうとしたが、すでに接続制限に達している場合に発生します。接続が非常にアクティブな場合、Connect では 10 以上のデータベース接続を使用することがあります。このため、Connect では Essential 層のデータベースプランを使用しないことを強くお勧めします。
CREATE TEMPORARY TABLE tmpsf…
一時テーブルに関連したステートメントがログストリームに出現する場合があります。
CREATE TEMPORARY TABLE _tmp_sf_contact AS (...)
CREATE UNIQUE INDEX ON
_tmp_sf_contact (sfid)
CREATE INDEX ON
_tmp_sf_contact (__operation, sfid)
これらの一時テーブルは、Salesforce からデータベースへの挿入と更新をより効率的に同期するために、Connect の同期プロセスによって作成されます。これらはデータベースのパフォーマンスに影響を及ぼすことはなく、無視しても安全です。
Value does not exist or does not match filter criteria (値が存在しないかフィルター基準に一致しない)
このエラーは、無効な値を picklist フィールドに挿入しようとした場合に発生する可能性があります。Connect では picklist データ型をサポートしていますが、データ検証は提供していません。
Missed Updates Due to Salesforce Transactions (Salesforce トランザクションが原因の更新失敗)
ポーリングの時点で少数のレコードがトランザクションでロックされているために同期を実行できない可能性があります。Heroku Connect では、ポーリングの正常完了の 2 分後に、含まれている Salesforce ID のポーリングを実行することによってこれを処理します。欠落しているレコードが検出されると、自動的に同期されます。この “保険” ポーリングは、最後の同期操作時の処理中にレコードを調停します。
urlopen error [Errno -3] Temporary failure in name resolution (名前解決の一時的な失敗)
これは、Heroku Connect サービス内での DNS 解決の問題です。通常、一時的なネットワークエラーが原因で発生します。Heroku Connect は、このような断続的な問題に対して弾力性を備えており、DNS 解決の問題が解決されればデータの同期を継続します。
Connection Reset by Peer (接続がピアによってリセットされた)
このエラーは断続的なネットワーク接続の問題が原因で発生し、Connect ではこの状況を検出して操作を再試行するため、通常は無視しても構いません。このエラーメッセージが頻繁に記録される場合は、Heroku サポートに連絡して支援を受けることをお勧めします。
Read Operation Timed Out (読み取り操作がタイムアウトした)
The read operation timed out
エラーは、不安定なネットワーク接続が原因で発生します。この状況は Connect によって検出され、操作が再試行されるため、これらは通常、無視してもかまいません。このエラーメッセージが頻繁に記録される場合は、Heroku サポートに連絡して支援を受けることをお勧めします。
Disconnected from database due to: (psycopg2.errors.ProgramLimitExceeded) index row size <field_value_size>
exceeds btree version 4 maximum 2704 for index <index_name>
(データベースが次の理由で切断された: (psycopg2.errors.ProgramLimitExceeded) インデックス行サイズ <field_value_size>
がインデックス <index_name>
について B ツリーバージョン 4 の最大値 2704 を超過した)
このエラーメッセージは、インデックスを適用した列が、B-Tree 型インデックスに挿入される行の値にインデックスを付けられないことを示しています。Heroku Connect ダッシュボード上のマッピングエディタを使用してこのインデックスを作成した場合、それぞれの列の Indexed
(インデックス処理) オプションを選択解除します。カスタムインデックスを作成した場合、これを手動で削除します。この列にインデックスが必要な場合、PostgreSQL ドキュメントを参照して、大きい値を持つ列のインデックス作成に関するガイダンスを参照してください。
関連付けられた通知に関するエラー
ユーザーの介入が必要なエラーが発生すると、Heroku Connect ではこれらの通知が Connect ダッシュボードに表示され、通知の受信を選択したすべてのユーザーに Heroku Connect からメール通知が送信されます。通知を受信するユーザーのリストを表示するには、ダッシュボードで Settings
(設定) タブの Manage Connection
(接続の管理) にアクセスします。Connect ダッシュボードにアクセスできるユーザーのリストが Access
(アクセス) セクションに表示され、Notifications Enabled
(通知が有効) 設定をここで設定できます。
受信するのは、以下にまとめたエラーの通知です。通知メッセージには、発生したエラーの説明と、問題の理解および解決に役立つ情報が含まれています。以前に発生したエラーが解決したときにも通知を受信します。
Bad Configuration (不正な設定)
不正な設定エラーは、マッピングで使用される Salesforce オブジェクトまたは Heroku Postgres テーブルに変更が加えられたときに発生する可能性があります。このマッピングはエラーが解決するまで同期されませんが、他のマッピングは通常どおり同期を継続します。
Change User Permissions (ユーザーのアクセス許可の変更)
このエラーは、Salesforce への認証に使用するユーザー資格情報に、Heroku Connect で多数のレコードを効率的に同期するために必要なアクセス許可がないときに発生します。別の Salesforce ユーザー資格情報を使用して再認証するか、現在のユーザーのアクセス許可を変更すると、エラーが解決します。
Connection Error (接続エラー)
さまざまな理由で発生する接続エラーは、1 つ以上のマッピングで同期が実行されない原因になる場合があります。エラーの性質を正しく特定するために、Heroku Connect ダッシュボードのログを確認するよう求められます。
Database Unavailable (データベース利用不可)
Heroku Postgres データベースに到達できない場合、Heroku Connect は一切のマッピングを同期できなくなります。この問題を解決するには、データベース設定を確認することが必要になります。
Reauthorization Required (再認証が必要)
Heroku Connect の Salesforce 認証に使用されるユーザー資格情報が期限切れになるか変更された場合、すべてのマッピングの同期が停止します。同期を再開するには、Salesforce で再認証する必要があります。Heroku Connect は、認証が一時的に失敗した場合にも、接続の再認証を試みます。
Salesforce Bulk Load Error (Salesforce 一括ロードエラー)
このエラーは、マッピングの初期一括ロードまたはリロード中に問題があった場合に発生します。Heroku Connect ダッシュボードの Logs
(ログ) タブを表示し、Error (エラー) ログ行をフィルターで抽出することでエラーの原因を調査できます。ほとんどの場合、これらのエラーの原因は一括バッチの失敗です。一括ロード操作中にエラーが発生すると、マッピングが不整合な状態のままになる可能性があり、この状態からの自動回復はできません。エラーの原因を特定して修正した後に、マッピングをリロードする必要があります。
Salesforce Streaming Error Encountered (Salesforce ストリーミング エラーが発生しました)
このエラーは、Heroku Connect がマッピングに加速ポーリングを使用できない場合に発生します。Salesforce Org で Salesforce Streaming API が有効になっていることを確認します。また、Salesforce 統合ユーザーに PushTopic 標準オブジェクトの読み取りおよび作成権限があることを確認します。
Delayed Synchronization (同期の遅延)
これは次のエラーメッセージに関連します: “Too many sync errors. Sync operations may be disabled for up to 15 minute(s)” (同期エラーが多すぎるため同期操作が最大 15 分間無効化される可能性がある)。この通知は、同期が少なくとも 15 分遅延するという事実を警告するものです。ログメッセージで指定された時間が過ぎると、Connect は自動的に同期を再試行します。これは接続そのものだけでなく、1 つ以上のマッピングについて発生する場合があります。
監査メッセージ
Heroku Connect では、接続の設定に対する管理上の変更の記録も保持します。監査イベントは、Heroku Connect ダッシュボードの Logs
(ログ) タブに表示されます。これらのメッセージは、変更が誰によって、いつ行われたかを示します。さらに、接続またはそのデータの状態に影響を及ぼすいくつかの操作も含まれています。次のような例があります。
- 接続設定の更新
- マッピングの追加、変更、削除
- 以前にエクスポートした設定ファイルのインポート
- マッピングのデータを Salesforce からリロード
- 現在実行中の操作の中止
- 同期操作の一時停止と再開
- External Objects サポートの有効化と無効化
接続のアクティビティの CSV ダウンロードは Manage Connection (接続の管理) ページからダウンロードできます。