Issue with CreateStream.metaData being optional

Hi

I’m trying to send CreateStream message, however if metadata is missing

63168,14,16:44:55.926] Error while processing message EventStore.Core.Messages.ClientMessage+CreateStream in queued handler ‘MainQueue’.

Argument cannot be null.

Parameter name: metadata

CreateStream message defined as:

message CreateStream {

required string event_stream_id = 1;

required bytes request_id = 2;

** optional bytes metadata = 3;**

required bool allow_forwarding = 4;

required bool is_json = 5;

}

I can see similar behaviour with NewEvent.eventType:

message NewEvent {

required bytes event_id = 1;

** optional string event_type = 2;**

required bool is_json = 3;

required bytes data = 4;

optional bytes metadata = 5;

}

Hmm event type should not be optional. I’ll look at metadata when I get home.

Hi Greg, could you also check

message EventRecord {

required string event_stream_id = 1;

required int32 event_number = 2;

required bytes event_id = 3;

** optional string event_type = 4;**

required bytes data = 5;

optional bytes metadata = 6;

}

Event type should be required as well. Can’t quite remember why some of these were optional, probably the best fix is to make them required in the protos.

James

Hi Yaroslav,

I’ve made the necessary changes as per your pull request, but on the dev branch instead of on master, which is for the upcoming version 2. Note that in this version, the CreateStream operation no longer exists in this version. If you’re working against
the master branch, there are several changes to the protocol buffer definitions, mostly related to security - the diff is below.

Thanks,

James

diff --git a/master:./ClientMessageDtos.proto b/dev:./ClientMessageDtos.proto

index 692da30…1300df9 100644

— a/master:./ClientMessageDtos.proto

+++ b/dev:./ClientMessageDtos.proto

@@ -9,11 +9,12 @@ enum OperationResult

WrongExpectedVersion = 4;

StreamDeleted = 5;

InvalidTransaction = 6;

  • AccessDenied = 7;

}

message NewEvent {

required bytes event_id = 1;

  • optional string event_type = 2;
  • required string event_type = 2;

required bool is_json = 3;

required bytes data = 4;

optional bytes metadata = 5;

@@ -23,7 +24,7 @@ message EventRecord {

required string event_stream_id = 1;

required int32 event_number = 2;

required bytes event_id = 3;

  • optional string event_type = 4;
  • required string event_type = 4;

required bytes data = 5;

optional bytes metadata = 6;

}

@@ -40,31 +41,11 @@ message ResolvedEvent {

required int64 prepare_position = 4;

}

-message DeniedToRoute {

  • required string external_tcp_address = 1;

  • required int32 external_tcp_port = 2;

  • required string external_http_address = 3;

  • required int32 external_http_port = 4;

-}