Skip to content

Commit 9d3dbce

Browse files
emreariyurekmathbunnyrugodexsoft
authored
fix: Remove RpcEntryNotFound from ClioError (#2661)
Since rippled has its own error codes, all occurrences have been replaced except for [PR2549](#2549), and the entry has also been removed entirely from Clio’s error enum. This modification follows the feedback provided in this comment: #2549 (comment) Pending compatible libxrpl — temporarily on hold --------- Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com> Co-authored-by: Alex Kremer <akremer@ripple.com>
1 parent 8b6f65f commit 9d3dbce

File tree

6 files changed

+26
-8
lines changed

6 files changed

+26
-8
lines changed

src/rpc/Errors.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ getErrorInfo(ClioError code)
126126
{.code = ClioError::RpcMalformedAuthorizedCredentials,
127127
.error = "malformedAuthorizedCredentials",
128128
.message = "Malformed authorized credentials."},
129-
{.code = ClioError::RpcEntryNotFound, .error = "entryNotFound", .message = "Entry Not Found."},
130129
// special system errors
131130
{.code = ClioError::RpcInvalidApiVersion, .error = JS(invalid_API_version), .message = "Invalid API version."},
132131
{.code = ClioError::RpcCommandIsMissing,

src/rpc/Errors.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ enum class ClioError {
4343
RpcFieldNotFoundTransaction = 5006,
4444
RpcMalformedOracleDocumentId = 5007,
4545
RpcMalformedAuthorizedCredentials = 5008,
46-
RpcEntryNotFound = 5009,
46+
// NOTE: RpcEntryNotFound is replaced with RippledError::rpcENTRY_NOT_FOUND
47+
// RpcEntryNotFound = 5009,
4748

4849
// special system errors start with 6000
4950
RpcInvalidApiVersion = 6000,

src/rpc/handlers/VaultInfo.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ VaultInfoHandler::process(VaultInfoHandler::Input const& input, Context const& c
107107
sharedPtrBackend_->fetchLedgerObject(accountKeylet.key, lgrInfo.seq, ctx.yield);
108108

109109
if (!accountLedgerObject)
110-
return std::unexpected{Status{ClioError::RpcEntryNotFound}};
110+
return std::unexpected{Status{RippledError::rpcENTRY_NOT_FOUND}};
111111
}
112112

113113
return ripple::keylet::vault(*accountID, *input.tnxSequence);
@@ -116,7 +116,7 @@ VaultInfoHandler::process(VaultInfoHandler::Input const& input, Context const& c
116116
if (nodeIndex.parseHex(*input.vaultID))
117117
return ripple::keylet::vault(nodeIndex);
118118

119-
return std::unexpected{Status{ClioError::RpcEntryNotFound}};
119+
return std::unexpected{Status{RippledError::rpcENTRY_NOT_FOUND}};
120120
}();
121121

122122
if (not vaultKeylet.has_value())
@@ -127,7 +127,7 @@ VaultInfoHandler::process(VaultInfoHandler::Input const& input, Context const& c
127127
sharedPtrBackend_->fetchLedgerObject(vaultKeylet.value().key, lgrInfo.seq, ctx.yield);
128128

129129
if (not vaultLedgerObject)
130-
return Error{Status{ClioError::RpcEntryNotFound, "vault object not found."}};
130+
return Error{Status{RippledError::rpcENTRY_NOT_FOUND, "vault object not found."}};
131131

132132
ripple::STLedgerEntry const vaultSle{
133133
ripple::SerialIter{vaultLedgerObject->data(), vaultLedgerObject->size()}, vaultKeylet.value().key
@@ -137,7 +137,7 @@ VaultInfoHandler::process(VaultInfoHandler::Input const& input, Context const& c
137137
auto const issuanceObject = sharedPtrBackend_->fetchLedgerObject(issuanceKeylet, lgrInfo.seq, ctx.yield);
138138

139139
if (not issuanceObject)
140-
return Error{Status{ClioError::RpcEntryNotFound, "issuance object not found."}};
140+
return Error{Status{RippledError::rpcENTRY_NOT_FOUND, "issuance object not found."}};
141141

142142
ripple::STLedgerEntry const issuanceSle{
143143
ripple::SerialIter{issuanceObject->data(), issuanceObject->size()}, issuanceKeylet

src/web/impl/ErrorHandling.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ class ErrorHelper {
9191
case rpc::ClioError::RpcFieldNotFoundTransaction:
9292
case rpc::ClioError::RpcMalformedOracleDocumentId:
9393
case rpc::ClioError::RpcMalformedAuthorizedCredentials:
94-
case rpc::ClioError::RpcEntryNotFound:
9594
case rpc::ClioError::EtlConnectionError:
9695
case rpc::ClioError::EtlRequestError:
9796
case rpc::ClioError::EtlRequestTimeout:

src/web/ng/impl/ErrorHandling.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ ErrorHelper::makeError(rpc::Status const& err) const
105105
case rpc::ClioError::RpcFieldNotFoundTransaction:
106106
case rpc::ClioError::RpcMalformedOracleDocumentId:
107107
case rpc::ClioError::RpcMalformedAuthorizedCredentials:
108-
case rpc::ClioError::RpcEntryNotFound:
109108
case rpc::ClioError::EtlConnectionError:
110109
case rpc::ClioError::EtlRequestError:
111110
case rpc::ClioError::EtlRequestTimeout:

tests/unit/rpc/handlers/VaultInfoTests.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ struct VaultInfoParamTestCaseBundle {
7171
std::string testName;
7272
std::string testJson;
7373
std::string expectedError;
74+
CombinedError expectedErrorCode;
7475
std::string expectedErrorMessage;
7576
};
7677

@@ -86,6 +87,7 @@ generateTestValuesForParametersTest()
8687
"idk": "idk"
8788
})JSON",
8889
.expectedError = "malformedRequest",
90+
.expectedErrorCode = ClioError::RpcMalformedRequest,
8991
.expectedErrorMessage = "Malformed request."
9092
},
9193
VaultInfoParamTestCaseBundle{
@@ -94,6 +96,7 @@ generateTestValuesForParametersTest()
9496
"seq": 4
9597
})JSON",
9698
.expectedError = "malformedRequest",
99+
.expectedErrorCode = ClioError::RpcMalformedRequest,
97100
.expectedErrorMessage = "Malformed request."
98101
},
99102
VaultInfoParamTestCaseBundle{
@@ -102,6 +105,7 @@ generateTestValuesForParametersTest()
102105
"owner": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"
103106
})JSON",
104107
.expectedError = "malformedRequest",
108+
.expectedErrorCode = ClioError::RpcMalformedRequest,
105109
.expectedErrorMessage = "Malformed request."
106110
},
107111
VaultInfoParamTestCaseBundle{
@@ -111,6 +115,7 @@ generateTestValuesForParametersTest()
111115
"seq": "asdf"
112116
})JSON",
113117
.expectedError = "malformedRequest",
118+
.expectedErrorCode = ClioError::RpcMalformedRequest,
114119
.expectedErrorMessage = "Malformed request."
115120
},
116121
VaultInfoParamTestCaseBundle{
@@ -120,6 +125,7 @@ generateTestValuesForParametersTest()
120125
"seq": 3
121126
})JSON",
122127
.expectedError = "malformedRequest",
128+
.expectedErrorCode = ClioError::RpcMalformedRequest,
123129
.expectedErrorMessage = "OwnerNotHexString"
124130
},
125131
VaultInfoParamTestCaseBundle{
@@ -129,6 +135,7 @@ generateTestValuesForParametersTest()
129135
"seq": 3
130136
})JSON",
131137
.expectedError = "malformedRequest",
138+
.expectedErrorCode = ClioError::RpcMalformedRequest,
132139
.expectedErrorMessage = "OwnerNotHexString"
133140
},
134141
VaultInfoParamTestCaseBundle{
@@ -137,6 +144,7 @@ generateTestValuesForParametersTest()
137144
"vault_id": 3
138145
})JSON",
139146
.expectedError = "malformedRequest",
147+
.expectedErrorCode = ClioError::RpcMalformedRequest,
140148
.expectedErrorMessage = "Malformed request."
141149
},
142150
VaultInfoParamTestCaseBundle{
@@ -145,6 +153,7 @@ generateTestValuesForParametersTest()
145153
"vault_id": "idk"
146154
})JSON",
147155
.expectedError = "malformedRequest",
156+
.expectedErrorCode = ClioError::RpcMalformedRequest,
148157
.expectedErrorMessage = "Malformed request."
149158
},
150159
VaultInfoParamTestCaseBundle{
@@ -158,6 +167,7 @@ generateTestValuesForParametersTest()
158167
kACCOUNT
159168
),
160169
.expectedError = "malformedRequest",
170+
.expectedErrorCode = ClioError::RpcMalformedRequest,
161171
.expectedErrorMessage = "Malformed request."
162172
}
163173
};
@@ -181,6 +191,10 @@ TEST_P(VaultInfoParameterTest, InvalidParams)
181191

