Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


11.3.6 取得方針

〈この項の構成〉

(1) 基本

Spanの基本の取得方針について説明します。EADS、XAについては、「(2) EADS(通常版限定)」および「(3) XA関数(SQL-Participant限定)」を参照してください。

取得個所、取得情報、および情報を取得するSpanについて説明します。

(a) 取得個所方針

HMP-PCTOではSpanを一般的な取得個所と、製品保守観点での取得個所で取得します。

一般的な取得個所でのSpanと、製品保守観点での取得個所でのSpanを、Spanに付与するオペレーション名で区別できます。オペレーション名は、各コンポーネント内の特定処理(オペレーション)を特定するため、製品のJavaクラス名やメソッド名などを組み合わせた文字列です。一般的な取得個所のSpanは、オペレーション名冒頭に「Recv」を付与します。

一般的な取得個所

分散トレースは一般的に、マイクロサービス間の情報を把握するために1回のサービス呼び出しで1Span取得します。HMP-PCTOでも、各コンポーネントでの処理開始時の上位処理でSpanを取得します。上位処理から呼び出す下位処理では別途Spanは取得しません。例外として、「製品保守観点での取得個所」に示す個所でSpanを取得します。

図11‒28 取得イメージ図

[図データ]

製品保守観点での取得個所

一般的なSpanの取得個所で情報を取得できない処理について、製品処理の調査のため別途Spanを取得します。

上位処理とは非同期に処理を実行する場合

タイマ処理など、他コンポーネントから要求の延長で実施した処理から登録し、別スレッドで実施する処理があります。これらの処理は登録元の処理が完了しても処理は続行するため、処理の終了時などの情報を、登録元のSpanへ登録できません。

そのため、コンポーネント内処理に応じて、次のどれかで取得します。

  • 処理途中および終了時の情報を取得する場合(他コンポーネントや他製品と連携する場合など)

    登録元処理のSpanを親Spanとした新たなSpanを作成します。

  • 起動時の情報だけを取得する場合(処理途中、終了時情報が不要の場合)

    登録元処理のSpanに、情報を付加します。

    図11‒29 タイマ処理

    [図データ]

電文送信処理

HMP-PCTOでは、複数の通信相手へ複数スレッドで同時送信する処理があります(OrchestratorからMediatorへのトランザクション決着要求など)。送信先の情報だけでは、ネットワーク遅延などが起きた場合に原因調査が難しいため、送信元での電文送受信時の情報(宛先、送受信時刻など)を取得したいため、送信先数分の情報取得が必要です。それらを1つのSpanで管理すると、宛先ごとの情報の確認がしづらくなります。そのため、送信先ごとに子Spanを取得し、送信先ごとの情報を子Spanで取得します。

図11‒30 通信処理

[図データ]

(b) 取得する付加情報方針

HMP-PCTOが取得する付加情報について説明します。

次の観点で付加情報を取得します。

  • 他トラブルシュート情報との紐づけ情報(ルートXID/ブランチXIDなど)

  • 対象処理がどこで実施した処理かの識別情報(ホスト名、スレッド名など)

  • 通信先の情報(送信先のIPアドレス、ポート番号など)

  • 通信データ(他コンポーネントへの指示内容(Commit/rollback要求)など)

  • 対象処理の結果(commit/rollbackなど)

  • 実行時間情報(ユーザアプリケーション、ファイルI/Oなど開始終了時間など)

    重要

    分散トレース閲覧サービスで確認できる情報について

    HMP-PCTOのコンポーネントが取得する付加情報が同一であっても、使用する分散トレース閲覧サービスによっては、名称が異なったり、確認できなかったり、HMP-PCTOが取得した付加情報以外の情報が取得されていたりする場合があります。

    詳細については、使用する分散トレース閲覧サービスのドキュメントを参照してください。

    Azure Monitor Application Insightsを使用する場合に取得される情報については、Microsoft Azureの公式ドキュメントを参照してください。

    Google Cloud PlatformのCloud Traceを使用する場合に取得される情報については、Google Cloud Platformの公式ドキュメントを参照してください。

    New Relicを使用する場合に取得される情報については、New Relicの公式ドキュメントを参照してください。

付加する情報の一覧を次に示します。

コンポーネント共通

HMP-PCTOのコンポーネントが、共通でSpanに付加する情報の一覧を次に示します。

  • XID(ルートXID、ブランチXIDなど)

  • 取得するスパンに関する情報(スパンのフォーマット、スレッド名など)

  • HMP-PCTOのPodが起動しているノード情報

  • HMP-PCTOが使用しているOpenTelemetryのライブラリに関する情報

スパンタグ
表11‒9 コンポーネント共通の付加情報(スパンタグ)

項番

情報名

Jaegerを使用する場合

Azure Monitor Application Insightsを使用する場合

Google Cloud PlatformのCloud Traceを使用する場合

