What Is A Gack?

[まとめページに戻る](https://qiita.com/Keiji_otsubo/items/60afc2a8d211b6f7d89f)
[まとめA～M](https://qiita.com/Keiji_otsubo/items/f3ddedee6793bf1576f8)

# シリアル番号 と　トレースId

```
1766050125-9679 (716921517)
```

シリアル番号 : 1766050125-9679 障害ごとに異なる
トレースId : 716921517　同じ障害内容だったら同じ


# 解答例

+ [Community user receiving a error when clicking on the lookup field to search for a product](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007XIdrW)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/41b51acd-ea70-5334-526d-fd843d36297c.png)

:::note
you may want to log a case with SF and provide the GACK number to support.
:::

# 説明

+ [What Is A Gack?](https://developer.salesforce.com/blogs/engineering/2015/02/gack)

Salesforce を長く使用している人であれば、「内部サーバー エラーが発生しました」という画面に遭遇したことがあるでしょう。その画面はいわゆるGACKです。このメッセージは、これらのイベントを研究開発部門に効率的に知らせるための精巧なシステムの一部です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/af78d830-d958-8168-0bc1-2e1efbddc400.png)

あなたが見ているのはいわゆるGACKです。ガックは私たちの死のブルースクリーンであり、眉をひそめたMacのアイコンであり、「あなたがおかけになった電話番号は現在使われておりません」であり、私たちの「ジェダイアは赤癬で亡くなりました」です。ガックとは、アプリケーション内でエラーがスローされ、それをキャッチして処理しなかった場合に発生する現象です。

これが意味するのは、それはあなたのせいではないということです。それは私たちのものです。そのため、このメッセージでお詫び申し上げます。ごめん！

このフレンドリーなメッセージは、機能の巨大な氷山の水面上の部分です。表示される数字は、これらのイベントを研究開発の注目を効率的に高めるための精巧なシステムの一部です。この投稿は、そのシステムを理解し、安全に走行するために私たちがどのように役立つかを理解するのに役立ちます。(ヒント: 氷山に近づかないようにしてください。)

# 数字
このような Gack 通知では、2 つの数字が表示されます。これらの番号の最初の番号にはハイフンが含まれており、2 番目の番号は括弧内にあります。これら 2 つの数字はそれぞれ、その特定のイベントの識別 ID と、その障害によって生成された一般的なスタック トレースです。

ギャクが起こります。私たちは 1 日に約 30 億件のトランザクションを実行しています。シックス シグマ認定プロセスであっても、この量では 1 日あたり 10,000 件のエラーが発生することが予想されます。Apex 開発者の創造性に加えてアプリケーション スタックの複雑さを考慮すると、1 日あたり 10,000 以上の処理が行われることが想像できます。私たちはウィジェットを製造しているわけではありません。私たちはウィジェットの製造を体験できるシステムを製造しています。雲の中。マルチテナント環境の場合。それは複雑です。

皆さんがたくさんいるので、私たちにはたくさんのガックがいます。ハンドルされない例外が発生して機能が停止すると、1 日に何千人ものユーザーがその機能にアクセスする可能性があります。たとえそれが 1 つの組織にのみ影響しているとしても、同じ問題の症状である多数の不具合が発生する可能性があります。

言うまでもなく（それでも言っておきますが）、ユニークなガックイベントをすべて分類することは不可能です。Salesforce は、ノイズの中から信号を見つけられるようにする内部システムを構築しました。

# ガックシステム

Gack システムは、Gack のスタック トレースを他の既知の Gack と照合することから一日を開始します。すべてのスタック トレースはわずかに異なりますが、一般的な問題によって引き起こされる問題は通常、同じ基本的なスタック トレースを持ちます。システムは、類似した一致を見つけると、共通のスタック トレースを使用して各固有のイベントを集計します。これにより、すべての個別の gack イベントのセットが、修正が必要な個別の問題の統合リストにまとめられます。

固有のスタック トレースが特定されると、バグが記録されます。あなたの gack がその種類の最初のものである場合、バグはそれに基づいて記録されます。あなたの Gack に以前に遭遇した Gack と同じスタック トレースがある場合、それはその Gack とそれによって生成されたバグに関連付けられています。

gack システムが行う次のトリックは、欠落しているエラー処理を担当するチームに固有のイベントを割り当てようとすることです。あらゆることを考慮すると、これは非常にうまく機能します。

これらの機能により、醜い画面が表示されたときにチームに通知を受け取ることができます。カスタマー サポートに問い合わせる前に、修正すべきバグがすでに見つかっています。

# ヘルプ・ミー・ヘルプ・ユー

Gackが発生したことがわかっているからといって、それがどのように発生したかがまったくわからないというわけではありません。多くの場合、スタック トレースのみを使用して、リバース エンジニアのチームは、Gackの原因となったユーザー フローをリバース エンジニアリングできます。開発者は、スタック トレースを確認するだけで、何が問題なのかを特定できることがよくあります。

しかし、多くの場合、ギャックがどのように起こったのかを判断することはできません。このような状況では、私たちはあなたの助けを借りることができます。

gack エラー画面またはメッセージが表示された場合は、その状況に至った経緯をメモしてください。提供していただける情報はどれも役に立ちます。問題を確実に再現できれば、それが最も有益な情報となります。

メモした詳細を社内の研究開発チームに伝える方法はいくつかあります。カスタマー サポートにケースが記録されている場合は、そこにこのコンテキスト情報をフィードできます。あなたのケースが私たちのシステムのバグにリンクされている場合、私たちはあなたの入力にアクセスできるようになります。コメントには、ガックを再現できる情報を提供していることを必ず明記してください。

もう 1 つの方法は、Stack Exchange に体験を投稿することです。gack ID とスタック トレース ID を、私たちの素敵なメッセージに出会った経緯に関する情報とともに投稿してください。調査を行うと、そこで見つけることができます。

問題は自分で発見できることが多いため、この詳細は必ずしも必要というわけではありません。ただし、それができない場合でも、お客様 (およびおそらく他の人) が直面している問題を解決するために、お客様の情報は当社にとって非常に貴重なものになります。

# シャッフルでも迷子にならない

Gackの原因が特定できない場合もあります。サーバーのシャットダウンやリリース境界など、非定型的なイベントには特殊なケースがあります。こういう奴らは二度と現れないこともある。時々、一度は遭遇したものの、二度と遭遇しないような例外的なケースがあります。このような場合、私たちは最終的に「再現不可能」としてギャックを閉じてしまいます。これは目を閉じて怪物がいなくなることを願うのと少し似ています。詳細に基づいて、モンスターがおそらく二度と戻らないと推測される場合にのみ、これを実行しようとします。（だって、もし怪物が戻ってきたら、目を閉じてそこに座っていたくはないでしょう、アミライト？）

問題が引き続き発生する場合、それを無視することはできません。Gack システムは、Gack が発生し続ける限り、Gack を常に認識し続けるようにします。チームがガックを諦めてバグを閉じた後、そのガックが再び表示された場合、新しいバグが記録されます。この新しいバグは元のバグに添付されており、問題が解決していないことがわかります。このようにして、バグを見失うことはありません。

私たちは、アプリケーションが成功し、無料で実行できるように、Gackのない環境を提供するために最善を尽くしています。間違いを犯したとき、私たちはその目標に向かって進み続けることができるように、それについて知りたいと考えます。gack システムがあなたをサポートします。


# さらに

+ [GACK コードの*公開* リストはありますか?](https://salesforce.stackexchange.com/questions/402781/is-there-a-public-facing-list-of-gack-codes)

>母艦の外で利用可能なメタデータ/ツール/バルク API に関する問題について、GACK ID とメタデータ タイプのリストはありますか?

存在しませんし、今後も存在しないと思います。 gack は定義上、Salesforce プラットフォームで処理されない例外であるため、そのメッセージと品質、および内部に関する潜在的な議論は予測できません。

Josh Kaplan 氏がリンク先のブログで述べているように、gack ID の内訳は半公開です。

>このような Gack 通知では、2 つの数字が表示されます。これらの番号の最初の番号にはハイフンが含まれており、2 番目の番号は括弧内にあります。

もう少し詳しく説明します。最初の数字は「シリアル番号」です。特定の出来事に対してユニークになるガックの。同じ号の最初の番号は異なります (これを Gack ID と呼びます)。

2 番目の数値は、ハンドルされない例外のスタックトレースのハッシュ (スタックトレース ID と呼びましょう) です。これは、ハッシュ衝突などの異常な事態が発生する可能性を除けば、まったく同じギャックが一貫して同じスタックトレース ID を持つ必要があることを意味します。 。

スタックトレース ID は、どのオブジェクト/メタデータに関連しているかを確実に伝えるものではありませんが、同じ例外 同じコールスタック内では同一になります。

場合によっては例外メッセージがハッシュに含まれないこともあれば、含まれることもありますが、一般にスタックトレース ID は実際にハッシュに含まれているかどうかを示すだけです。同じ問題かどうか、さらに意味のあるデータがエンコードされていません。

ガックは本質的にバグです。問題を修正する優先度と実行可能性は常に大きく異なりますが、基本的なレベルでは「クリーンアップ」が重要です。表示する gack は、それらを適切な外部向けエラー メッセージに修正することと基本的に同じになります。ただし、サニタイズされた公開 gack には、間接的で検出的な作業の追加層がある点が異なります。


GACK ID 値はヒューリスティックに導出され、クラッシュの頻度を定義するために、同じ根本原因を持つクラッシュをグループ化することのみを目的としています。クラッシュのログを読んで、クラッシュの重大度と根本的な原因を判断するのは人間の責任です。ログは知的に保護された内部コードで表現されるため、salesforce.com がソースデータを直接公開することはできず、人間がログを読んで根本原因を特定するまで ID は意味を持ちません。

クラッシュの原因が特定されると、Salesforce.com が使用する内部バグ追跡システムに手動で記録されます。これらは、あなたに与えられる可能性のある W-XXXXX 番号です。このバグトラッカーにも知的財産がぎっしりと詰まっているため、一般に公開することはできません。ただし、salesforce.com は通常、少なくともバグ追跡 ID を提供してくれるので、後でフォローアップできるようになります。

さらに、バグが深刻な場合は、既知の問題 ページに掲載されます。 「参照ID」が表示されます。公開されている各号について説明します。これが、その謎の GACK ID が何であるかを知るのに最も近い方法です。これはあなたが探している公開情報です。特定の ID をお持ちの場合は、その ID に参照 ID (バグが記録されている) があるかどうかを salesforce.com の担当者に尋ねてください。参照 ID は、アクセス権のある別の従業員に確認するか、 KI ページ。


# その他の資料

+ [【アイデア】GACK の一般的なスタック トレース識別子のパブリック リファレンスを提供します。](https://ideas.salesforce.com/s/idea/a0B8W00000GdnF5UAJ/provide-a-public-reference-of-gack-general-stack-trace-identifiers)

# 事例

+ [We couldn't query the data. Try again later. GackId: 889512804-1510199 (-1103954555)](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007epoFx)

:::note alert
sObject type 'ssot__Individual__dlm' is not supported. If you are attempting to use a custom object
:::