@atlaspack/core 2.15.1 → 2.16.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 +19 -0
- package/lib/RequestTracker.js +23 -9
- package/package.json +10 -10
- package/src/RequestTracker.js +38 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @atlaspack/core
|
|
2
2
|
|
|
3
|
+
## 2.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#520](https://github.com/atlassian-labs/atlaspack/pull/520) [`90150df`](https://github.com/atlassian-labs/atlaspack/commit/90150dfb68236e1d1c11813108ecabd92cff9366) Thanks [@pancaspe87](https://github.com/pancaspe87)! - Modify "large blobs" to be written to the LMDB cache
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`f27d39e`](https://github.com/atlassian-labs/atlaspack/commit/f27d39e767b06def059944b3bc5fd50797eaea96)]:
|
|
12
|
+
- @atlaspack/rust@3.1.1
|
|
13
|
+
- @atlaspack/cache@3.0.1
|
|
14
|
+
- @atlaspack/fs@2.14.3
|
|
15
|
+
- @atlaspack/logger@2.14.3
|
|
16
|
+
- @atlaspack/utils@2.14.3
|
|
17
|
+
- @atlaspack/package-manager@2.14.3
|
|
18
|
+
- @atlaspack/workers@2.14.3
|
|
19
|
+
- @atlaspack/types@2.14.3
|
|
20
|
+
- @atlaspack/plugin@2.14.3
|
|
21
|
+
|
|
3
22
|
## 2.15.1
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/lib/RequestTracker.js
CHANGED
|
@@ -759,8 +759,10 @@ class RequestTracker {
|
|
|
759
759
|
return result;
|
|
760
760
|
} else if (node.resultCacheKey != null && ifMatch == null) {
|
|
761
761
|
let key = node.resultCacheKey;
|
|
762
|
-
(0,
|
|
763
|
-
|
|
762
|
+
if (!(0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
763
|
+
(0, _assert().default)(this.options.cache.hasLargeBlob(key));
|
|
764
|
+
}
|
|
765
|
+
let cachedResult = (0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements') ? (0, _nullthrows().default)(await this.options.cache.get(key)) : (0, _buildCache().deserialize)(await this.options.cache.getLargeBlob(key));
|
|
764
766
|
node.result = cachedResult;
|
|
765
767
|
return cachedResult;
|
|
766
768
|
}
|
|
@@ -937,16 +939,21 @@ class RequestTracker {
|
|
|
937
939
|
size: this.graph.nodes.length
|
|
938
940
|
});
|
|
939
941
|
let serialisedGraph = this.graph.serialize();
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
942
|
+
if (!(0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
943
|
+
// Delete an existing request graph cache, to prevent invalid states
|
|
944
|
+
await this.options.cache.deleteLargeBlob(requestGraphKey);
|
|
945
|
+
}
|
|
943
946
|
const serialiseAndSet = async (key, contents) => {
|
|
944
947
|
if (signal !== null && signal !== void 0 && signal.aborted) {
|
|
945
948
|
throw new Error('Serialization was aborted');
|
|
946
949
|
}
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
}
|
|
950
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
951
|
+
await this.options.cache.set(key, (0, _buildCache().serialize)(contents));
|
|
952
|
+
} else {
|
|
953
|
+
await this.options.cache.setLargeBlob(key, (0, _buildCache().serialize)(contents), signal ? {
|
|
954
|
+
signal: signal
|
|
955
|
+
} : undefined);
|
|
956
|
+
}
|
|
950
957
|
total += 1;
|
|
951
958
|
(0, _ReporterRunner.report)({
|
|
952
959
|
type: 'cache',
|
|
@@ -1050,6 +1057,13 @@ function getRequestGraphNodeKey(index, cacheKey) {
|
|
|
1050
1057
|
}
|
|
1051
1058
|
async function readAndDeserializeRequestGraph(cache, requestGraphKey, cacheKey) {
|
|
1052
1059
|
let bufferLength = 0;
|
|
1060
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
1061
|
+
let data = (0, _nullthrows().default)(await cache.get(requestGraphKey));
|
|
1062
|
+
return {
|
|
1063
|
+
requestGraph: RequestGraph.deserialize(data),
|
|
1064
|
+
bufferLength
|
|
1065
|
+
};
|
|
1066
|
+
}
|
|
1053
1067
|
const getAndDeserialize = async key => {
|
|
1054
1068
|
let buffer = await cache.getLargeBlob(key);
|
|
1055
1069
|
bufferLength += Buffer.byteLength(buffer);
|
|
@@ -1087,7 +1101,7 @@ async function loadRequestGraph(options) {
|
|
|
1087
1101
|
snapshotKey
|
|
1088
1102
|
}
|
|
1089
1103
|
});
|
|
1090
|
-
if (await options.cache.hasLargeBlob(requestGraphKey)) {
|
|
1104
|
+
if (!(0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements') && (await options.cache.hasLargeBlob(requestGraphKey))) {
|
|
1091
1105
|
try {
|
|
1092
1106
|
let {
|
|
1093
1107
|
requestGraph
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaspack/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.16.0",
|
|
4
4
|
"license": "(MIT OR Apache-2.0)",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -22,20 +22,20 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@mischnic/json-sourcemap": "^0.1.0",
|
|
24
24
|
"@atlaspack/build-cache": "2.13.3",
|
|
25
|
-
"@atlaspack/cache": "3.0.
|
|
25
|
+
"@atlaspack/cache": "3.0.1",
|
|
26
26
|
"@atlaspack/diagnostic": "2.14.1",
|
|
27
27
|
"@atlaspack/events": "2.14.1",
|
|
28
28
|
"@atlaspack/feature-flags": "2.14.2",
|
|
29
|
-
"@atlaspack/fs": "2.14.
|
|
29
|
+
"@atlaspack/fs": "2.14.3",
|
|
30
30
|
"@atlaspack/graph": "3.4.2",
|
|
31
|
-
"@atlaspack/logger": "2.14.
|
|
32
|
-
"@atlaspack/package-manager": "2.14.
|
|
33
|
-
"@atlaspack/plugin": "2.14.
|
|
31
|
+
"@atlaspack/logger": "2.14.3",
|
|
32
|
+
"@atlaspack/package-manager": "2.14.3",
|
|
33
|
+
"@atlaspack/plugin": "2.14.3",
|
|
34
34
|
"@atlaspack/profiler": "2.14.2",
|
|
35
|
-
"@atlaspack/rust": "3.1.
|
|
36
|
-
"@atlaspack/types": "2.14.
|
|
37
|
-
"@atlaspack/utils": "2.14.
|
|
38
|
-
"@atlaspack/workers": "2.14.
|
|
35
|
+
"@atlaspack/rust": "3.1.1",
|
|
36
|
+
"@atlaspack/types": "2.14.3",
|
|
37
|
+
"@atlaspack/utils": "2.14.3",
|
|
38
|
+
"@atlaspack/workers": "2.14.3",
|
|
39
39
|
"@parcel/source-map": "^2.1.1",
|
|
40
40
|
"base-x": "^3.0.8",
|
|
41
41
|
"browserslist": "^4.6.6",
|
package/src/RequestTracker.js
CHANGED
|
@@ -1228,10 +1228,13 @@ export default class RequestTracker {
|
|
|
1228
1228
|
return result;
|
|
1229
1229
|
} else if (node.resultCacheKey != null && ifMatch == null) {
|
|
1230
1230
|
let key = node.resultCacheKey;
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1231
|
+
if (!getFeatureFlag('cachePerformanceImprovements')) {
|
|
1232
|
+
invariant(this.options.cache.hasLargeBlob(key));
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
let cachedResult: T = getFeatureFlag('cachePerformanceImprovements')
|
|
1236
|
+
? nullthrows(await this.options.cache.get<T>(key))
|
|
1237
|
+
: deserialize(await this.options.cache.getLargeBlob(key));
|
|
1235
1238
|
node.result = cachedResult;
|
|
1236
1239
|
return cachedResult;
|
|
1237
1240
|
}
|
|
@@ -1472,8 +1475,10 @@ export default class RequestTracker {
|
|
|
1472
1475
|
|
|
1473
1476
|
let serialisedGraph = this.graph.serialize();
|
|
1474
1477
|
|
|
1475
|
-
|
|
1476
|
-
|
|
1478
|
+
if (!getFeatureFlag('cachePerformanceImprovements')) {
|
|
1479
|
+
// Delete an existing request graph cache, to prevent invalid states
|
|
1480
|
+
await this.options.cache.deleteLargeBlob(requestGraphKey);
|
|
1481
|
+
}
|
|
1477
1482
|
|
|
1478
1483
|
const serialiseAndSet = async (
|
|
1479
1484
|
key: string,
|
|
@@ -1484,15 +1489,19 @@ export default class RequestTracker {
|
|
|
1484
1489
|
throw new Error('Serialization was aborted');
|
|
1485
1490
|
}
|
|
1486
1491
|
|
|
1487
|
-
|
|
1488
|
-
key,
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1492
|
+
if (getFeatureFlag('cachePerformanceImprovements')) {
|
|
1493
|
+
await this.options.cache.set(key, serialize(contents));
|
|
1494
|
+
} else {
|
|
1495
|
+
await this.options.cache.setLargeBlob(
|
|
1496
|
+
key,
|
|
1497
|
+
serialize(contents),
|
|
1498
|
+
signal
|
|
1499
|
+
? {
|
|
1500
|
+
signal: signal,
|
|
1501
|
+
}
|
|
1502
|
+
: undefined,
|
|
1503
|
+
);
|
|
1504
|
+
}
|
|
1496
1505
|
|
|
1497
1506
|
total += 1;
|
|
1498
1507
|
|
|
@@ -1631,6 +1640,15 @@ export async function readAndDeserializeRequestGraph(
|
|
|
1631
1640
|
cacheKey: string,
|
|
1632
1641
|
): Async<{|requestGraph: RequestGraph, bufferLength: number|}> {
|
|
1633
1642
|
let bufferLength = 0;
|
|
1643
|
+
|
|
1644
|
+
if (getFeatureFlag('cachePerformanceImprovements')) {
|
|
1645
|
+
let data = nullthrows(await cache.get(requestGraphKey));
|
|
1646
|
+
return {
|
|
1647
|
+
requestGraph: RequestGraph.deserialize(data),
|
|
1648
|
+
bufferLength,
|
|
1649
|
+
};
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1634
1652
|
const getAndDeserialize = async (key: string) => {
|
|
1635
1653
|
let buffer = await cache.getLargeBlob(key);
|
|
1636
1654
|
bufferLength += Buffer.byteLength(buffer);
|
|
@@ -1680,7 +1698,11 @@ async function loadRequestGraph(options): Async<RequestGraph> {
|
|
|
1680
1698
|
snapshotKey,
|
|
1681
1699
|
},
|
|
1682
1700
|
});
|
|
1683
|
-
|
|
1701
|
+
|
|
1702
|
+
if (
|
|
1703
|
+
!getFeatureFlag('cachePerformanceImprovements') &&
|
|
1704
|
+
(await options.cache.hasLargeBlob(requestGraphKey))
|
|
1705
|
+
) {
|
|
1684
1706
|
try {
|
|
1685
1707
|
let {requestGraph} = await readAndDeserializeRequestGraph(
|
|
1686
1708
|
options.cache,
|