dynamoose / dynamoose/dynamoose
[BUG] "RangeError: Maximum call stack size exceeded" occurs when a schema includes type: Buffer
- Dominant language
- JavaScript
- Stars
- 2.2k
- Forks
- 362
- PR merge metrics
- No merged PRs in 30d
Description
### Summary:
When a schema includes type: Buffer and the byte length of the buffer is very long, the following error occurs when executing Model.get.
```
2023-06-02T02:33:35.358Z 36a19b32-d48b-4a57-a22d-9262ab32e0e5 ERROR RangeError: Maximum call stack size exceeded
at /var/task/index.js:8644:23
at Array.reduce ()
at Object.main2 [as entries] (/var/task/index.js:8639:37)
at Item.fromDynamo (/var/task/index.js:9443:32)
```
In my environment, an error occurs when the result of `Buffer.byteLength` is greater than 105730.
### Code sample:
```
export interface TestSchema extends Item, TestSchemaAttributes {}
export interface TestSchemaAttributes {
id: string;
sk: string;
content: Buffer;
}
export const TestSchemaDefinition: SchemaDefinition = {
uid: {
type: String,
required: true,
hashKey: true,
},
sk: {
type: String,
required: true,
rangeKey: true,
},
content: {
type: Buffer,
required: true,
},
};
const model = dynamoose.model(
"TestSchemaTable",
[new dynamoose.Schema(TestSchemaDefinition)],
{
create: false,
waitForActive: { enabled: false },
throughput: "ON_DEMAND",
}
);
await model.get({id: "id", sk: "sk}); // `RangeError: Maximum call stack size exceeded` occurs when "content" is very large.
```
### Current output and behavior (including stack trace):
`RangeError: Maximum call stack size exceeded` occurs.
```
2023-06-02T02:33:35.358Z 36a19b32-d48b-4a57-a22d-9262ab32e0e5 ERROR RangeError: Maximum call stack size exceeded
at /var/task/index.js:8644:23
at Array.reduce ()
at Object.main2 [as entries] (/var/task/index.js:8639:37)
at Item.fromDynamo (/var/task/index.js:9443:32)
at new Item (/var/task/index.js:9425:63)
at new TestSchema (/var/task/index.js:12852:13)
at itemify (/var/task/index.js:13359:35)
```
### Expected output and behavior:
No error occurs.
### Environment:
Operating System: Amazon Linux 2 (AWS Lambda)
Node.js version (`node -v`): 18x
Dynamoose version: 3.2.0
### Other information (if applicable):
### Other:
- [x] I have read through the Dynamoose documentation before posting this issue
- [x] I have searched through the GitHub issues (including closed issues) and pull requests to ensure this issue has not already been raised before
- [x] I have searched the internet and Stack Overflow to ensure this issue hasn't been raised or answered before
- [x] I have tested the code provided and am confident it doesn't work as intended
- [x] I have filled out all fields above
- [x] I am running the latest version of Dynamoose
Contributor guide
Assessment
This issue has not been assessed yet.