Repository navigation
Conversation
The four WalletExtension RPCs have returned UNIMPLEMENTED since 2019; the service was only registered on solidity nodes behind node.walletExtensionApi, which config.conf enabled but reference.conf disabled. Remove the service, its now-unreferenced messages (including the TimeMessage/TimePaginatedMessage orphans left by the 2018 RPC removal), the config key, and the dead client/test helpers. Log a removal warning when the old key is still present in operator configs.
waynercheung
left a comment
There was a problem hiding this comment.
Reviewed ca08100d717a0ba5cf97fc615ef7124eb84c213e. The removal scope matches #6931, and I found no remaining code references to the removed types. Checkstyle and the 43 targeted tests in ArgsTest, ParameterTest, and UtilMockTest pass. I found no consensus/database changes or confirmed runtime correctness defect.
[SHOULD] Please narrow the "compile-time impact only / runtime behavior is unchanged" claim in the PR description and #6931. On a solidity node with WalletExtension enabled and node.disabledApi = ["gettransactionsfromthis"], the registered method returns UNAVAILABLE through RpcApiAccessInterceptor; after removal, gRPC returns UNIMPLEMENTED without running the configured access/rate-limit interceptors. Reflection output also changes, and replacing the protocol artifact can break compiled consumers that reference the removed types. Please document these intentional compatibility changes.
Requesting changes to complete the config/gRPC regression coverage and the previously requested migration documentation and follow-up links. These do not require retaining the removed service.
…emove-wallet-extension-service # Conflicts: # framework/src/main/java/org/tron/core/services/http/Util.java
@waynercheung Thanks. Agreed. Confirmed on a solidity node with The description and #6931 now list this |
waynercheung
left a comment
There was a problem hiding this comment.
Re-reviewed af2f8ce. The previous code and test concerns are addressed, and I found no remaining implementation issues. The 50 targeted tests and Checkstyle pass locally. Approving.
Non-blocking follow-ups:
- Please track the applicable protocol, deployment, and documentation updates listed in #6931, and add the links under "Follow up".
- Before the v4.8.3 release, @317787106 please update #6921's principle 2 and item 4 to record the agreed direct-removal exception and target release.
* release_v4.8.3: refactor(api): remove dead WalletExtension gRPC service and config (tronprotocol#6975)
* release_v4.8.3: feat(framework): remove --keystore-factory support from FullNode (tronprotocol#6978) refactor(proto): remove unused proto discover definition (tronprotocol#7014) fix(config): close resource streams (tronprotocol#7002) refactor(crypto): remove unused SM2 and SM3 (tronprotocol#6999) feat(plugins): backfill section bloom (tronprotocol#6973) refactor(api): remove dead WalletExtension gRPC service and config (tronprotocol#6975) refactor(framework): decouple Manager from TronJsonRpcImpl (tronprotocol#6990) refactor(api): replace response copy wrappers with Jetty content count (tronprotocol#6982) update a new version. version name:GreatVoyage-v4.8.2.2-1-gf3e81404fe,version code:18830 (tronprotocol#7008) feat: improve node stability and execution efficiency (tronprotocol#7007)
What does this PR do?
close #6931.
Removes the dead
WalletExtensiongRPC service and everything reachable only from it:api.proto:service WalletExtension(GetTransactionsFromThis/2,GetTransactionsToThis/2), plus messagesAccountPaginated,TransactionList,TransactionListExtention(referenced only by these four RPCs) andTimeMessage/TimePaginatedMessage(request types of the WalletExtension*ByTimestampRPCs deleted in 2018, orphaned ever since)RpcApiService: the registration branch and the emptyWalletExtensionApiinner classnode.walletExtensionApiconfig item:CommonParameter/NodeConfigfields, theArgsbinding, and the key inreference.conf/config.conf/config-shield.conf. Following the retirement convention fornode.*keys,NodeConfig.fromConfignow logs a removal warning when the old key is still present in an operator configUtil.printTransactionList(sole caller was its own mock test), the WalletExtension stub and wrappers in test utilitiesGrpcClient/WalletClient,HttpMethed.getTransactions{From,To}ThisFromSolidity(targets/walletextension/*HTTP paths that have no servlet), and commented-outgetTransactionsByTimestamp/getAssetIssueListByTimestampblocksWhy are these changes required?
WalletExtensionhas had no implementation in any release since v3.7 (2020-03):RpcApiService$WalletExtensionApioverrides none of the four RPCs, so every call falls through to the generatedImplBasedefault handlers and returnsUNIMPLEMENTED. This makesnode.walletExtensionApibehavior-irrelevant — enabled, a solidity node registers a service with zero implemented methods (advertised via gRPC reflection whennode.rpc.reflectionServiceis on); disabled, callers get the sameUNIMPLEMENTED. Removing it also resolves the default-value inconsistency betweenconfig.conf(true) andreference.conf(false).Six years of unconditional
UNIMPLEMENTEDrules out any functional dependency, so the service is removed directly without a deprecation period, following existing practice for dead interfaces.This PR has been tested by:
Compatibility
service WalletExtensionand the five messages breaks code compiled againstWalletExtensionGrpc,AccountPaginated,TransactionList,TransactionListExtention,TimeMessageorTimePaginatedMessage. Other messages and their wire format are unchanged.UNIMPLEMENTEDbefore and after; the description changes from "is unimplemented" to "Method not found". On a solidity node withwalletExtensionApi = trueand one of these methods innode.disabledApi, the call returnedUNAVAILABLEand now returnsUNIMPLEMENTED; server interceptors (rate limiter, API access, Prometheus) no longer run for these calls.protocol.WalletExtensionis no longer listed.node.walletExtensionApiis ignored with a startup warning. No action needed for node operators.Release note
Follow up
tronprotocol/protocol: syncapi.protoUtils.printTransactionListwalletExtensionApifrom config samplesExtra details
None.