New Relicを使用する場合

設定する情報値の説明

1

root-xid

ルートXIDをbase64エンコードした値を設定します。

ルートXIDとブランチXIDのうち、ルートXIDを使用する処理の場合に設定します。

2

branch-xid

ブランチXIDをbase64エンコードした値を設定します。

ルートXIDとブランチXIDのうち、ブランチXIDを使用する処理の場合に設定します。

3

thread-name

Spanが取得されたスレッド名を設定します。

4

otel.library.name

Spanを取得するライブラリの名称を設定します。

HMP-PCTOのライブラリで取得されたSpanの場合、「HMP-PCTO」が設定されます。

5

otel.library.version

Spanを取得するライブラリのバージョンを設定します。

HMP-PCTOのライブラリで取得されたSpanの場合、HMP-PCTOのライブラリのバージョン「V.R.S」が設定されます。

6

otel.scope.name

Spanを取得するスコープの名称を設定します。

HMP-PCTOのスコープで取得されたSpanの場合、「HMP-PCTO」が設定されます。

7

otel.scope.version

Spanを取得するスコープのバージョンを設定します。

HMP-PCTOのスコープで取得されたSpanの場合、HMP-PCTOのバージョン「V.R.S」が設定されます。

8

internal.span.format

Spanのフォーマットを設定します。

Jaeger向けのSpanの場合、「jaeger」が設定されます。

(凡例)

○:分散トレース閲覧サービスで確認できます。

−:分散トレース閲覧サービスで確認できません。

スパンイベント

付加情報はありません。

スパンコンテキスト
表11‒10 コンポーネント共通の付加情報(スパンコンテキスト)

項番

情報名

Jaegerを使用する場合

Azure Monitor Application Insightsを使用する場合

Google Cloud PlatformのCloud Traceを使用する場合

New Relicを使用する場合

設定する情報値の説明

1

hostname

コンポーネントのホスト名を設定します。

2

Role instance

コンポーネントのホスト名を設定します。

3

ip

コンポーネントのIPアドレスを設定します。

4

jaeger.version

Jaegerを使用する場合だけ設定されます。

HMP-PCTOが使用しているOpenTelemetryのライブラリを設定します。

「opentelemetry-java」が設定されます。

5

service.name

HMP-PCTOのjp.co.Hitachi.soft.hmppcto.tracing.instance-idパラメタに設定した値が設定されます。

6

Role name

HMP-PCTOのjp.co.Hitachi.soft.hmppcto.tracing.instance-idパラメタに設定した値が設定されます。

7

telemetry.sdk.language

HMP-PCTOが使用しているOpenTelemetryのライブラリの言語を設定します。

「java」が設定されます。

8

telemetry.sdk.name

HMP-PCTOが使用しているOpenTelemetryのライブラリの名称を設定します。

「opentelemetry」が設定されます。

9

telemetry.sdk.version

HMP-PCTOが使用しているOpenTelemetryのバージョンを設定します。

HMP-PCTO 01-01以降では、「1.38.0」が設定されます。

(凡例)

○:分散トレース閲覧サービスで確認できます。

−:分散トレース閲覧サービスで確認できません。

REST通信

コンポーネント共通の情報に加えて、REST通信を実施する際にSpanに付加する情報の一覧を次に示します。

  • リクエスト情報(HTTPメソッド、URL、レスポンスのHTTPステータスコードなど)

  • スケーリング対応機能の情報(ルーティング処理による書き換え後のリクエストURL)

スパンタグ
表11‒11 REST通信の付加情報(スパンタグ)

項番

項目名

説明

1

http-method

リクエストのHTTPメソッド。

例:POST、GETなど

2

http-url

リクエストのURL。

3

routed-http-url

スケーリング対応機能のルーティング処理による書き換え後のリクエストURL。

スケーリング対応機能を使用する場合だけ、この項目を設定します。

4

http-status-code

レスポンスのHTTPステータスコード。

通信障害でレスポンスが受信できなかった場合、この項目は設定されません。

スパンイベント

付加情報はありません。

スパンコンテキスト

付加情報はありません。

gRPC通信

コンポーネント共通の情報に加えて、gRPC通信を実施する際にSpanに付加する情報の一覧を次に示します。

  • gRPC情報(メソッド、サービス、ステータスコードなど)

  • HMP-PCTOが使用しているOpenTelemetryのライブラリに関する情報

スパンタグ
表11‒12 gRPC通信の付加情報(スパンタグ)

項番

項目名

Jaegerを使用する場合

Azure Monitor Application Insightsを使用する場合

Google Cloud PlatformのCloud Traceを使用する場合

New Relicを使用する場合

説明

1

network.peer.address

ネットワーク接続先のIPアドレスを設定します。

2

network.peer.port

ネットワーク接続先のポート番号を設定します。

3

network.type

