[ 
https://issues.apache.org/jira/browse/HDDS-16192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18105768#comment-18105768
 ] 

Chia-Chuan Ho commented on HDDS-16192:
--------------------------------------

Thanks [~szetszwo] .
I verified the RPC path for StorageContainerLocationProtocol.
 * RPC server registration, client proxies, and failover providers use 
StorageContainerLocationProtocolPB.
 * The protocol version and Kerberos metadata used by Hadoop RPC therefore come 
from @ProtocolInfo and @KerberosInfo on the PB interface.
 * The versionID and @KerberosInfo on StorageContainerLocationProtocol do not 
appear to be used by the RPC path.

 
One caveat is that the FQCN of StorageContainerLocationProtocol is still used 
as the protocol identity: * 
StorageContainerLocationProtocolPB#getProtocolInfo.protocolName uses that FQCN.
 * With service authorization enabled, the server loads that class by name, and 
SCMPolicyProvider uses the same class as the ACL key.

 
Therefore, for the first patch, I plan to: # Remove only versionID and 
@KerberosInfo from StorageContainerLocationProtocol.
 # Keep the interface, its FQCN, methods, PB interface, translators, protobuf 
definitions, and SCMPolicyProvider unchanged.
 # Add a focused test confirming that the historical protocol name, version, 
and Kerberos metadata are provided by StorageContainerLocationProtocolPB.
 # Run the existing secure SCM RPC test to verify Kerberos authentication still 
works.

 
Since the PB service and its protocol name/version remain unchanged, this 
should preserve old-client/new-server and new-client/old-server wire 
compatibility. I would start with StorageContainerLocationProtocol only, then 
apply the same analysis to ScmBlockLocationProtocol.
What do you think?

> Refactor  o.a.h.hdds.scm.protocol
> ---------------------------------
>
>                 Key: HDDS-16192
>                 URL: https://issues.apache.org/jira/browse/HDDS-16192
>             Project: Apache Ozone
>          Issue Type: Improvement
>          Components: SCM
>            Reporter: Tsz-wo Sze
>            Priority: Major
>
> ||interface||protocol (gRPC service)||
> |StorageContainerLocationProtocol|StorageContainerLocationProtocolService|
> |ScmBlockLocationProtocol|ScmBlockLocationProtocolService|
> The above interfaces in package org.apache.hadoop.hdds.scm.protocol are just 
> internal interfaces but not really protocols, in the sense that changing the 
> signatures of the methods does NOT change the underlying protocols, where the 
> underlying protocols are defined in the corresponding gRPC services.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to