antlafarge opened a new pull request, #3372:
URL: https://github.com/apache/thrift/pull/3372
<!-- Explain the changes in the pull request below: -->
There is a bug in the JavaScript custom exception constructor
implementation.
This thrift custom exception :
```
exception CustomError {
1: required ErrorCode code;
}
```
results to a constructor which takes a single JS Object with custom
properties :
```
const CustomError = module.exports.CustomError = class extends
Thrift.TException {
constructor(args) {
super(args);
this.name = "CustomError";
this.code = null;
// ...
```
We can check it in the associated TypeScript typings :
```
declare class ZaapError extends Thrift.TException {
public code: ErrorCode;
constructor(args?: { code: ErrorCode; });
}
```
The generated code gives the JS object to the constructor of
Thrift.TException.
But the Thrift.TException construction takes a single string argument :
```
exports.TException = TException;
function TException(message) {
Error.call(this);
Error.captureStackTrace(this, this.constructor);
this.name = this.constructor.name;
this.message = message;
};
util.inherits(TException, Error);
```
Giving this custom object to the TException (instead of a string) throws
unwanted Thrift exceptions in `TBinaryProtocol.prototype.writeStringOrBinary` :
```
Exception has occurred: Error: writeString called without a string/Buffer
argument: [object Object]
```
<img width="1173" height="532" alt="Thrift-bug"
src="https://github.com/user-attachments/assets/fe37051f-8947-4a95-969b-d88c40e36f4d"
/>
The fix is to give the name of the custom exception to the constructor of
the inherited Thrift exception class (TException).
<!-- We recommend you review the checklist/tips before submitting a pull
request. -->
- [ ] Did you create an [Apache
Jira](https://issues.apache.org/jira/projects/THRIFT/issues/) ticket?
([Request account here](https://selfserve.apache.org/jira-account.html), not
required for trivial changes)
- [ ] If a ticket exists: Does your pull request title follow the pattern
"THRIFT-NNNN: describe my issue"?
- [ ] Did you squash your changes to a single commit? (not required, but
preferred)
- [ ] Did you do your best to avoid breaking changes? If one was needed,
did you label the Jira ticket with "Breaking-Change"?
- [ ] If your change does not involve any code, include `[skip ci]` anywhere
in the commit message to free up build resources.
<!--
The Contributing Guide at:
https://github.com/apache/thrift/blob/master/CONTRIBUTING.md
has more details and tips for committing properly.
-->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]