ネットワークの種別を設定します。

「ipv4」を設定します。

4

rpc.grpc.status_code

gRPCのステータスコードを設定します。

5

rpc.method

gRPCのメソッドを設定します。

6

rpc.service

gRPCのサービスを設定します。

7

rpc.system

RPCの種別を設定します。

「grpc」が設定されます。

8

server.address

gRPCサーバのIPアドレスまたはホスト名を設定します。

9

server.port

gRPCサーバのポート番号を設定します。

10

span.kind

Span種別を設定します。

  • server:gRPCサーバの場合に設定します。

  • client:gRPCクライアントの場合に設定します。

11

otel.library.name

gRPC通信に関するSpanを取得するライブラリの名称を設定します。

12

otel.library.version

gRPC通信に関するSpanを取得するライブラリのバージョンを設定します。

13

otel.scope.name

gRPC通信に関するSpanを取得するスコープの名称を設定します。

14

otel.scope.version

gRPC通信に関するSpanを取得するスコープのバージョンを設定します。

(凡例)

○:分散トレース閲覧サービスで確認できます。

−:分散トレース閲覧サービスで確認できません。

スパンイベント
表11‒13 gRPC通信の付加情報(スパンイベント)

項番

項目名

説明

追加情報名

設定する情報値の説明

1

message

gRPCのメッセージ送信が行われたことを意味します。

message.id

メッセージのシーケンス番号

2

message.type

メッセージ送信時は「SENT」が設定されます。メッセージ受信時は「RECEIVED」が設定されます。

3

sent message(hmppcto)

gRPCのメッセージ送信が行われたことを意味します。

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタがtrueの場合だけ取得されます。

json-convert

JSON形式での出力か、protobuf形式での出力かを示します。

true: JSON形式

false: protobuf形式

4

message-value

電文内容。

5

thread-name

gRPC通信のメッセージを送信したスレッド名を設定します。

6

sent message(hmppcto)

gRPCのメッセージ送信が行われたことを意味します。

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタがfalseの場合だけ取得されます。

message.type

電文種別。

7

thread-name

gRPC通信のメッセージを送信したスレッド名を設定します。

8

received message(hmppcto)

gRPCのメッセージ受信が行われたことを意味します。

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタがtrueの場合だけ取得されます。

json-convert

JSON形式での出力か、protobuf形式での出力かを示します。

true: JSON形式

false: protobuf形式

9

message-value

電文内容。

10

thread-name

gRPC通信のメッセージを送信したスレッド名を設定します。

11

received message(hmppcto)

gRPCのメッセージ受信が行われたことを意味します。

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタがfalseの場合だけ取得されます。

message.type

電文種別。

12

thread-name

gRPC通信のメッセージを送信したスレッド名を設定します。

スパンコンテキスト

付加情報はありません。

Orchestrator

コンポーネント共通の情報に加えて、OrchestratorがSpanに付加する情報の一覧を次に示します。

  • トランザクション決着結果

  • 先行プリペアの実施有無

スパンタグ
表11‒14 Orchestratorの付加情報(スパンタグ)

項番

情報名

設定する情報値の説明

1

result

グローバルトランザクション決着結果

  • Commit

    コミット

  • Rollback

    ロールバック

  • Failure

    トランザクション決着失敗

2

prepare

先行プリペアの実施有無

  • Y

    実行

  • N

    未実行

スパンイベント
表11‒15 Orchestratorの付加情報(スパンイベント)

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:service

OrchestratorのHMP-PCTOのトランザクション処理の開始を意味します。

情報なし

2

end:service

OrchestratorのHMP-PCTOのトランザクション処理の終了を意味します。

情報なし

3

start:branch

Orchestratorで@PctoTransactionBranchアノテーションを使用した際のトランザクションブランチの開始を意味します。

情報なし

4

end:branch

Orchestratorで@PctoTransactionBranchアノテーションを使用した際のトランザクションブランチの終了を意味します。

情報なし

5

start:AP

Orchestratorのユーザアプリケーション開始を意味します。

情報なし

6

end:AP

Orchestratorのユーザアプリケーション終了を意味します。

情報なし

7

start:pre process

OrchestratorでgRPCを通信手段とした際の、ユーザアプリケーション実行の前処理の開始を意味します。

情報なし

8

end:pre process

OrchestratorでgRPCを通信手段とした際の、ユーザアプリケーション実行の前処理の終了を意味します。

情報なし

9

return:InnerClientCall

OrchestratorでgRPCを通信手段とした際のユーザアプリケーション実行の前処理で、InnerClientCallインスタンスの返却を意味します。

情報なし

10

start:InnerClientCall

OrchestratorでgRPCを通信手段とした際のユーザアプリケーション実行の前処理で、InnerClientCallのstartの実行を意味します。

情報なし

11

start:post process

