[
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]