182192
auto const err = rpc::makeError(output.result.error());
183193
EXPECT_EQ(err.at("error").as_string(), testBundle.expectedError);
194+
EXPECT_EQ(
195+
err.at("error_code").as_uint64(),
196+
std::visit([](auto code) { return static_cast<uint32_t>(code); }, testBundle.expectedErrorCode)
197+
);
184198
EXPECT_EQ(err.at("error_message").as_string(), testBundle.expectedErrorMessage);
185199
});
186200
}
@@ -208,6 +222,8 @@ TEST_F(RPCVaultInfoHandlerTest, InputHasOwnerButNotFoundResultsInError)
208222
ASSERT_FALSE(output);
209223
auto const err = rpc::makeError(output.result.error());
210224
EXPECT_EQ(err.at("error").as_string(), "entryNotFound");
225+
EXPECT_EQ(err.at("error_code").as_uint64(), rpc::RippledError::rpcENTRY_NOT_FOUND);
226+
EXPECT_EQ(err.at("error_message").as_string(), "Entry not found.");
211227
});
212228
}
213229

@@ -237,6 +253,8 @@ TEST_F(RPCVaultInfoHandlerTest, VaultIDFailsVaultDeserializationReturnsEntryNotF
237253
ASSERT_FALSE(output);
238254
auto const err = rpc::makeError(output.result.error());
239255
EXPECT_EQ(err.at("error").as_string(), "entryNotFound");
256+
EXPECT_EQ(err.at("error_code").as_uint64(), rpc::RippledError::rpcENTRY_NOT_FOUND);
257+
EXPECT_EQ(err.at("error_message").as_string(), "vault object not found.");
240258
});
241259
}
242260

@@ -277,6 +295,8 @@ TEST_F(RPCVaultInfoHandlerTest, MissingIssuanceObject)
277295
ASSERT_FALSE(output);
278296
auto const err = rpc::makeError(output.result.error());
279297
EXPECT_EQ(err.at("error").as_string(), "entryNotFound");
298+
EXPECT_EQ(err.at("error_code").as_uint64(), rpc::RippledError::rpcENTRY_NOT_FOUND);
299+
EXPECT_EQ(err.at("error_message").as_string(), "issuance object not found.");
280300
});
281301
}
282302

0 commit comments

Comments
 (0)