OrchestratorでgRPCを通信手段とした際の、ユーザアプリケーション実行の後処理の開始を意味します。

情報なし

12

end:post process

OrchestratorでgRPCを通信手段とした際の、ユーザアプリケーション実行の後処理の終了を意味します。

情報なし

13

start:execute

Orchestratorのユーザアプリケーションの送信処理内でHMP-PCTOの前処理が完了し送信処理を開始したことを意味します。

情報なし

14

end:execute

Orchestratorのユーザアプリケーションの送信処理内で送信処理が終了しHMP-PCTOの後処理を開始したことを意味します。

情報なし

15

response:get-status-code

Orchestratorのユーザアプリケーションの送信処理内でHMP-PCTOが応答のステータスコードを確認をしたことを意味します。

情報なし

(凡例)−:該当しません。

スパンコンテキスト

付加情報はありません。

Entity-Module

コンポーネント共通の情報に加えて、Entity-ModuleがSpanに付加する情報の一覧を次に示します。

  • Orchestratorへのトランザクション結果

  • 先行プリペアの実施有無

スパンタグ
表11‒16 Entity-Moduleの付加情報(スパンタグ)

項番

情報名

設定する情報値の説明

1

result

Orchestratorへのトランザクション結果

  • Commit

    コミット

  • Rollback

    ロールバック

2

prepare

先行プリペアの実施有無

  • Y

    実行

  • N

    未実行

スパンイベント
表11‒17 Entity-Moduleの付加情報(スパンイベント)

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:service

Entity-ModuleのHMP-PCTOのトランザクション処理のアプリケーション開始を意味します。

情報なし

2

end:service

Entity-ModuleのHMP-PCTOのトランザクション処理のアプリケーション終了を意味します。

情報なし

3

start:AP

Entity-Moduleのユーザアプリケーション開始を意味します。

情報なし

4

end:AP

Entity-Moduleのユーザアプリケーション終了を意味します。

情報なし

5

start:pre process

Entity-ModuleでgRPCを通信手段とした際の、ユーザアプリケーション実行の前処理の開始を意味します。

情報なし

6

end:pre process

Entity-ModuleでgRPCを通信手段とした際の、ユーザアプリケーション実行の前処理の終了を意味します。

情報なし

7

return:InnerClientCall

Entity-ModuleでgRPCを通信手段とした際のユーザアプリケーション実行の前処理で、InnerClientCallインスタンスの返却を意味します。

情報なし

8

start:InnerClientCall

Entity-ModuleでgRPCを通信手段とした際のユーザアプリケーション実行の前処理で、InnerClientCallのstartの実行を意味します。

情報なし

9

start:post process

Entity-ModuleでgRPCを通信手段とした際の、ユーザアプリケーション実行の後処理の開始を意味します。

情報なし

10

end:post process

Entity-ModuleでgRPCを通信手段とした際の、ユーザアプリケーション実行の後処理の終了を意味します。

情報なし

11

start:execute

Entity-Moduleのユーザアプリケーションの送信処理内でHMP-PCTOの前処理が完了し送信処理を開始したことを意味します。

情報なし

12

end:execute

Entity-Moduleのユーザアプリケーションの送信処理内で送信処理が終了しHMP-PCTOの後処理を開始したことを意味します。

情報なし

13

response:get-status-code

Entity-Moduleのユーザアプリケーションの送信処理内でHMP-PCTOが応答のステータスコードを確認をしたことを意味します。

情報なし

(凡例)−:該当しません。

スパンコンテキスト

付加情報はありません。

SQL-Participant

コンポーネント共通の情報に加えて、SQL-ParticipantでSpanに付加する情報の一覧を次に示します。

  • 分散合意の実施状況

  • 補助合意の実施状況

  • トランザクションブランチの状態遷移

  • ParticipantでのJDBCメソッドの開始および終了

スパンタグ
表11‒18 SQL-Participantの付加情報(スパンタグ)

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

  • Commit

    コミット

  • Rollback

    ロールバック

2

mediator-id

Mediatorのhost名とport番号を意味します。

3

proposer-id

Participant情報(<Service名>.<Namespace名>:IPアドレス:ホスト名)を意味します。

4

propose-values

投票内容を意味します。

  • COMMIT_VOTE

    コミット投票

  • ROLLBACK_VOTE

    ロールバック投票

5

before-transaction-status

遷移前のトランザクションブランチの状態を意味します。

  • 0

    NONE

  • 1

    PREPARING

  • 2

    COMMIT_VOTE

  • 3

    READ_ONLY

  • 4

    ROLLBACK_VOTE

  • 5

    COMMITTING

  • 6

    ROLLING_BACK

  • 7

    COMMITTED

  • 8

    ROLLED_BACK

  • 9

    COMMIT_ERROR

  • 10

    ROLLBACK_ERROR

  • 11

    ROLLED_BACK_BY_RM

6

