You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Elek, Marton (JIRA)" <ji...@apache.org> on 2019/06/17 06:59:00 UTC
[jira] [Assigned] (HDDS-1674) Make ScmBlockLocationProtocol message
type based
[ https://issues.apache.org/jira/browse/HDDS-1674?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Elek, Marton reassigned HDDS-1674:
----------------------------------
Assignee: Stephen O'Donnell (was: Shweta)
> Make ScmBlockLocationProtocol message type based
> ------------------------------------------------
>
> Key: HDDS-1674
> URL: https://issues.apache.org/jira/browse/HDDS-1674
> Project: Hadoop Distributed Data Store
> Issue Type: Improvement
> Reporter: Elek, Marton
> Assignee: Stephen O'Donnell
> Priority: Major
>
> Most of the Ozone protocols are "message type based" and not "method based".
> For example in OzoneManagerProtocol.proto there is only one method:
> {code}
> service OzoneManagerService {
> // A client-to-OM RPC to send client requests to OM Ratis server
> rpc submitRequest(OMRequest)
> returns(OMResponse);
> }
> {code}
> And the exact method is determined by the type of the message:
> {code}
> message OMResponse {
> required Type cmdType = 1; // Type of the command
> // A string that identifies this command, we generate Trace ID in Ozone
> // frontend and this allows us to trace that command all over ozone.
> optional string traceID = 2;
> optional bool success = 3 [default=true];
> optional string message = 4;
> required Status status = 5;
> optional string leaderOMNodeId = 6;
> optional CreateVolumeResponse createVolumeResponse = 11;
> optional SetVolumePropertyResponse setVolumePropertyResponse = 12;
> optional CheckVolumeAccessResponse checkVolumeAccessResponse = 13;
> ....
> }
> enum Type {
> CreateVolume = 11;
> SetVolumeProperty = 12;
> CheckVolumeAccess = 13;
> InfoVolume = 14;
> DeleteVolume = 15;
> ListVolume = 16;
> ....
> {code}
> This is not the most natural way to use protobuf services but it has the additional benefit that we can propagate traceId / exception in a common way.
> Earlier there was an agreement to modify all the protocols to use this "message type based" approach to make it possible to provide proper error handling.
> In this issue the ScmBlockLocationProtocol.proto should be modified to use only one message:
> {code}
> service ScmBlockLocationProtocolService {
> rpc send (SCMBlockLocationRequest) returns (SCMBlockLocationResponse);
> }
> {code}
> It also requires to create the common request and response objects (with the common fields like type, traceId, success, message, status as they are used in the OzoneManagerProtocol.proto).
> To make it work, the ScmBlockLocationProtocolClientSideTranslatorPB and the ScmBlockLocationProtocolServerSideTranslatorPB should be improved to wrap/unwrap the original message to/from the generic message.
> I propose to only the protocol change here (if possible) we can keep the message/status fields empty and fix the error propagation in HDDS-1258
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org