Skip to content

Commit 0dd8962

Browse files
authored
Fix reading source file multiple times (getsentry#2569)
* Deduplicate filenames passed to addPrePostContext. * Fix build.
1 parent 4bc58c1 commit 0dd8962

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

packages/node/src/parsers.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export function parseStack(stack: stacktrace.StackFrame[], options?: NodeOptions
163163
if (parsedFrame.filename) {
164164
parsedFrame.module = getModule(parsedFrame.filename);
165165

166-
if (!isInternal && linesOfContext > 0) {
166+
if (!isInternal && linesOfContext > 0 && filesToRead.indexOf(parsedFrame.filename) === -1) {
167167
filesToRead.push(parsedFrame.filename);
168168
}
169169
}

packages/node/test/parsers.test.ts

+36
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,42 @@ describe('parsers.ts', () => {
7171
});
7272
});
7373

74+
test('parseStack with duplicate files', async () => {
75+
expect.assertions(1);
76+
const framesWithDuplicateFiles: stacktrace.StackFrame[] = [
77+
{
78+
columnNumber: 1,
79+
fileName: '/var/task/index.js',
80+
functionName: 'module.exports../src/index.ts.fxn1',
81+
lineNumber: 1,
82+
methodName: 'fxn1',
83+
native: false,
84+
typeName: 'module.exports../src/index.ts',
85+
},
86+
{
87+
columnNumber: 2,
88+
fileName: '/var/task/index.js',
89+
functionName: 'module.exports../src/index.ts.fxn2',
90+
lineNumber: 2,
91+
methodName: 'fxn2',
92+
native: false,
93+
typeName: 'module.exports../src/index.ts',
94+
},
95+
{
96+
columnNumber: 3,
97+
fileName: '/var/task/index.js',
98+
functionName: 'module.exports../src/index.ts.fxn3',
99+
lineNumber: 3,
100+
methodName: 'fxn3',
101+
native: false,
102+
typeName: 'module.exports../src/index.ts',
103+
},
104+
];
105+
return Parsers.parseStack(framesWithDuplicateFiles).then(_ => {
106+
expect(spy).toHaveBeenCalledTimes(1);
107+
});
108+
});
109+
74110
test('parseStack with no context', async () => {
75111
expect.assertions(1);
76112
return Parsers.parseStack(frames, { frameContextLines: 0 }).then(_ => {

0 commit comments

Comments
 (0)