after-transaction-status

遷移後のトランザクションブランチの状態を意味します。

  • 0

    NONE

  • 1

    PREPARING

  • 2

    COMMIT_VOTE

  • 3

    READ_ONLY

  • 4

    ROLLBACK_VOTE

  • 5

    COMMITTING

  • 6

    ROLLING_BACK

  • 7

    COMMITTED

  • 8

    ROLLED_BACK

  • 9

    COMMIT_ERROR

  • 10

    ROLLBACK_ERROR

  • 11

    ROLLED_BACK_BY_RM

7

recover-pod-hostname

recover担当となったPodのホスト名

8

recover-pod-ip

recover担当となったPodのIP

9

prepare

null

Entity-Moduleからトランザクションブランチのprepare要求を受けたことを意味します。

10

cancel

null

Entity-Moduleからトランザクションブランチのcancel要求を受けたことを意味します。

注※ この付加情報はスケーリング対応機能を使用する場合に、一定間隔で繰り返し実行される定期的なRecovery機能で出力します。

出力契機は次のとおりです。

  • jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタがfalseの場合

    jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタが30分未満の場合は最後の出力から、30分経過後の定期実行時に出力

    jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタが30分以上の場合は定期実行のたびに常に出力

    定期実行時にRecovery対象のトランザクションがある場合は必ず出力

  • jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタがtrueの場合

    定期実行のたびに、常に出力

スパンイベント
表11‒19 SQL-Participantの付加情報(スパンイベント)

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog(Mediatorから受信した合意)の数、m:受信数、n:Mediator数です。

情報なし

2

fast consensus

高速合意の実施を意味します。

情報なし

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

4

external consensus

補助合意の実施を意味します。

情報なし

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

6

The consensus has not been terminated for a long time.

分散合意が回収時間を経過していたことを意味します。

情報なし

7

start:termination-judge

Mediatorへの投票開始を意味します。

情報なし

8

end:termination-judge

Mediatorへの投票終了を意味します。

情報なし

9

start:jdbc <JDBC Driverのクラス名>.<JDBC Driverのメソッド名>

ParticipantでのJDBCメソッド開始を意味します。

jp.co.Hitachi.soft.hmppcto.tracing.jdbc.debugパラメタがtrueの場合だけ取得されます。

情報なし

10

end:jdbc

ParticipantでのJDBCメソッド終了を意味します。

jp.co.Hitachi.soft.hmppcto.tracing.jdbc.debugパラメタがtrueの場合だけ取得されます。

情報なし

11

start:recover-job

スケーリング対応機能を使用する場合の、未決着トランザクションのRecovery機能の処理開始を意味します。

情報なし

12

end:recover-job

スケーリング対応機能を使用する場合の、未決着トランザクションのRecovery機能の処理終了を意味します。

情報なし

13

old-pod-uuid

トランザクションのXIDに付与していたPodのUUIDです。

情報なし

14

counter

スケーリング対応機能を使用する場合の、未決着トランザクションのRecovery機能の実行回数です。

この付加情報は複数のスパンで同一の値を出力します。この値とトレースを出力しているPodのホスト名を用いてスパン同士を一意に紐づけする目的で出力しています。

情報なし

上限を9999とし、超えた場合は1に戻ります。

15

pod-info-list

スケーリング対応機能を使用する場合の、未決着トランザクションのRecovery機能の実行時にKubernetesAPIによってPodを取得した結果です。

情報なし

取得したPodのホスト名とUUIDの一覧

(凡例)−:該当しません。

注※ この付加情報はスケーリング対応機能を使用する場合に、一定間隔で繰り返し実行される定期的なRecovery機能で出力します。

出力契機は次のとおりです。

  • jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタがfalseの場合

    jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタが30分未満の場合は最後の出力から、30分経過後の定期実行時に出力

    jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタが30分以上の場合は定期実行のたびに常に出力

    定期実行時にRecovery対象のトランザクションがある場合は必ず出力

  • jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタがtrueの場合

    定期実行のたびに、常に出力

スパンコンテキスト

付加情報はありません。

TCC-Participant

コンポーネント共通の情報に加えて、TCC-ParticipantでSpanに付加する情報の一覧を次に示します。

  • 分散合意の実施状況

  • 補助合意の実施状況

  • トランザクションブランチの状態遷移

  • Try、Confirm、Cancelの開始および終了

スパンタグ
表11‒20 TCC-Participantの付加情報(スパンタグ)

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

  • Commit

    コミット

  • Rollback

    ロールバック

2

mediator-id

Mediatorのhost名とport番号を意味します。

3

proposer-id

Participant情報(<Service名>.<Namespace名>:IPアドレス:ホスト名)を意味します。

4

propose-values

投票内容を意味します。

  • COMMIT_VOTE

    コミット投票

  • ROLLBACK_VOTE

    ロールバック投票

