From fd54471f3da33f96271dd738e10c519319ae94b6 Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Tue, 14 Oct 2025 15:56:29 +0100 Subject: [PATCH 01/15] Replication --- proto/raft_service/replication_v2.proto | 218 ++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 proto/raft_service/replication_v2.proto diff --git a/proto/raft_service/replication_v2.proto b/proto/raft_service/replication_v2.proto new file mode 100644 index 00000000..7e58cc77 --- /dev/null +++ b/proto/raft_service/replication_v2.proto @@ -0,0 +1,218 @@ +syntax = "proto3"; + +package typedb.protocol; + +// Main request wrapper +message StateMutationRequest { + oneof request { + LoadRequest load = 1; + DatabaseManagerRequest database_manager = 2; + DatabaseCommitRequest database_commit = 3; + UserManagerRequest user_manager = 4; + } +} + +// Load request +message LoadRequest { + // Empty message for load operation +} + +// Database manager requests +message DatabaseManagerRequest { + oneof request { + DatabaseAllRequest all = 1; + DatabaseGetRequest get = 2; + DatabaseGetUnrestrictedRequest get_unrestricted = 3; + DatabaseCreateRequest create = 4; + DatabaseCreateUnrestrictedRequest create_unrestricted = 5; + DatabaseDeleteRequest delete = 6; + } +} + +message DatabaseAllRequest { + // Empty message for all databases request +} + +message DatabaseGetRequest { + string name = 1; +} + +message DatabaseGetUnrestrictedRequest { + string name = 1; +} + +message DatabaseCreateRequest { + string name = 1; +} + +message DatabaseCreateUnrestrictedRequest { + string name = 1; +} + +message DatabaseDeleteRequest { + string name = 1; +} + +// Database commit requests +message DatabaseCommitRequest { + oneof request { + DatabaseSchemaCommitRequest schema = 1; + DatabaseDataCommitRequest data = 2; + } +} + +message DatabaseSchemaCommitRequest { + string name = 1; + bytes commit_record = 2; +} + +message DatabaseDataCommitRequest { + string name = 1; + bytes commit_record = 2; +} + +// User manager requests +message UserManagerRequest { + oneof request { + UserAllRequest all = 1; + UserGetRequest get = 2; + UserContainsRequest contains = 3; + UserCreateRequest create = 4; + UserUpdateRequest update = 5; + UserDeleteRequest delete = 6; + } +} + +message UserAllRequest { + string accessor = 1; +} + +message UserGetRequest { + string name = 1; + string accessor = 2; +} + +message UserContainsRequest { + string name = 1; +} + +message UserCreateRequest { + bytes commit_record = 1; +} + +message UserUpdateRequest { + bytes commit_record = 1; +} + +message UserDeleteRequest { + bytes commit_record = 1; +} + +// Response wrapper +message StateMutationResponse { + oneof response { + LoadResponse load = 1; + DatabaseManagerResponse database_manager = 2; + DatabaseCommitResponse database_commit = 3; + UserManagerResponse user_manager = 4; + } +} + +// Load response +message LoadResponse { + // Empty message for load response +} + +// Database manager responses +message DatabaseManagerResponse { + oneof response { + DatabaseAllResponse all = 1; + DatabaseGetResponse get = 2; + DatabaseGetUnrestrictedResponse get_unrestricted = 3; + DatabaseCreateResponse create = 4; + DatabaseCreateUnrestrictedResponse create_unrestricted = 5; + DatabaseDeleteResponse delete = 6; + } +} + +message DatabaseAllResponse { + repeated string databases = 1; + optional string error = 2; +} + +message DatabaseGetResponse { + optional bytes database = 1; // Serialized database or null + optional string error = 2; +} + +message DatabaseGetUnrestrictedResponse { + optional bytes database = 1; // Serialized database or null + optional string error = 2; +} + +message DatabaseCreateResponse { + optional string error = 1; +} + +message DatabaseCreateUnrestrictedResponse { + optional string error = 1; +} + +message DatabaseDeleteResponse { + optional string error = 1; +} + +// Database commit responses +message DatabaseCommitResponse { + oneof response { + DatabaseSchemaCommitResponse schema = 1; + DatabaseDataCommitResponse data = 2; + } +} + +message DatabaseSchemaCommitResponse { + optional string error = 1; +} + +message DatabaseDataCommitResponse { + optional string error = 1; +} + +// User manager responses +message UserManagerResponse { + oneof response { + UserAllResponse all = 1; + UserGetResponse get = 2; + UserContainsResponse contains = 3; + UserCreateResponse create = 4; + UserUpdateResponse update = 5; + UserDeleteResponse delete = 6; + } +} + +message UserAllResponse { + repeated bytes users = 1; // Serialized users + optional string error = 2; +} + +message UserGetResponse { + bytes user = 1; // Serialized user + optional string error = 2; +} + +message UserContainsResponse { + bool contains = 1; + optional string error = 2; +} + +message UserCreateResponse { + optional string error = 1; +} + +message UserUpdateResponse { + optional string error = 1; +} + +message UserDeleteResponse { + optional string error = 1; +} From 67b0e7f23a02eac9a001701af7ac3ebd5d97f595 Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Tue, 14 Oct 2025 16:00:08 +0100 Subject: [PATCH 02/15] Replication - remove response objects --- proto/raft_service/replication_v2.proto | 109 ------------------------ 1 file changed, 109 deletions(-) diff --git a/proto/raft_service/replication_v2.proto b/proto/raft_service/replication_v2.proto index 7e58cc77..b221be6a 100644 --- a/proto/raft_service/replication_v2.proto +++ b/proto/raft_service/replication_v2.proto @@ -107,112 +107,3 @@ message UserUpdateRequest { message UserDeleteRequest { bytes commit_record = 1; } - -// Response wrapper -message StateMutationResponse { - oneof response { - LoadResponse load = 1; - DatabaseManagerResponse database_manager = 2; - DatabaseCommitResponse database_commit = 3; - UserManagerResponse user_manager = 4; - } -} - -// Load response -message LoadResponse { - // Empty message for load response -} - -// Database manager responses -message DatabaseManagerResponse { - oneof response { - DatabaseAllResponse all = 1; - DatabaseGetResponse get = 2; - DatabaseGetUnrestrictedResponse get_unrestricted = 3; - DatabaseCreateResponse create = 4; - DatabaseCreateUnrestrictedResponse create_unrestricted = 5; - DatabaseDeleteResponse delete = 6; - } -} - -message DatabaseAllResponse { - repeated string databases = 1; - optional string error = 2; -} - -message DatabaseGetResponse { - optional bytes database = 1; // Serialized database or null - optional string error = 2; -} - -message DatabaseGetUnrestrictedResponse { - optional bytes database = 1; // Serialized database or null - optional string error = 2; -} - -message DatabaseCreateResponse { - optional string error = 1; -} - -message DatabaseCreateUnrestrictedResponse { - optional string error = 1; -} - -message DatabaseDeleteResponse { - optional string error = 1; -} - -// Database commit responses -message DatabaseCommitResponse { - oneof response { - DatabaseSchemaCommitResponse schema = 1; - DatabaseDataCommitResponse data = 2; - } -} - -message DatabaseSchemaCommitResponse { - optional string error = 1; -} - -message DatabaseDataCommitResponse { - optional string error = 1; -} - -// User manager responses -message UserManagerResponse { - oneof response { - UserAllResponse all = 1; - UserGetResponse get = 2; - UserContainsResponse contains = 3; - UserCreateResponse create = 4; - UserUpdateResponse update = 5; - UserDeleteResponse delete = 6; - } -} - -message UserAllResponse { - repeated bytes users = 1; // Serialized users - optional string error = 2; -} - -message UserGetResponse { - bytes user = 1; // Serialized user - optional string error = 2; -} - -message UserContainsResponse { - bool contains = 1; - optional string error = 2; -} - -message UserCreateResponse { - optional string error = 1; -} - -message UserUpdateResponse { - optional string error = 1; -} - -message UserDeleteResponse { - optional string error = 1; -} From 8d1e69203c736a3802627f297ad7e72fb0916538 Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Tue, 14 Oct 2025 16:01:07 +0100 Subject: [PATCH 03/15] Replication - move messages into replication.proto --- proto/raft_service/replication.proto | 107 ++++++++++++++++++++++- proto/raft_service/replication_v2.proto | 109 ------------------------ 2 files changed, 106 insertions(+), 110 deletions(-) delete mode 100644 proto/raft_service/replication_v2.proto diff --git a/proto/raft_service/replication.proto b/proto/raft_service/replication.proto index 7d9dc921..cda0ff94 100644 --- a/proto/raft_service/replication.proto +++ b/proto/raft_service/replication.proto @@ -10,8 +10,113 @@ message Replication { message Req { uint64 from_id = 1; string from_address = 2; - bytes message = 3; + StateMutationRequest state_mutation_request = 3; } message Res {} } + +message StateMutationRequest { + oneof request { + LoadRequest load = 1; + DatabaseManagerRequest database_manager = 2; + DatabaseCommitRequest database_commit = 3; + UserManagerRequest user_manager = 4; + } +} + +// Load request +message LoadRequest { + // Empty message for load operation +} + +// Database manager requests +message DatabaseManagerRequest { + oneof request { + DatabaseAllRequest all = 1; + DatabaseGetRequest get = 2; + DatabaseGetUnrestrictedRequest get_unrestricted = 3; + DatabaseCreateRequest create = 4; + DatabaseCreateUnrestrictedRequest create_unrestricted = 5; + DatabaseDeleteRequest delete = 6; + } +} + +message DatabaseAllRequest { + // Empty message for all databases request +} + +message DatabaseGetRequest { + string name = 1; +} + +message DatabaseGetUnrestrictedRequest { + string name = 1; +} + +message DatabaseCreateRequest { + string name = 1; +} + +message DatabaseCreateUnrestrictedRequest { + string name = 1; +} + +message DatabaseDeleteRequest { + string name = 1; +} + +// Database commit requests +message DatabaseCommitRequest { + oneof request { + DatabaseSchemaCommitRequest schema = 1; + DatabaseDataCommitRequest data = 2; + } +} + +message DatabaseSchemaCommitRequest { + string name = 1; + bytes commit_record = 2; +} + +message DatabaseDataCommitRequest { + string name = 1; + bytes commit_record = 2; +} + +// User manager requests +message UserManagerRequest { + oneof request { + UserAllRequest all = 1; + UserGetRequest get = 2; + UserContainsRequest contains = 3; + UserCreateRequest create = 4; + UserUpdateRequest update = 5; + UserDeleteRequest delete = 6; + } +} + +message UserAllRequest { + string accessor = 1; +} + +message UserGetRequest { + string name = 1; + string accessor = 2; +} + +message UserContainsRequest { + string name = 1; +} + +message UserCreateRequest { + bytes commit_record = 1; +} + +message UserUpdateRequest { + bytes commit_record = 1; +} + +message UserDeleteRequest { + bytes commit_record = 1; +} diff --git a/proto/raft_service/replication_v2.proto b/proto/raft_service/replication_v2.proto deleted file mode 100644 index b221be6a..00000000 --- a/proto/raft_service/replication_v2.proto +++ /dev/null @@ -1,109 +0,0 @@ -syntax = "proto3"; - -package typedb.protocol; - -// Main request wrapper -message StateMutationRequest { - oneof request { - LoadRequest load = 1; - DatabaseManagerRequest database_manager = 2; - DatabaseCommitRequest database_commit = 3; - UserManagerRequest user_manager = 4; - } -} - -// Load request -message LoadRequest { - // Empty message for load operation -} - -// Database manager requests -message DatabaseManagerRequest { - oneof request { - DatabaseAllRequest all = 1; - DatabaseGetRequest get = 2; - DatabaseGetUnrestrictedRequest get_unrestricted = 3; - DatabaseCreateRequest create = 4; - DatabaseCreateUnrestrictedRequest create_unrestricted = 5; - DatabaseDeleteRequest delete = 6; - } -} - -message DatabaseAllRequest { - // Empty message for all databases request -} - -message DatabaseGetRequest { - string name = 1; -} - -message DatabaseGetUnrestrictedRequest { - string name = 1; -} - -message DatabaseCreateRequest { - string name = 1; -} - -message DatabaseCreateUnrestrictedRequest { - string name = 1; -} - -message DatabaseDeleteRequest { - string name = 1; -} - -// Database commit requests -message DatabaseCommitRequest { - oneof request { - DatabaseSchemaCommitRequest schema = 1; - DatabaseDataCommitRequest data = 2; - } -} - -message DatabaseSchemaCommitRequest { - string name = 1; - bytes commit_record = 2; -} - -message DatabaseDataCommitRequest { - string name = 1; - bytes commit_record = 2; -} - -// User manager requests -message UserManagerRequest { - oneof request { - UserAllRequest all = 1; - UserGetRequest get = 2; - UserContainsRequest contains = 3; - UserCreateRequest create = 4; - UserUpdateRequest update = 5; - UserDeleteRequest delete = 6; - } -} - -message UserAllRequest { - string accessor = 1; -} - -message UserGetRequest { - string name = 1; - string accessor = 2; -} - -message UserContainsRequest { - string name = 1; -} - -message UserCreateRequest { - bytes commit_record = 1; -} - -message UserUpdateRequest { - bytes commit_record = 1; -} - -message UserDeleteRequest { - bytes commit_record = 1; -} From fb11d07343035f7c367e23985f1dd0d64f1dc933 Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Mon, 20 Oct 2025 14:17:53 +0100 Subject: [PATCH 04/15] Revert "Replication - move messages into replication.proto" This reverts commit 8d1e69203c736a3802627f297ad7e72fb0916538. --- proto/raft_service/replication.proto | 107 +---------------------- proto/raft_service/replication_v2.proto | 109 ++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 106 deletions(-) create mode 100644 proto/raft_service/replication_v2.proto diff --git a/proto/raft_service/replication.proto b/proto/raft_service/replication.proto index cda0ff94..7d9dc921 100644 --- a/proto/raft_service/replication.proto +++ b/proto/raft_service/replication.proto @@ -10,113 +10,8 @@ message Replication { message Req { uint64 from_id = 1; string from_address = 2; - StateMutationRequest state_mutation_request = 3; + bytes message = 3; } message Res {} } - -message StateMutationRequest { - oneof request { - LoadRequest load = 1; - DatabaseManagerRequest database_manager = 2; - DatabaseCommitRequest database_commit = 3; - UserManagerRequest user_manager = 4; - } -} - -// Load request -message LoadRequest { - // Empty message for load operation -} - -// Database manager requests -message DatabaseManagerRequest { - oneof request { - DatabaseAllRequest all = 1; - DatabaseGetRequest get = 2; - DatabaseGetUnrestrictedRequest get_unrestricted = 3; - DatabaseCreateRequest create = 4; - DatabaseCreateUnrestrictedRequest create_unrestricted = 5; - DatabaseDeleteRequest delete = 6; - } -} - -message DatabaseAllRequest { - // Empty message for all databases request -} - -message DatabaseGetRequest { - string name = 1; -} - -message DatabaseGetUnrestrictedRequest { - string name = 1; -} - -message DatabaseCreateRequest { - string name = 1; -} - -message DatabaseCreateUnrestrictedRequest { - string name = 1; -} - -message DatabaseDeleteRequest { - string name = 1; -} - -// Database commit requests -message DatabaseCommitRequest { - oneof request { - DatabaseSchemaCommitRequest schema = 1; - DatabaseDataCommitRequest data = 2; - } -} - -message DatabaseSchemaCommitRequest { - string name = 1; - bytes commit_record = 2; -} - -message DatabaseDataCommitRequest { - string name = 1; - bytes commit_record = 2; -} - -// User manager requests -message UserManagerRequest { - oneof request { - UserAllRequest all = 1; - UserGetRequest get = 2; - UserContainsRequest contains = 3; - UserCreateRequest create = 4; - UserUpdateRequest update = 5; - UserDeleteRequest delete = 6; - } -} - -message UserAllRequest { - string accessor = 1; -} - -message UserGetRequest { - string name = 1; - string accessor = 2; -} - -message UserContainsRequest { - string name = 1; -} - -message UserCreateRequest { - bytes commit_record = 1; -} - -message UserUpdateRequest { - bytes commit_record = 1; -} - -message UserDeleteRequest { - bytes commit_record = 1; -} diff --git a/proto/raft_service/replication_v2.proto b/proto/raft_service/replication_v2.proto new file mode 100644 index 00000000..b221be6a --- /dev/null +++ b/proto/raft_service/replication_v2.proto @@ -0,0 +1,109 @@ +syntax = "proto3"; + +package typedb.protocol; + +// Main request wrapper +message StateMutationRequest { + oneof request { + LoadRequest load = 1; + DatabaseManagerRequest database_manager = 2; + DatabaseCommitRequest database_commit = 3; + UserManagerRequest user_manager = 4; + } +} + +// Load request +message LoadRequest { + // Empty message for load operation +} + +// Database manager requests +message DatabaseManagerRequest { + oneof request { + DatabaseAllRequest all = 1; + DatabaseGetRequest get = 2; + DatabaseGetUnrestrictedRequest get_unrestricted = 3; + DatabaseCreateRequest create = 4; + DatabaseCreateUnrestrictedRequest create_unrestricted = 5; + DatabaseDeleteRequest delete = 6; + } +} + +message DatabaseAllRequest { + // Empty message for all databases request +} + +message DatabaseGetRequest { + string name = 1; +} + +message DatabaseGetUnrestrictedRequest { + string name = 1; +} + +message DatabaseCreateRequest { + string name = 1; +} + +message DatabaseCreateUnrestrictedRequest { + string name = 1; +} + +message DatabaseDeleteRequest { + string name = 1; +} + +// Database commit requests +message DatabaseCommitRequest { + oneof request { + DatabaseSchemaCommitRequest schema = 1; + DatabaseDataCommitRequest data = 2; + } +} + +message DatabaseSchemaCommitRequest { + string name = 1; + bytes commit_record = 2; +} + +message DatabaseDataCommitRequest { + string name = 1; + bytes commit_record = 2; +} + +// User manager requests +message UserManagerRequest { + oneof request { + UserAllRequest all = 1; + UserGetRequest get = 2; + UserContainsRequest contains = 3; + UserCreateRequest create = 4; + UserUpdateRequest update = 5; + UserDeleteRequest delete = 6; + } +} + +message UserAllRequest { + string accessor = 1; +} + +message UserGetRequest { + string name = 1; + string accessor = 2; +} + +message UserContainsRequest { + string name = 1; +} + +message UserCreateRequest { + bytes commit_record = 1; +} + +message UserUpdateRequest { + bytes commit_record = 1; +} + +message UserDeleteRequest { + bytes commit_record = 1; +} From 44209eaa0063b73eecc5e13c1f48c349966ac5ac Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Mon, 20 Oct 2025 14:18:03 +0100 Subject: [PATCH 05/15] Revert "Replication - remove response objects" This reverts commit 67b0e7f23a02eac9a001701af7ac3ebd5d97f595. --- proto/raft_service/replication_v2.proto | 109 ++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/proto/raft_service/replication_v2.proto b/proto/raft_service/replication_v2.proto index b221be6a..7e58cc77 100644 --- a/proto/raft_service/replication_v2.proto +++ b/proto/raft_service/replication_v2.proto @@ -107,3 +107,112 @@ message UserUpdateRequest { message UserDeleteRequest { bytes commit_record = 1; } + +// Response wrapper +message StateMutationResponse { + oneof response { + LoadResponse load = 1; + DatabaseManagerResponse database_manager = 2; + DatabaseCommitResponse database_commit = 3; + UserManagerResponse user_manager = 4; + } +} + +// Load response +message LoadResponse { + // Empty message for load response +} + +// Database manager responses +message DatabaseManagerResponse { + oneof response { + DatabaseAllResponse all = 1; + DatabaseGetResponse get = 2; + DatabaseGetUnrestrictedResponse get_unrestricted = 3; + DatabaseCreateResponse create = 4; + DatabaseCreateUnrestrictedResponse create_unrestricted = 5; + DatabaseDeleteResponse delete = 6; + } +} + +message DatabaseAllResponse { + repeated string databases = 1; + optional string error = 2; +} + +message DatabaseGetResponse { + optional bytes database = 1; // Serialized database or null + optional string error = 2; +} + +message DatabaseGetUnrestrictedResponse { + optional bytes database = 1; // Serialized database or null + optional string error = 2; +} + +message DatabaseCreateResponse { + optional string error = 1; +} + +message DatabaseCreateUnrestrictedResponse { + optional string error = 1; +} + +message DatabaseDeleteResponse { + optional string error = 1; +} + +// Database commit responses +message DatabaseCommitResponse { + oneof response { + DatabaseSchemaCommitResponse schema = 1; + DatabaseDataCommitResponse data = 2; + } +} + +message DatabaseSchemaCommitResponse { + optional string error = 1; +} + +message DatabaseDataCommitResponse { + optional string error = 1; +} + +// User manager responses +message UserManagerResponse { + oneof response { + UserAllResponse all = 1; + UserGetResponse get = 2; + UserContainsResponse contains = 3; + UserCreateResponse create = 4; + UserUpdateResponse update = 5; + UserDeleteResponse delete = 6; + } +} + +message UserAllResponse { + repeated bytes users = 1; // Serialized users + optional string error = 2; +} + +message UserGetResponse { + bytes user = 1; // Serialized user + optional string error = 2; +} + +message UserContainsResponse { + bool contains = 1; + optional string error = 2; +} + +message UserCreateResponse { + optional string error = 1; +} + +message UserUpdateResponse { + optional string error = 1; +} + +message UserDeleteResponse { + optional string error = 1; +} From 3fa96ab7825048b1fb0e1c9c31e0e6c74f024066 Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Mon, 20 Oct 2025 14:18:11 +0100 Subject: [PATCH 06/15] Revert "Replication" This reverts commit fd54471f3da33f96271dd738e10c519319ae94b6. --- proto/raft_service/replication_v2.proto | 218 ------------------------ 1 file changed, 218 deletions(-) delete mode 100644 proto/raft_service/replication_v2.proto diff --git a/proto/raft_service/replication_v2.proto b/proto/raft_service/replication_v2.proto deleted file mode 100644 index 7e58cc77..00000000 --- a/proto/raft_service/replication_v2.proto +++ /dev/null @@ -1,218 +0,0 @@ -syntax = "proto3"; - -package typedb.protocol; - -// Main request wrapper -message StateMutationRequest { - oneof request { - LoadRequest load = 1; - DatabaseManagerRequest database_manager = 2; - DatabaseCommitRequest database_commit = 3; - UserManagerRequest user_manager = 4; - } -} - -// Load request -message LoadRequest { - // Empty message for load operation -} - -// Database manager requests -message DatabaseManagerRequest { - oneof request { - DatabaseAllRequest all = 1; - DatabaseGetRequest get = 2; - DatabaseGetUnrestrictedRequest get_unrestricted = 3; - DatabaseCreateRequest create = 4; - DatabaseCreateUnrestrictedRequest create_unrestricted = 5; - DatabaseDeleteRequest delete = 6; - } -} - -message DatabaseAllRequest { - // Empty message for all databases request -} - -message DatabaseGetRequest { - string name = 1; -} - -message DatabaseGetUnrestrictedRequest { - string name = 1; -} - -message DatabaseCreateRequest { - string name = 1; -} - -message DatabaseCreateUnrestrictedRequest { - string name = 1; -} - -message DatabaseDeleteRequest { - string name = 1; -} - -// Database commit requests -message DatabaseCommitRequest { - oneof request { - DatabaseSchemaCommitRequest schema = 1; - DatabaseDataCommitRequest data = 2; - } -} - -message DatabaseSchemaCommitRequest { - string name = 1; - bytes commit_record = 2; -} - -message DatabaseDataCommitRequest { - string name = 1; - bytes commit_record = 2; -} - -// User manager requests -message UserManagerRequest { - oneof request { - UserAllRequest all = 1; - UserGetRequest get = 2; - UserContainsRequest contains = 3; - UserCreateRequest create = 4; - UserUpdateRequest update = 5; - UserDeleteRequest delete = 6; - } -} - -message UserAllRequest { - string accessor = 1; -} - -message UserGetRequest { - string name = 1; - string accessor = 2; -} - -message UserContainsRequest { - string name = 1; -} - -message UserCreateRequest { - bytes commit_record = 1; -} - -message UserUpdateRequest { - bytes commit_record = 1; -} - -message UserDeleteRequest { - bytes commit_record = 1; -} - -// Response wrapper -message StateMutationResponse { - oneof response { - LoadResponse load = 1; - DatabaseManagerResponse database_manager = 2; - DatabaseCommitResponse database_commit = 3; - UserManagerResponse user_manager = 4; - } -} - -// Load response -message LoadResponse { - // Empty message for load response -} - -// Database manager responses -message DatabaseManagerResponse { - oneof response { - DatabaseAllResponse all = 1; - DatabaseGetResponse get = 2; - DatabaseGetUnrestrictedResponse get_unrestricted = 3; - DatabaseCreateResponse create = 4; - DatabaseCreateUnrestrictedResponse create_unrestricted = 5; - DatabaseDeleteResponse delete = 6; - } -} - -message DatabaseAllResponse { - repeated string databases = 1; - optional string error = 2; -} - -message DatabaseGetResponse { - optional bytes database = 1; // Serialized database or null - optional string error = 2; -} - -message DatabaseGetUnrestrictedResponse { - optional bytes database = 1; // Serialized database or null - optional string error = 2; -} - -message DatabaseCreateResponse { - optional string error = 1; -} - -message DatabaseCreateUnrestrictedResponse { - optional string error = 1; -} - -message DatabaseDeleteResponse { - optional string error = 1; -} - -// Database commit responses -message DatabaseCommitResponse { - oneof response { - DatabaseSchemaCommitResponse schema = 1; - DatabaseDataCommitResponse data = 2; - } -} - -message DatabaseSchemaCommitResponse { - optional string error = 1; -} - -message DatabaseDataCommitResponse { - optional string error = 1; -} - -// User manager responses -message UserManagerResponse { - oneof response { - UserAllResponse all = 1; - UserGetResponse get = 2; - UserContainsResponse contains = 3; - UserCreateResponse create = 4; - UserUpdateResponse update = 5; - UserDeleteResponse delete = 6; - } -} - -message UserAllResponse { - repeated bytes users = 1; // Serialized users - optional string error = 2; -} - -message UserGetResponse { - bytes user = 1; // Serialized user - optional string error = 2; -} - -message UserContainsResponse { - bool contains = 1; - optional string error = 2; -} - -message UserCreateResponse { - optional string error = 1; -} - -message UserUpdateResponse { - optional string error = 1; -} - -message UserDeleteResponse { - optional string error = 1; -} From ee761e0611f440de2c2716705454a6eeaf6bc7ee Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Mon, 20 Oct 2025 14:19:36 +0100 Subject: [PATCH 07/15] Redo the request proto object --- proto/raft_service/request.proto | 74 ++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 proto/raft_service/request.proto diff --git a/proto/raft_service/request.proto b/proto/raft_service/request.proto new file mode 100644 index 00000000..1507eff5 --- /dev/null +++ b/proto/raft_service/request.proto @@ -0,0 +1,74 @@ +syntax = "proto3"; + +package typedb.cluster.state; + +// Mirrors Rust enum Request in `raft_request_response.rs`. +message Request { + oneof kind { + Load load = 1; + DatabaseManager database_manager = 2; + DatabaseCommit database_commit = 3; + UserManager user_manager = 4; + } +} + +// ----- Load ----- +message Load {} + +// ----- DatabaseManager ----- +message DatabaseManager { + oneof op { + DbAll all = 1; + DbGet get = 2; + DbGetUnrestricted get_unrestricted = 3; + DbCreate create = 4; + DbCreateUnrestricted create_unrestricted = 5; + DbDelete delete = 6; + } +} + +message DbAll {} +message DbGet { string name = 1; } +message DbGetUnrestricted { string name = 1; } +message DbCreate { string name = 1; } +message DbCreateUnrestricted { string name = 1; } +message DbDelete { string name = 1; } + +// ----- DatabaseCommit ----- +message DatabaseCommit { + oneof kind { + SchemaCommit schema = 1; + DataCommit data = 2; + } +} + +// commit_record is binary payload of CommitRecord serialisation +message SchemaCommit { + string name = 1; + bytes commit_record = 2; +} + +message DataCommit { + string name = 1; + bytes commit_record = 2; +} + +// ----- UserManager ----- +message UserManager { + oneof op { + UserAll all = 1; + UserGet get = 2; + UserContains contains = 3; + UserCreate create = 4; + UserUpdate update = 5; + UserDelete delete = 6; + } +} + +message UserAll { string accessor = 1; } +message UserGet { string name = 1; string accessor = 2; } +message UserContains { string name = 1; } +// commit_record is binary payload of CommitRecord serialisation +message UserCreate { bytes commit_record = 1; } +message UserUpdate { bytes commit_record = 1; } +message UserDelete { bytes commit_record = 1; } From 60275c459ebc821d957da15af577dfbf045b6977 Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Mon, 20 Oct 2025 15:50:16 +0100 Subject: [PATCH 08/15] Correct package name --- proto/raft_service/request.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/raft_service/request.proto b/proto/raft_service/request.proto index 1507eff5..563e01c3 100644 --- a/proto/raft_service/request.proto +++ b/proto/raft_service/request.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package typedb.cluster.state; +package typedb.protocol; // Mirrors Rust enum Request in `raft_request_response.rs`. message Request { From 6789f09266679ce11f4b207a43db92bbf9f86e7b Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Mon, 20 Oct 2025 15:53:56 +0100 Subject: [PATCH 09/15] Update BUILD --- grpc/rust/BUILD | 3 ++- proto/raft_service/BUILD | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/grpc/rust/BUILD b/grpc/rust/BUILD index 7abd941d..b2f74709 100644 --- a/grpc/rust/BUILD +++ b/grpc/rust/BUILD @@ -14,8 +14,9 @@ rust_tonic_compile( "//proto:version-proto", "//proto/raft_service:raft-service", "//proto/raft_service:replication-proto", - "//proto/typedb_clustering_service:typedb-clustering-service", + "//proto/raft_service:request-proto", "//proto/typedb_clustering_service:typedb-clustering-proto", + "//proto/typedb_clustering_service:typedb-clustering-service", "//proto/typedb_service:answer-proto", "//proto/typedb_service:authentication-proto", "//proto/typedb_service:concept-proto", diff --git a/proto/raft_service/BUILD b/proto/raft_service/BUILD index 62000b0e..fec93b08 100644 --- a/proto/raft_service/BUILD +++ b/proto/raft_service/BUILD @@ -20,6 +20,12 @@ proto_library( deps = [], ) +proto_library( + name = "request-proto", + srcs = ["request.proto"], + deps = [], +) + checkstyle_test( name = "checkstyle", size = "small", From 206078050a320592ed835c5686f6c267b828634e Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Wed, 22 Oct 2025 13:51:59 +0100 Subject: [PATCH 10/15] Retructure protobuf --- proto/raft_service/request.proto | 101 +++++++++++++++---------------- 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/proto/raft_service/request.proto b/proto/raft_service/request.proto index 563e01c3..1bdb2398 100644 --- a/proto/raft_service/request.proto +++ b/proto/raft_service/request.proto @@ -10,65 +10,64 @@ message Request { DatabaseCommit database_commit = 3; UserManager user_manager = 4; } -} -// ----- Load ----- -message Load {} + message Load {} + + message DatabaseManager { + oneof op { + DbAll all = 1; + DbGet get = 2; + DbGetUnrestricted get_unrestricted = 3; + DbCreate create = 4; + DbCreateUnrestricted create_unrestricted = 5; + DbDelete delete = 6; + } -// ----- DatabaseManager ----- -message DatabaseManager { - oneof op { - DbAll all = 1; - DbGet get = 2; - DbGetUnrestricted get_unrestricted = 3; - DbCreate create = 4; - DbCreateUnrestricted create_unrestricted = 5; - DbDelete delete = 6; + message DbAll {} + message DbGet { string name = 1; } + message DbGetUnrestricted { string name = 1; } + message DbCreate { string name = 1; } + message DbCreateUnrestricted { string name = 1; } + message DbDelete { string name = 1; } } -} -message DbAll {} -message DbGet { string name = 1; } -message DbGetUnrestricted { string name = 1; } -message DbCreate { string name = 1; } -message DbCreateUnrestricted { string name = 1; } -message DbDelete { string name = 1; } + // ----- DatabaseCommit ----- + message DatabaseCommit { + oneof kind { + SchemaCommit schema = 1; + DataCommit data = 2; + } -// ----- DatabaseCommit ----- -message DatabaseCommit { - oneof kind { - SchemaCommit schema = 1; - DataCommit data = 2; - } -} + // commit_record is binary payload of CommitRecord serialisation + message SchemaCommit { + string name = 1; + bytes commit_record = 2; + } -// commit_record is binary payload of CommitRecord serialisation -message SchemaCommit { - string name = 1; - bytes commit_record = 2; -} + message DataCommit { + string name = 1; + bytes commit_record = 2; + } + } -message DataCommit { - string name = 1; - bytes commit_record = 2; -} + // ----- UserManager ----- + message UserManager { + oneof op { + UserAll all = 1; + UserGet get = 2; + UserContains contains = 3; + UserCreate create = 4; + UserUpdate update = 5; + UserDelete delete = 6; + } -// ----- UserManager ----- -message UserManager { - oneof op { - UserAll all = 1; - UserGet get = 2; - UserContains contains = 3; - UserCreate create = 4; - UserUpdate update = 5; - UserDelete delete = 6; + message UserAll { string accessor = 1; } + message UserGet { string name = 1; string accessor = 2; } + message UserContains { string name = 1; } + // commit_record is binary payload of CommitRecord serialisation + message UserCreate { bytes commit_record = 1; } + message UserUpdate { bytes commit_record = 1; } + message UserDelete { bytes commit_record = 1; } } } -message UserAll { string accessor = 1; } -message UserGet { string name = 1; string accessor = 2; } -message UserContains { string name = 1; } -// commit_record is binary payload of CommitRecord serialisation -message UserCreate { bytes commit_record = 1; } -message UserUpdate { bytes commit_record = 1; } -message UserDelete { bytes commit_record = 1; } From 5c769c66facf786b8fa911e28b880ec3b7f0370b Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Wed, 22 Oct 2025 15:45:01 +0100 Subject: [PATCH 11/15] Add protobuf to service --- proto/raft_service/raft_service.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proto/raft_service/raft_service.proto b/proto/raft_service/raft_service.proto index 51886f28..d9346878 100644 --- a/proto/raft_service/raft_service.proto +++ b/proto/raft_service/raft_service.proto @@ -5,10 +5,12 @@ syntax = "proto3"; import "proto/raft_service/replication.proto"; +import "proto/raft_service/request.proto"; package typedb.protocol; // TODO: If the protocol is exposed, maybe it's actually `TypeDBRaft`? service Raft { rpc replication (Replication.Req) returns (Replication.Res); + rpc request (Request) returns (Request); } From 8c16b08cd4dd76f96bc1e10f6e6281a5d50337ff Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Wed, 22 Oct 2025 15:47:55 +0100 Subject: [PATCH 12/15] Add protobuf to service --- proto/raft_service/BUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/proto/raft_service/BUILD b/proto/raft_service/BUILD index fec93b08..24d342ed 100644 --- a/proto/raft_service/BUILD +++ b/proto/raft_service/BUILD @@ -11,6 +11,7 @@ proto_library( srcs = ["raft_service.proto"], deps = [ ":replication-proto", + ":request-proto" ], ) From 90036e4568a99cb27122b61a787583656121ea1b Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Thu, 23 Oct 2025 13:15:42 +0100 Subject: [PATCH 13/15] Update protobuf --- proto/raft_service/BUILD | 2 +- proto/raft_service/request.proto | 61 +++++++++++++++----------------- 2 files changed, 29 insertions(+), 34 deletions(-) diff --git a/proto/raft_service/BUILD b/proto/raft_service/BUILD index 24d342ed..c9fc4f22 100644 --- a/proto/raft_service/BUILD +++ b/proto/raft_service/BUILD @@ -11,7 +11,7 @@ proto_library( srcs = ["raft_service.proto"], deps = [ ":replication-proto", - ":request-proto" + ":request-proto", ], ) diff --git a/proto/raft_service/request.proto b/proto/raft_service/request.proto index 1bdb2398..58e97804 100644 --- a/proto/raft_service/request.proto +++ b/proto/raft_service/request.proto @@ -2,9 +2,8 @@ syntax = "proto3"; package typedb.protocol; -// Mirrors Rust enum Request in `raft_request_response.rs`. message Request { - oneof kind { + oneof request { Load load = 1; DatabaseManager database_manager = 2; DatabaseCommit database_commit = 3; @@ -14,31 +13,29 @@ message Request { message Load {} message DatabaseManager { - oneof op { - DbAll all = 1; - DbGet get = 2; - DbGetUnrestricted get_unrestricted = 3; - DbCreate create = 4; - DbCreateUnrestricted create_unrestricted = 5; - DbDelete delete = 6; + oneof database_manager { + All all = 1; + Get get = 2; + GetUnrestricted get_unrestricted = 3; + Create create = 4; + CreateUnrestricted create_unrestricted = 5; + Delete delete = 6; } - message DbAll {} - message DbGet { string name = 1; } - message DbGetUnrestricted { string name = 1; } - message DbCreate { string name = 1; } - message DbCreateUnrestricted { string name = 1; } - message DbDelete { string name = 1; } + message All {} + message Get { string name = 1; } + message GetUnrestricted { string name = 1; } + message Create { string name = 1; } + message CreateUnrestricted { string name = 1; } + message Delete { string name = 1; } } - // ----- DatabaseCommit ----- message DatabaseCommit { - oneof kind { + oneof database_commit { SchemaCommit schema = 1; DataCommit data = 2; } - // commit_record is binary payload of CommitRecord serialisation message SchemaCommit { string name = 1; bytes commit_record = 2; @@ -50,24 +47,22 @@ message Request { } } - // ----- UserManager ----- message UserManager { - oneof op { - UserAll all = 1; - UserGet get = 2; - UserContains contains = 3; - UserCreate create = 4; - UserUpdate update = 5; - UserDelete delete = 6; + oneof user_manager { + All all = 1; + Get get = 2; + Contains contains = 3; + Create create = 4; + Update update = 5; + Delete delete = 6; } - message UserAll { string accessor = 1; } - message UserGet { string name = 1; string accessor = 2; } - message UserContains { string name = 1; } - // commit_record is binary payload of CommitRecord serialisation - message UserCreate { bytes commit_record = 1; } - message UserUpdate { bytes commit_record = 1; } - message UserDelete { bytes commit_record = 1; } + message All { string accessor = 1; } + message Get { string name = 1; string accessor = 2; } + message Contains { string name = 1; } + message Create { bytes commit_record = 1; } + message Update { bytes commit_record = 1; } + message Delete { bytes commit_record = 1; } } } From 34056c2742a0679a2189f8110359a0626c539404 Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Fri, 24 Oct 2025 14:05:05 +0100 Subject: [PATCH 14/15] Add license header --- proto/raft_service/request.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/proto/raft_service/request.proto b/proto/raft_service/request.proto index 58e97804..2296a367 100644 --- a/proto/raft_service/request.proto +++ b/proto/raft_service/request.proto @@ -1,3 +1,7 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + syntax = "proto3"; package typedb.protocol; From 00c22465b14f06f5ade255f5da81f4a7111aea69 Mon Sep 17 00:00:00 2001 From: Ganeshwara Hananda Date: Fri, 24 Oct 2025 14:05:20 +0100 Subject: [PATCH 15/15] Update Java and NodeJS build files --- grpc/java/BUILD | 6 ++++-- grpc/nodejs/BUILD | 34 +++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/grpc/java/BUILD b/grpc/java/BUILD index 52ffe6b6..6845efe2 100644 --- a/grpc/java/BUILD +++ b/grpc/java/BUILD @@ -3,6 +3,7 @@ # file, You can obtain one at https://mozilla.org/MPL/2.0/. package(default_visibility = ["//visibility:public"]) + load("@typedb_dependencies//tool/checkstyle:rules.bzl", "checkstyle_test") load("@rules_proto_grpc//java:defs.bzl", "java_grpc_library") @@ -12,8 +13,9 @@ java_grpc_library( "//proto:version-proto", "//proto/raft_service:raft-service", "//proto/raft_service:replication-proto", - "//proto/typedb_clustering_service:typedb-clustering-service", + "//proto/raft_service:request-proto", "//proto/typedb_clustering_service:typedb-clustering-proto", + "//proto/typedb_clustering_service:typedb-clustering-service", "//proto/typedb_service:answer-proto", "//proto/typedb_service:authentication-proto", "//proto/typedb_service:concept-proto", @@ -34,7 +36,7 @@ java_grpc_library( checkstyle_test( name = "checkstyle", + size = "small", include = glob(["*"]), license_type = "mpl-header", - size = "small", ) diff --git a/grpc/nodejs/BUILD b/grpc/nodejs/BUILD index 9814648d..e9abaae8 100644 --- a/grpc/nodejs/BUILD +++ b/grpc/nodejs/BUILD @@ -3,6 +3,7 @@ # file, You can obtain one at https://mozilla.org/MPL/2.0/. package(default_visibility = ["//visibility:public"]) + load("@typedb_dependencies//tool/checkstyle:rules.bzl", "checkstyle_test") load("@typedb_bazel_distribution//npm:rules.bzl", "assemble_npm", "deploy_npm") load("@typedb_dependencies//distribution:deployment.bzl", "deployment") @@ -14,7 +15,10 @@ load("//grpc/nodejs:rules.bzl", "ts_grpc_compile") npm_link_all_packages(name = "node_modules") -exports_files(["package.json", "pnpm-lock.yaml"]) +exports_files([ + "package.json", + "pnpm-lock.yaml", +]) load("@typedb_protocol_npm//grpc/nodejs:protoc-gen-ts/package_json.bzl", protoc_gen_ts_bin = "bin") @@ -28,8 +32,9 @@ ts_grpc_compile( "//proto:version-proto", "//proto/raft_service:raft-service", "//proto/raft_service:replication-proto", - "//proto/typedb_clustering_service:typedb-clustering-service", + "//proto/raft_service:request-proto", "//proto/typedb_clustering_service:typedb-clustering-proto", + "//proto/typedb_clustering_service:typedb-clustering-service", "//proto/typedb_service:answer-proto", "//proto/typedb_service:authentication-proto", "//proto/typedb_service:concept-proto", @@ -43,12 +48,14 @@ ts_grpc_compile( "//proto/typedb_service:transaction-proto", "//proto/typedb_service:typedb-service", "//proto/typedb_service:user-proto", - ] + ], ) ts_project( name = "typedb-protocol", srcs = [":typedb-protocol-src"], + declaration = True, + transpiler = "tsc", tsconfig = { "compilerOptions": { "target": "es2019", @@ -58,26 +65,27 @@ ts_project( }, "include": [ "proto", - ] + ], }, - declaration = True, + visibility = ["//visibility:public"], deps = [ ":node_modules/@grpc/grpc-js", - ":node_modules/google-protobuf", ":node_modules/@types/google-protobuf", ":node_modules/@types/node", + ":node_modules/google-protobuf", ":node_modules/typescript", ], - transpiler = "tsc", - visibility = ["//visibility:public"], ) npm_package( name = "typedb-protocol-package", - srcs = [":typedb-protocol", "package.json"], + srcs = [ + "package.json", + ":typedb-protocol", + ], + include_external_repositories = ["typedb_protocol"], include_runfiles = False, package = "typedb-protocol", - include_external_repositories = ["typedb_protocol"], visibility = ["//visibility:public"], ) @@ -88,18 +96,18 @@ assemble_npm( deploy_npm( name = "deploy-npm", - target = ":assemble-npm", - snapshot = deployment["npm"]["snapshot"], release = deployment["npm"]["release"], + snapshot = deployment["npm"]["snapshot"], + target = ":assemble-npm", ) checkstyle_test( name = "checkstyle", + size = "small", include = glob(["*"]), exclude = [ "package.json", "pnpm-lock.yaml", ], license_type = "mpl-header", - size = "small", )