@appland/appmap 3.56.0 → 3.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
# [@appland/appmap-v3.57.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.56.0...@appland/appmap-v3.57.0) (2022-12-21)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* Don't let indexer crash on ELOOP error ([252eccc](https://github.com/getappmap/appmap-js/commit/252eccca2f53d6caf8b61fa18eeeb35ff744c19c))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Implement getToplevelSymbolicLink as an optimization ([3579d71](https://github.com/getappmap/appmap-js/commit/3579d71c153fe6b32a391c9984dadc757ef44278))
|
|
12
|
+
|
|
1
13
|
# [@appland/appmap-v3.56.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.55.1...@appland/appmap-v3.56.0) (2022-12-21)
|
|
2
14
|
|
|
3
15
|
|
|
@@ -19,6 +19,7 @@ class FingerprintWatchCommand {
|
|
|
19
19
|
this.directory = directory;
|
|
20
20
|
this._numProcessed = 0;
|
|
21
21
|
this.unreadableFiles = new Set();
|
|
22
|
+
this.symlinkLoopFiles = new Set();
|
|
22
23
|
this.pidfilePath = process.env.APPMAP_WRITE_PIDFILE && (0, path_1.join)(this.directory, 'index.pid');
|
|
23
24
|
this.fpQueue = new fingerprintQueue_1.default();
|
|
24
25
|
new eventAggregator_1.default((events) => {
|
|
@@ -61,6 +62,33 @@ class FingerprintWatchCommand {
|
|
|
61
62
|
const err = error;
|
|
62
63
|
return err.code === code;
|
|
63
64
|
}
|
|
65
|
+
dontProcessFileAgain(error, filename, telemetryName, files) {
|
|
66
|
+
console.warn(error.stack);
|
|
67
|
+
telemetry_1.default.sendEvent({
|
|
68
|
+
name: telemetryName,
|
|
69
|
+
properties: {
|
|
70
|
+
errorMessage: error.message,
|
|
71
|
+
errorStack: error.stack,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
files.add(filename);
|
|
75
|
+
console.warn('Will not read the file ' + filename + ' again.');
|
|
76
|
+
}
|
|
77
|
+
getToplevelSymbolicLink(filename) {
|
|
78
|
+
// given a filename like '/tmp/topdir/dir1/point_up/dir1/point_up/dir1/point_up'
|
|
79
|
+
// lastToken is set to 'point_up' (the actual symlink)
|
|
80
|
+
// directoryPostfix is set to '/dir1/point_up'
|
|
81
|
+
// topLevelSymbolicLink is set to '/tmp/topdir/dir1/point_up'
|
|
82
|
+
const splitTokens = filename.split(path_2.default.sep);
|
|
83
|
+
const lastToken = splitTokens[splitTokens.length - 1];
|
|
84
|
+
const lastIndex = filename.lastIndexOf(lastToken);
|
|
85
|
+
const secondToLastIndex = filename.lastIndexOf(lastToken, lastIndex - 1);
|
|
86
|
+
const directoryPostfixLength = lastIndex - secondToLastIndex;
|
|
87
|
+
const directoryPostfix = filename.substring(filename.length - directoryPostfixLength, filename.length);
|
|
88
|
+
const splitDirectoryPostfix = filename.split(directoryPostfix);
|
|
89
|
+
const toplevelSymbolicLink = splitDirectoryPostfix[0] + directoryPostfix;
|
|
90
|
+
return toplevelSymbolicLink;
|
|
91
|
+
}
|
|
64
92
|
async watcherErrorFunction(error) {
|
|
65
93
|
if (this.isError(error, 'ENOSPC')) {
|
|
66
94
|
console.warn(error.stack);
|
|
@@ -87,17 +115,13 @@ class FingerprintWatchCommand {
|
|
|
87
115
|
});
|
|
88
116
|
}
|
|
89
117
|
else if (this.isError(error, 'UNKNOWN') && error.message.includes('lstat')) {
|
|
90
|
-
console.warn(error.stack);
|
|
91
|
-
telemetry_1.default.sendEvent({
|
|
92
|
-
name: `index:watcher_error:unknown`,
|
|
93
|
-
properties: {
|
|
94
|
-
errorMessage: error.message,
|
|
95
|
-
errorStack: error.stack,
|
|
96
|
-
},
|
|
97
|
-
});
|
|
98
118
|
const filename = this.getFilenameFromErrorMessage(error.message);
|
|
99
|
-
this.
|
|
100
|
-
|
|
119
|
+
this.dontProcessFileAgain(error, filename, `index:watcher_error:unknown`, this.unreadableFiles);
|
|
120
|
+
}
|
|
121
|
+
else if (this.isError(error, 'ELOOP')) {
|
|
122
|
+
const filename = this.getFilenameFromErrorMessage(error.message);
|
|
123
|
+
const filenameTopLevelSymbolicLink = this.getToplevelSymbolicLink(filename);
|
|
124
|
+
this.dontProcessFileAgain(error, filenameTopLevelSymbolicLink, `index:watcher_error:eloop`, this.symlinkLoopFiles);
|
|
101
125
|
}
|
|
102
126
|
else {
|
|
103
127
|
// let it crash if it's some other error, to learn what the error is
|
|
@@ -113,7 +137,7 @@ class FingerprintWatchCommand {
|
|
|
113
137
|
return true;
|
|
114
138
|
}
|
|
115
139
|
});
|
|
116
|
-
if (this.unreadableFiles.has(targetPath)) {
|
|
140
|
+
if (this.unreadableFiles.has(targetPath) || this.symlinkLoopFiles.has(targetPath)) {
|
|
117
141
|
return true;
|
|
118
142
|
}
|
|
119
143
|
// Also make sure to not try to recurse down node_modules or .git
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprintWatchCommand.js","sourceRoot":"","sources":["../../src/fingerprint/fingerprintWatchCommand.ts"],"names":[],"mappings":";;;;;AACA,uCAA4C;AAC5C,uCAAsD;AACtD,+BAAqC;AACrC,6EAAqD;AACrD,6EAAqD;AACrD,wDAAqD;AACrD,6DAAqC;AACrC,oCAAmC;AAEnC,0EAAkD;AAClD,wDAAgC;AAChC,gDAAwB;AAExB,MAAqB,uBAAuB;
|
|
1
|
+
{"version":3,"file":"fingerprintWatchCommand.js","sourceRoot":"","sources":["../../src/fingerprint/fingerprintWatchCommand.ts"],"names":[],"mappings":"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"}
|