5

before-transaction-status

遷移前のトランザクションブランチの状態を意味します。

  • 0

    NONE

  • 1

    PREPARING

  • 2

    COMMIT_VOTE

  • 3

    READ_ONLY

  • 4

    ROLLBACK_VOTE

  • 5

    COMMITTING

  • 6

    ROLLING_BACK

  • 7

    COMMITTED

  • 8

    ROLLED_BACK

  • 9

    COMMIT_ERROR

  • 10

    ROLLBACK_ERROR

  • 11

    ROLLED_BACK_BY_RM

6

after-transaction-status

遷移後のトランザクションブランチの状態を意味します。

  • 0

    NONE

  • 1

    PREPARING

  • 2

    COMMIT_VOTE

  • 3

    READ_ONLY

  • 4

    ROLLBACK_VOTE

  • 5

    COMMITTING

  • 6

    ROLLING_BACK

  • 7

    COMMITTED

  • 8

    ROLLED_BACK

  • 9

    COMMIT_ERROR

  • 10

    ROLLBACK_ERROR

  • 11

    ROLLED_BACK_BY_RM

スパンイベント
表11‒21 TCC-Participantの付加情報(スパンイベント)

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog(Mediatorから受信した合意)の数、m:受信数、n:Mediator数です。

情報なし

2

fast consensus

高速合意の実施を意味します。

情報なし

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

4

external consensus

補助合意の実施を意味します。

情報なし

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

6

The consensus has not been terminated for a long time.

分散合意が回収時間を経過していたことを意味します。

情報なし

7

start:termination-judge

Mediatorへの投票開始を意味します。

情報なし

8

end:termination-judge

Mediatorへの投票終了を意味します。

情報なし

9

start:try

Try開始を意味します。

情報なし

10

end:try

Try終了を意味します。

情報なし

11

start:confirm

Confirm開始を意味します。

情報なし

12

end:confirm

Confirm終了を意味します。

情報なし

13

start:cancel

Cancel開始を意味します。

情報なし

14

end:cancel

Cancel終了を意味します。

情報なし

(凡例)−:該当しません。

スパンコンテキスト

付加情報はありません。

TP1-Bridge

コンポーネント共通の情報に加えて、TP1-BridgeでSpanに付加する情報の一覧を次に示します。

  • 分散合意の実施状況

  • 補助合意の実施状況

  • トランザクションブランチの状態遷移

  • TP1-Client/Jのメソッドの呼び出し開始および終了

  • TP1-Converterの呼び出し開始および終了

スパンタグ
表11‒22 TP1-Bridgeの付加情報(スパンタグ)

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

  • Commit

    コミット

  • Rollback

    ロールバック

2

mediator-id

Mediatorのhost名とport番号を意味します。

3

proposer-id

Participant情報(<Service名>.<Namespace名>:IPアドレス:ホスト名)を意味します。

4

propose-values

投票内容を意味します。

  • COMMIT_VOTE

    コミット投票

  • ROLLBACK_VOTE

    ロールバック投票

5

before-transaction-status

遷移前のトランザクションブランチの状態を意味します。

  • 0

    NONE

  • 1

    PREPARING

  • 2

    COMMIT_VOTE

  • 3

    READ_ONLY

  • 4

    ROLLBACK_VOTE

  • 5

    COMMITTING

  • 6

    ROLLING_BACK

  • 7

    COMMITTED

  • 8

    ROLLED_BACK

  • 9

    COMMIT_ERROR

  • 10

    ROLLBACK_ERROR

  • 11

    ROLLED_BACK_BY_RM

6

after-transaction-status

遷移後のトランザクションブランチの状態を意味します。

  • 0

    NONE

  • 1

    PREPARING

  • 2

    COMMIT_VOTE

  • 3

    READ_ONLY

  • 4

    ROLLBACK_VOTE

  • 5

    COMMITTING

  • 6

    ROLLING_BACK

  • 7

    COMMITTED

  • 8

    ROLLED_BACK

  • 9

    COMMIT_ERROR

  • 10

    ROLLBACK_ERROR

  • 11

    ROLLED_BACK_BY_RM

7

prepare

null

Entity-Moduleからトランザクションブランチのprepare要求を受けたことを意味します。

8

cancel

null

Entity-Moduleからトランザクションブランチのcancel要求を受けたことを意味します。

スパンイベント
表11‒23 TP1-Bridgeの付加情報(スパンイベント)

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog(Mediatorから受信した合意)の数、m:受信数、n:Mediator数です。

情報なし

2

fast consensus

高速合意の実施を意味します。

情報なし

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

4

external consensus

補助合意の実施を意味します。

情報なし

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

6

The consensus has not been terminated for a long time.

分散合意が回収時間を経過していたことを意味します。

情報なし

7

start:termination-judge

Mediatorへの投票開始を意味します。

情報なし

8

