Hitachi

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


9.4.4 定義するデータ形式

〈この項の構成〉

(1) XIDの形式

HMP-PCTOでは、トランザクションを一意に識別する情報としてXIDを使用します。XIDをコンポーネント間で引き渡して、トランザクションの制御をします。

XIDの構造は、javax.transaction.xaインタフェースで定義された構造(X/Openトランザクション識別子XID構造のJavaマッピング)とします。XIDの構造と内容を次の表に示します。

表9‒43 XIDの構造

名称

説明

GlobalTransactionId

(グローバルトランザクション識別子)

トランザクションザクションを一意に識別するためのID。

FormatId

(形式識別子/フォーマットID)

XIDの形式を示す数値。

現時点のHMP-PCTOではフォーマットID=1の一形式。

将来的に、HMP-PCTOのバージョン、使用する機能などによって形式が変わる場合は、この値で形式を区別します。

BranchQualifier

(トランザクションブランチ識別子)

トランザクションブランチを一意に識別するためのID。

(2) フォーマットID=1のXID形式

(a) GlobalTransactionId

64バイトのbyte配列です。内容を次に示します。

表9‒44 GlobalTransactionIdの内容

名称

オフセット(単位:バイト)

長さ(単位:バイト)

説明

UUID

(ユニバーサル固有識別子)

0

16

UUIDをbyte配列に変換した値です。Javaの標準クラスでタイプ4(擬似ランダム生成)UUIDを生成して格納します。

BIG ENDIANです。

MediatorNumbersMap

(Mediator番号)

16

8

トランザクションに参加するMediatorの番号に対応するビットマップです。

次のようにマッピングします。

  • 番号0を2^0ビットへマッピング

  • 番号63を2^63ビットへマッピング

BIG ENDIANです。

consensusType

(分散合意種別)

24

1

Orchestratorのパラメタjp.co.Hitachi.soft.hmppcto.learner.consensus-typeの設定値に対応した1バイトの文字です。

  • T:Three-Quarters

  • P:Privileged-Value

filler

(空き領域)

25

7

未使用領域です。

「’/’」で埋めます。

instanceId

(インスタンス識別子)

32

32

どのOrchestratorのトランザクションか判断するための識別子です。

Orchestratorのパラメタjp.co.Hitachi.soft.hmppcto.instance-id設定値をbyte配列に変換した値です。

設定値が32バイト未満の場合は、「’/’」で埋めます。

(b) FormatId

int型の1です。

(c) BranchQualifier

32バイトのbyte配列です。

Entity-ServiceもしくはEntity-Moduleを呼び出すOrchestrator、またはEntity-ServiceもしくはEntity-Moduleのパラメタjp.co.Hitachi.soft.hmppcto.branch.qualifier.listに設定した識別子をbyte[]に変換した値です。設定値が32バイト未満の場合は、「#」で埋めます。

ルートXIDの場合、BranchQualifierは意味はありません。0x00(1バイト)が設定されますが、使用されません。