elek commented on a change in pull request #1973:
URL: https://github.com/apache/ozone/pull/1973#discussion_r589288762



##########
File path: hadoop-hdds/interface-server/src/main/proto/ScmServerProtocol.proto
##########
@@ -125,10 +125,17 @@ enum Status {
 message AllocateScmBlockRequestProto {
   required uint64 size = 1;
   required uint32 numBlocks = 2;
+
+  //deprected, use RatisReplicationConfig

Review comment:
       ```
    If we have two separated config classes (RatisReplicationConfig and 
ECReplicationConfig), then it's not easy to pass through the same API right?
    ```
    
    In Java I assume we will have a common superclass / interface, so it will 
be possible. Unfortunately we can do it only with protobuf 3 and I wouldn't 
like to be blocked by that.
    
    Until using proto3 I followed the same approach what we used earlier:
    
     We have multiple subclasses (like `CloseContainerRequestProto`, 
`ListContainerRequestProto` ...) and based on a type 
`ContainerCommandRequestProto.type` we choose the right one.
     
     Here I did exactly the same. The type is encoded in the `replication type` 
and based on the type we have two protos. But we can deserialize them to good 
old java classes which have common marker interface.
     
   > So, we need another config class for non Ratis ( you named only 
RatisReplicationConfig, why do we need to bother Ratis or non Ratis? it's just 
replication right )?
   
   If I understood well, you talk about STANDALONE. 
    
     1. STANDALONE replication is deprecated, therefore I didn't create 
configuration for that.
     2. The supported way to use ONE factor is using one node Ratis
     3. we do need to bother Ratis or non Ratis because they are different 
replications. In this model we may have different replication configuration for 
each of the replcation method
     
   >  I think we can bring ReplicationConfig changes in master itself and in EC 
branch we just need to add new EC config.
   
   I think the current state of the EC development is more like a proto-type 
phase. I would prefer to do this first on EC branch, check if it works well 
end2end (at least the read / write path). If it works well we can add it to the 
master.
   
   But I wouldn't change master until we see a working poc from ec.     
   
   >  So, why can't we add replication type with more specific like EC_3_2 and 
replication factor is 5.
   
   Because it's a less generic approach and instead of using meaningful, typed 
fields to hold information we would use string based naming conventions which 
is more error-prone, what I would like to avoid.
   
   And what about if we need to introduce 2-3 new parameters for EC? Would it 
be EC_3_2_PARAM1_PARAM2_PARAM3?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to