end:termination-judge

Mediatorへの投票終了を意味します。

情報なし

9

start:<TP1/Client/Jのメソッド名>

TP1/Client/Jのメソッドの呼び出し開始を意味します。

情報なし

10

end:<TP1/Client/Jのメソッド名>

TP1/Client/Jのメソッドの呼び出し終了を意味します。

情報なし

11

start:TP1-Converter

TP1-Converterの呼び出し開始を意味します。

情報なし

12

end:TP1-Converter

TP1-Converterの呼び出し終了を意味します。

情報なし

(凡例)−:該当しません。

スパンコンテキスト

付加情報はありません。

Mediator

コンポーネント共通の情報に加えて、MediatorがSpanに付加する情報の一覧を次に示します。

  • ConsensusLogの作成、削除および更新

  • Proposal Logの作成、削除および更新

  • トランザクションの決着結果

スパンタグ
表11‒24 Mediatorの付加情報(スパンタグ)

項番

情報名

設定する情報値の説明

1

consensus-value

Participantでの分散合意結果

  • Commit

    コミット

  • Rollback

    ロールバック

2

prepare-priority

投票要求を送信する際の優先度を設定します。

スパンイベント
表11‒25 Mediatorの付加情報(スパンイベント)

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:consensuslog

ConsensusLogへのアクセス(I/O)開始を意味します。

情報なし

2

end:consensuslog<追加情報>

ConsensusLogへのアクセス(I/O)終了を意味します。

ConsensusLogを追加する場合と削除する場合の、スパンイベント、出力内容および意味は次のとおりです。

  • end:consensuslog

    ConsensusLogの追加または削除処理が終了しました。ファイルの読み込み前に例外が発生しました。

  • end:consensuslog read

    ConsensusLogの追加または削除処理が終了しました。ファイルの書き込み前に読み込みをしました。

  • end:consensuslog not read

    ConsensusLogの追加または削除処理が終了しました。ファイルの書き込み前に読み込みをしませんでした。

ConsensusLogを読み込む場合とConsensusLogのParticipant情報の更新をする場合の、スパンイベント、出力内容および意味は次のとおりです。

  • end:consensuslog

    ConsensusLogの読み込みまたはParticipant情報の更新処理が終了しました。

情報なし

3

consensusid: <ConsensusIdの値>

ConsensusIdの値を意味します。

情報なし

4

start:proposallog-add-propose

Proposal Logへのアクセス(投票内容保存)の開始を意味します。

propose-values

Proposal Logに保存した投票内容の一覧を設定します。

  • COMMIT_VOTE

    Commit投票

  • ROLLBACK_VOTE

    Rollback投票

一覧は上記の値を","(コンマ)区切りで設定します。

[]で囲まれた中には分散トレース取得時にParticipantから受信した投票内容を設定します。

5

end:proposallog-add-propose

Proposal Logへのアクセス(投票内容保存)の終了を意味します。

情報なし

6

start:proposallog-add-propose-participant

Proposal Logへのアクセス(投票を受信したParticipant情報保存)の開始を意味します。

participants-value

Proposal Logに保存した投票を受信したParticipant情報(<Service名>.<Namespace名>:IPアドレス:ホスト名)の一覧を設定します。

一覧は<Service名>.<Namespace名>:IPアドレス:ホスト名を","(コンマ)区切りで設定します。

[]で囲まれた中には分散トレース取得時にParticipantから受信した投票内容を設定します。

7

end:proposallog-add-propose-participant

Proposal Logへのアクセス(投票を受信したParticipant情報保存)の終了を意味します。

情報なし

8

start:proposallog-add-all-participants

Proposal Logへのアクセス(トランザクションに参加したParticipant情報(<Service名>.<Namespace名>))の一覧の保存の開始を意味します。

all-participants

Proposal Logに保存されたトランザクションに参加したParticipant情報(<Service名>.<Namespace名>)の一覧を設定します。

一覧は<Service名>.<Namespace名>を","(コンマ)区切りで設定します。

9

end:proposallog-add-all-participants

Proposal Logへのアクセス(トランザクションに参加したParticipant情報(<Service名>.<Namespace名>))の一覧の保存の終了を意味します。

情報なし

10

start:proposallog-delete

Proposal Logの削除開始を意味します。

proposal-log-before-size

Proposal Logの削除前の件数を設定します。

11

end:proposallog-delete

Proposal Logの削除終了を意味します。

proposal-log-after-size

Proposal Logの削除後の件数を設定します。

12

start: terminated-transaction-verify

ConsensusLogのトランザクション完了確認通知の送信開始を意味します。

consensus log size

完了確認通知の送信を行ったConsensusLogの数を設定します。

13

end: terminated-transaction-verify

ConsensusLogのトランザクション完了確認通知の送信終了を意味します。

情報なし

14

send-consensus-value:<更新可否の決着結果>

