diff --git a/cmd/client/common/io_test.go b/cmd/client/common/io_test.go index 6321216d..cf48e54b 100644 --- a/cmd/client/common/io_test.go +++ b/cmd/client/common/io_test.go @@ -36,9 +36,10 @@ func TestWriteOutput(t *testing.T) { CreatedTimestamp: time.UnixMilli(2), ModifiedTimestamp: time.UnixMilli(3), ModificationsCount: 1, + SessionId: 5, }, "{\"key\":\"my-key\",\"version_id\":1,\"created_timestamp\":\"" + time.UnixMilli(2).Format(time.RFC3339Nano) + "\",\"modified_timestamp\":\"" + time.UnixMilli(3).Format(time.RFC3339Nano) + - "\",\"modifications_count\":1,\"ephemeral\":false,\"client_identity\":\"\"}\n"}, + "\",\"modifications_count\":1,\"ephemeral\":false,\"session_id\":5,\"client_identity\":\"\"}\n"}, } { t.Run(test.name, func(t *testing.T) { b := bytes.NewBufferString("") diff --git a/cmd/client/common/model.go b/cmd/client/common/model.go index aa602cd5..a0c6fc6e 100644 --- a/cmd/client/common/model.go +++ b/cmd/client/common/model.go @@ -23,6 +23,7 @@ type OutputVersion struct { ModifiedTimestamp time.Time `json:"modified_timestamp"` ModificationsCount int64 `json:"modifications_count"` Ephemeral bool `json:"ephemeral"` + SessionId int64 `json:"session_id"` ClientIdentity string `json:"client_identity"` } diff --git a/cmd/client/get/cmd.go b/cmd/client/get/cmd.go index b70d805a..08878281 100644 --- a/cmd/client/get/cmd.go +++ b/cmd/client/get/cmd.go @@ -111,6 +111,7 @@ func exec(cmd *cobra.Command, args []string) error { ModifiedTimestamp: time.UnixMilli(int64(version.ModifiedTimestamp)), ModificationsCount: version.ModificationsCount, Ephemeral: version.Ephemeral, + SessionId: version.SessionId, ClientIdentity: version.ClientIdentity, }) } diff --git a/oxia/client.go b/oxia/client.go index d3c397b2..62f1c38b 100644 --- a/oxia/client.go +++ b/oxia/client.go @@ -194,6 +194,10 @@ type Version struct { // Whether the record is ephemeral. See [Ephemeral] Ephemeral bool + // For ephemeral records, the identifier of the session to which this record lifecycle + // is attached to. Non-ephemeral records will always report 0. + SessionId int64 + // For ephemeral records, the unique identity of the Oxia client that did last modify it. // It will be empty for all non-ephemeral records. ClientIdentity string