diff --git a/hadoop-hdds/interface-client/src/main/proto/hdds.proto b/hadoop-hdds/interface-client/src/main/proto/hdds.proto index 82504492eb8f..7c7f61cb8e00 100644 --- a/hadoop-hdds/interface-client/src/main/proto/hdds.proto +++ b/hadoop-hdds/interface-client/src/main/proto/hdds.proto @@ -228,13 +228,29 @@ enum ReplicationType { RATIS = 1; STAND_ALONE = 2; CHAINED = 3; + EC = 4; } +//Deprected: we should use replication config implementations everywhere enum ReplicationFactor { ONE = 1; THREE = 3; } +//replicaiton config for Ratis replication. Will replace pure ReplicationType everywhere +message RatisReplicationConfig { + required ReplicationFactor factor = 1; +} + +message StandaloneReplicationConfig { + required ReplicationFactor factor = 1; +} + +message ECReplicationConfig { + required int32 data = 1; + required int32 parity = 2; +} + enum ScmOps { allocateBlock = 1; keyBlocksInfoList = 2; diff --git a/hadoop-hdds/interface-server/src/main/proto/ScmServerProtocol.proto b/hadoop-hdds/interface-server/src/main/proto/ScmServerProtocol.proto index 5eac5be45171..e4c4f5a3ba64 100644 --- a/hadoop-hdds/interface-server/src/main/proto/ScmServerProtocol.proto +++ b/hadoop-hdds/interface-server/src/main/proto/ScmServerProtocol.proto @@ -125,10 +125,18 @@ enum Status { message AllocateScmBlockRequestProto { required uint64 size = 1; required uint32 numBlocks = 2; + + //deprecated, use RatisReplicationConfig required ReplicationType type = 3; - required hadoop.hdds.ReplicationFactor factor = 4; + + optional hadoop.hdds.ReplicationFactor factor = 4; required string owner = 5; optional ExcludeListProto excludeList = 7; + + //based on replication type, at least one of these should be included + optional hadoop.hdds.RatisReplicationConfig ratisReplicationConfig = 8; + optional hadoop.hdds.ECReplicationConfig ecReplicationConfig = 9; + optional hadoop.hdds.StandaloneReplicationConfig standaloneReplicationConfig = 10; } /**