Participantへ送信した更新可否の決着結果を示します。

情報なし

(凡例)−:該当しません。

スパンコンテキスト

付加情報はありません。

(c) 情報を取得するSpanの方針

付加情報をどのSpanで取得するかについて説明します。

Spanに付加する情報は、全Span共通で付加するわけではなく、他コンポーネントから伝達された情報(ブランチXIDなど)やプロセスに関わる情報(ホスト名)などは、他コンポーネントから呼び出された先頭処理(主に受信処理)のSpanで取得します。先頭処理から生成/呼び出した処理は、先頭Spanと差異のある情報(スレッド名など)を取得します。

図11‒31 取得する情報

[図データ]

(2) EADS(通常版限定)

EADS API向け分散トレースは、分散合意取得機能の補助合意に使用されるEADSで、次の図に示すようなAPIを発行するParticipantとEADS間のデータ処理が妥当かどうかを判別するためにSpanを取得します。なお、トライアル版ではEADSは使用できません。

図11‒32 EADS向けトレース

[図データ]

このSpanによって、EADSへのアクセス時間、実行内容、実行結果を分析可能とし、障害発生時にトラブルシュートが可能になります。

(a) 取得個所

EADS APIのcreateおよびget向けにParticipantから補助合意のためにEADS APIを呼び出す時にSpanを取得します。

(b) 取得する情報

コンポーネント共通の情報に加えて、EADS API向けのSpanで取得する情報を次に示します。

  • EADSのAPI呼び出し

スパンタグ

付加情報はありません。

スパンイベント
表11‒26 EADSの付加情報(スパンイベント)

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:EADS API

EADSのAPIの呼び出しが行われたことを意味します。

API-name

呼び出すEADS API名

  • create

    createのEADS API

  • get

    getのEADS API

2

consensus

補助合意提案値。createの場合だけ出力する。

  • Commit

    コミット

  • Rollback

    ロールバック

3

end:EADS API

EADSのAPIの実行が終わったことを意味します。

API-name

実行が終わったEADS API名

  • create

    createのEADS API

  • get

    getのEADS API

4

get

取得した補助合意提案値。getの場合だけ出力する。

  • Commit

    コミット

  • Rollback

    ロールバック

5

failed:EADS API

EADSのAPIの実行中に例外が発生したことを意味します。

API-name

例外が発生したEADS API名

  • create

    createのEADS API

  • get

    getのEADS API

6

message

例外の詳細メッセージ文字列

スパンコンテキスト

付加情報はありません。

(3) XA関数(SQL-Participant限定)

XA関数向け分散トレースは、SQL-ParticipantとDB間のデータ処理が妥当かどうかを判別するためにSpanを取得します。トランザクションを対象としたSpanのため、次の図に示すような、処理1、処理2、処理3の個別な情報を取得するだけではなく、各処理が1つのトランザクションであることを把握できるデータも合わせて出力を行い、トランザクション全体での妥当性も確認します。このSpanによって、XA関数の実行順序、実行内容、実行結果を分析し、障害発生時にトラブルシュートが可能になります。

図11‒33 XA関数向けSpan

[図データ]

(a) 取得個所

  1. Participant初期化で、prepare済みのトランザクションを取得する時にSpanを取得します。

  2. Participantで、Commit、またはRollbackの通知のgRPC通信を受信した時のSpanにスパンイベントを追加します。

(b) 取得する情報

コンポーネント共通の情報に加えて、XA関数向けのSpanで取得する情報を次に示します。

  • XA関数の実行

スパンタグ

付加情報はありません。

スパンイベント
表11‒27 XA関数の付加情報(スパンイベント)

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start: xa function

XA関数の呼び出しが行われたことを意味します。

xa-name

呼び出すXA関数名

  • xa_start

    xa_start関数

  • xa_end

    xa_end関数

  • xa_prepare

    xa_prepare関数

  • xa_commit

    xa_commit関数

  • xa_rollback

    xa_rollback関数

  • xa_recover

    xa_recover関数

2

end: xa function

XA関数の実行が終わったことを意味します。

xa-name

実行が終わったXA関数名

  • xa_start

    xa_start関数

  • xa_end

    xa_end関数

  • xa_prepare

    xa_prepare関数

  • xa_commit

    xa_commit関数

  • xa_rollback

    xa_rollback関数

  • xa_recover

    xa_recover関数

3

failed:xa function

XA関数の実行中に例外が発生したことを意味します。

xa-name

例外が発生したXA関数名

  • xa_start

    xa_start関数

  • xa_end

    xa_end関数

  • xa_prepare

    xa_prepare関数

  • xa_commit

    xa_commit関数

  • xa_rollback

    xa_rollback関数

  • xa_recover

    xa_recover関数

4

message

例外の詳細メッセージ文字列

スパンコンテキスト

付加情報はありません。