@fluidframework/odsp-driver 2.0.0-dev-rc.1.0.0.228517 → 2.0.0-dev-rc.1.0.0.232845
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/api-report/odsp-driver.api.md +5 -5
- package/dist/compactSnapshotParser.d.ts +2 -2
- package/dist/compactSnapshotParser.d.ts.map +1 -1
- package/dist/compactSnapshotParser.js +8 -7
- package/dist/compactSnapshotParser.js.map +1 -1
- package/dist/compactSnapshotWriter.d.ts +2 -2
- package/dist/compactSnapshotWriter.d.ts.map +1 -1
- package/dist/compactSnapshotWriter.js +1 -1
- package/dist/compactSnapshotWriter.js.map +1 -1
- package/dist/contracts.d.ts +14 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +5 -1
- package/dist/contracts.js.map +1 -1
- package/dist/createFile.d.ts +1 -1
- package/dist/createFile.d.ts.map +1 -1
- package/dist/createFile.js +9 -28
- package/dist/createFile.js.map +1 -1
- package/dist/createNewContainerOnExistingFile.d.ts.map +1 -1
- package/dist/createNewContainerOnExistingFile.js.map +1 -1
- package/dist/createNewUtils.d.ts +2 -2
- package/dist/createNewUtils.d.ts.map +1 -1
- package/dist/createNewUtils.js +4 -3
- package/dist/createNewUtils.js.map +1 -1
- package/dist/createOdspCreateContainerRequest.d.ts +2 -2
- package/dist/createOdspCreateContainerRequest.d.ts.map +1 -1
- package/dist/createOdspCreateContainerRequest.js.map +1 -1
- package/dist/epochTracker.d.ts.map +1 -1
- package/dist/epochTracker.js +3 -4
- package/dist/epochTracker.js.map +1 -1
- package/dist/fetchSnapshot.d.ts +4 -4
- package/dist/fetchSnapshot.d.ts.map +1 -1
- package/dist/fetchSnapshot.js +12 -13
- package/dist/fetchSnapshot.js.map +1 -1
- package/dist/getFileLink.d.ts.map +1 -1
- package/dist/getFileLink.js +3 -3
- package/dist/getFileLink.js.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentService.d.ts +3 -2
- package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentService.js +3 -1
- package/dist/localOdspDriver/localOdspDocumentService.js.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts +2 -1
- package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
- package/dist/localOdspDriver/localOdspDocumentStorageManager.js +3 -0
- package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -1
- package/dist/odsp-driver-alpha.d.ts +4 -3
- package/dist/odsp-driver-beta.d.ts +3 -3
- package/dist/odsp-driver-public.d.ts +3 -3
- package/dist/odsp-driver-untrimmed.d.ts +5 -4
- package/dist/odspCache.d.ts +2 -2
- package/dist/odspCache.d.ts.map +1 -1
- package/dist/odspCache.js.map +1 -1
- package/dist/odspDelayLoadedDeltaStream.d.ts +5 -1
- package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
- package/dist/odspDelayLoadedDeltaStream.js +56 -5
- package/dist/odspDelayLoadedDeltaStream.js.map +1 -1
- package/dist/odspDocumentService.d.ts +3 -2
- package/dist/odspDocumentService.d.ts.map +1 -1
- package/dist/odspDocumentService.js +6 -3
- package/dist/odspDocumentService.js.map +1 -1
- package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
- package/dist/odspDocumentServiceFactoryCore.js +1 -8
- package/dist/odspDocumentServiceFactoryCore.js.map +1 -1
- package/dist/odspDocumentStorageManager.d.ts +2 -1
- package/dist/odspDocumentStorageManager.d.ts.map +1 -1
- package/dist/odspDocumentStorageManager.js +30 -11
- package/dist/odspDocumentStorageManager.js.map +1 -1
- package/dist/odspDocumentStorageServiceBase.d.ts +3 -3
- package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
- package/dist/odspDocumentStorageServiceBase.js +3 -3
- package/dist/odspDocumentStorageServiceBase.js.map +1 -1
- package/dist/odspDriverUrlResolver.d.ts.map +1 -1
- package/dist/odspDriverUrlResolver.js +2 -11
- package/dist/odspDriverUrlResolver.js.map +1 -1
- package/dist/odspError.d.ts.map +1 -1
- package/dist/odspError.js +2 -2
- package/dist/odspError.js.map +1 -1
- package/dist/odspPublicUtils.d.ts +1 -0
- package/dist/odspPublicUtils.d.ts.map +1 -1
- package/dist/odspPublicUtils.js.map +1 -1
- package/dist/odspSnapshotParser.d.ts +2 -2
- package/dist/odspSnapshotParser.d.ts.map +1 -1
- package/dist/odspSnapshotParser.js +2 -1
- package/dist/odspSnapshotParser.js.map +1 -1
- package/dist/odspUtils.d.ts +11 -7
- package/dist/odspUtils.d.ts.map +1 -1
- package/dist/odspUtils.js +20 -16
- package/dist/odspUtils.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/retryErrorsStorageAdapter.d.ts +2 -1
- package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
- package/dist/retryErrorsStorageAdapter.js +8 -0
- package/dist/retryErrorsStorageAdapter.js.map +1 -1
- package/dist/retryUtils.js +1 -1
- package/dist/retryUtils.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/zipItDataRepresentationUtils.js +2 -2
- package/dist/zipItDataRepresentationUtils.js.map +1 -1
- package/lib/compactSnapshotParser.d.mts +2 -2
- package/lib/compactSnapshotParser.d.mts.map +1 -1
- package/lib/compactSnapshotParser.mjs +8 -7
- package/lib/compactSnapshotParser.mjs.map +1 -1
- package/lib/compactSnapshotWriter.d.mts +2 -2
- package/lib/compactSnapshotWriter.d.mts.map +1 -1
- package/lib/compactSnapshotWriter.mjs +1 -1
- package/lib/compactSnapshotWriter.mjs.map +1 -1
- package/lib/contracts.d.mts +14 -0
- package/lib/contracts.d.mts.map +1 -1
- package/lib/contracts.mjs +4 -0
- package/lib/contracts.mjs.map +1 -1
- package/lib/createFile.d.mts +1 -1
- package/lib/createFile.d.mts.map +1 -1
- package/lib/createFile.mjs +10 -29
- package/lib/createFile.mjs.map +1 -1
- package/lib/createNewContainerOnExistingFile.d.mts.map +1 -1
- package/lib/createNewContainerOnExistingFile.mjs.map +1 -1
- package/lib/createNewUtils.d.mts +2 -2
- package/lib/createNewUtils.d.mts.map +1 -1
- package/lib/createNewUtils.mjs +4 -3
- package/lib/createNewUtils.mjs.map +1 -1
- package/lib/createOdspCreateContainerRequest.d.mts +2 -2
- package/lib/createOdspCreateContainerRequest.d.mts.map +1 -1
- package/lib/createOdspCreateContainerRequest.mjs.map +1 -1
- package/lib/epochTracker.d.mts.map +1 -1
- package/lib/epochTracker.mjs +4 -5
- package/lib/epochTracker.mjs.map +1 -1
- package/lib/fetchSnapshot.d.mts +4 -4
- package/lib/fetchSnapshot.d.mts.map +1 -1
- package/lib/fetchSnapshot.mjs +13 -14
- package/lib/fetchSnapshot.mjs.map +1 -1
- package/lib/getFileLink.d.mts.map +1 -1
- package/lib/getFileLink.mjs +3 -3
- package/lib/getFileLink.mjs.map +1 -1
- package/lib/localOdspDriver/localOdspDocumentService.d.mts +3 -2
- package/lib/localOdspDriver/localOdspDocumentService.d.mts.map +1 -1
- package/lib/localOdspDriver/localOdspDocumentService.mjs +3 -1
- package/lib/localOdspDriver/localOdspDocumentService.mjs.map +1 -1
- package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts +2 -1
- package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts.map +1 -1
- package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs +3 -0
- package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs.map +1 -1
- package/lib/odsp-driver-alpha.d.mts +4 -3
- package/lib/odsp-driver-beta.d.mts +3 -3
- package/lib/odsp-driver-public.d.mts +3 -3
- package/lib/odsp-driver-untrimmed.d.mts +5 -4
- package/lib/odspCache.d.mts +2 -2
- package/lib/odspCache.d.mts.map +1 -1
- package/lib/odspCache.mjs.map +1 -1
- package/lib/odspDelayLoadedDeltaStream.d.mts +5 -1
- package/lib/odspDelayLoadedDeltaStream.d.mts.map +1 -1
- package/lib/odspDelayLoadedDeltaStream.mjs +57 -6
- package/lib/odspDelayLoadedDeltaStream.mjs.map +1 -1
- package/lib/odspDocumentService.d.mts +3 -2
- package/lib/odspDocumentService.d.mts.map +1 -1
- package/lib/odspDocumentService.mjs +6 -3
- package/lib/odspDocumentService.mjs.map +1 -1
- package/lib/odspDocumentServiceFactoryCore.d.mts.map +1 -1
- package/lib/odspDocumentServiceFactoryCore.mjs +2 -9
- package/lib/odspDocumentServiceFactoryCore.mjs.map +1 -1
- package/lib/odspDocumentStorageManager.d.mts +2 -1
- package/lib/odspDocumentStorageManager.d.mts.map +1 -1
- package/lib/odspDocumentStorageManager.mjs +33 -14
- package/lib/odspDocumentStorageManager.mjs.map +1 -1
- package/lib/odspDocumentStorageServiceBase.d.mts +3 -3
- package/lib/odspDocumentStorageServiceBase.d.mts.map +1 -1
- package/lib/odspDocumentStorageServiceBase.mjs +3 -3
- package/lib/odspDocumentStorageServiceBase.mjs.map +1 -1
- package/lib/odspDriverUrlResolver.d.mts.map +1 -1
- package/lib/odspDriverUrlResolver.mjs +4 -13
- package/lib/odspDriverUrlResolver.mjs.map +1 -1
- package/lib/odspError.d.mts.map +1 -1
- package/lib/odspError.mjs +2 -2
- package/lib/odspError.mjs.map +1 -1
- package/lib/odspPublicUtils.d.mts +1 -0
- package/lib/odspPublicUtils.d.mts.map +1 -1
- package/lib/odspPublicUtils.mjs.map +1 -1
- package/lib/odspSnapshotParser.d.mts +2 -2
- package/lib/odspSnapshotParser.d.mts.map +1 -1
- package/lib/odspSnapshotParser.mjs +2 -1
- package/lib/odspSnapshotParser.mjs.map +1 -1
- package/lib/odspUtils.d.mts +11 -7
- package/lib/odspUtils.d.mts.map +1 -1
- package/lib/odspUtils.mjs +19 -16
- package/lib/odspUtils.mjs.map +1 -1
- package/lib/packageVersion.d.mts +1 -1
- package/lib/packageVersion.mjs +1 -1
- package/lib/packageVersion.mjs.map +1 -1
- package/lib/retryErrorsStorageAdapter.d.mts +2 -1
- package/lib/retryErrorsStorageAdapter.d.mts.map +1 -1
- package/lib/retryErrorsStorageAdapter.mjs +9 -1
- package/lib/retryErrorsStorageAdapter.mjs.map +1 -1
- package/lib/retryUtils.mjs +2 -2
- package/lib/retryUtils.mjs.map +1 -1
- package/lib/zipItDataRepresentationUtils.mjs +2 -2
- package/lib/zipItDataRepresentationUtils.mjs.map +1 -1
- package/package.json +25 -16
- package/src/compactSnapshotParser.ts +10 -9
- package/src/compactSnapshotWriter.ts +3 -3
- package/src/contracts.ts +17 -0
- package/src/createFile.ts +10 -38
- package/src/createNewContainerOnExistingFile.ts +2 -2
- package/src/createNewUtils.ts +7 -6
- package/src/createOdspCreateContainerRequest.ts +2 -2
- package/src/epochTracker.ts +4 -4
- package/src/fetchSnapshot.ts +21 -22
- package/src/getFileLink.ts +3 -3
- package/src/localOdspDriver/localOdspDocumentService.ts +9 -2
- package/src/localOdspDriver/localOdspDocumentStorageManager.ts +10 -3
- package/src/odspCache.ts +2 -2
- package/src/odspDelayLoadedDeltaStream.ts +67 -6
- package/src/odspDocumentService.ts +10 -2
- package/src/odspDocumentServiceFactoryCore.ts +3 -11
- package/src/odspDocumentStorageManager.ts +60 -27
- package/src/odspDocumentStorageServiceBase.ts +8 -5
- package/src/odspDriverUrlResolver.ts +3 -17
- package/src/odspError.ts +2 -3
- package/src/odspPublicUtils.ts +1 -0
- package/src/odspSnapshotParser.ts +5 -6
- package/src/odspUtils.ts +34 -28
- package/src/packageVersion.ts +1 -1
- package/src/retryErrorsStorageAdapter.ts +12 -1
- package/src/retryUtils.ts +2 -2
- package/src/zipItDataRepresentationUtils.ts +2 -2
- /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
package/src/odspUtils.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { ITelemetryProperties, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
7
|
-
import { IResolvedUrl,
|
|
7
|
+
import { IResolvedUrl, ISnapshot } from "@fluidframework/driver-definitions";
|
|
8
8
|
import {
|
|
9
9
|
isOnline,
|
|
10
10
|
OnlineStatus,
|
|
@@ -29,11 +29,10 @@ import {
|
|
|
29
29
|
import {
|
|
30
30
|
IOdspResolvedUrl,
|
|
31
31
|
TokenFetchOptions,
|
|
32
|
-
|
|
32
|
+
OdspErrorTypes,
|
|
33
33
|
tokenFromResponse,
|
|
34
34
|
isTokenFromCache,
|
|
35
35
|
OdspResourceTokenFetchOptions,
|
|
36
|
-
ShareLinkTypes,
|
|
37
36
|
ISharingLinkKind,
|
|
38
37
|
TokenFetcher,
|
|
39
38
|
ICacheEntry,
|
|
@@ -44,6 +43,7 @@ import {
|
|
|
44
43
|
import { fetch } from "./fetch";
|
|
45
44
|
import { pkgVersion as driverVersion } from "./packageVersion";
|
|
46
45
|
import { IOdspSnapshot } from "./contracts";
|
|
46
|
+
import { ISnapshotContents } from "./odspPublicUtils";
|
|
47
47
|
|
|
48
48
|
export const getWithRetryForTokenRefreshRepeat = "getWithRetryForTokenRefreshRepeat";
|
|
49
49
|
|
|
@@ -86,11 +86,11 @@ export async function getWithRetryForTokenRefresh<T>(
|
|
|
86
86
|
const options: TokenFetchOptionsEx = { refresh: true, previousError: e };
|
|
87
87
|
switch (e.errorType) {
|
|
88
88
|
// If the error is 401 or 403 refresh the token and try once more.
|
|
89
|
-
case
|
|
89
|
+
case OdspErrorTypes.authorizationError:
|
|
90
90
|
return get({ ...options, claims: e.claims, tenantId: e.tenantId });
|
|
91
91
|
|
|
92
|
-
case
|
|
93
|
-
case
|
|
92
|
+
case OdspErrorTypes.incorrectServerResponse: // some error on the wire, retry once
|
|
93
|
+
case OdspErrorTypes.fetchTokenError: // If the token was null, then retry once.
|
|
94
94
|
return get(options);
|
|
95
95
|
|
|
96
96
|
default:
|
|
@@ -118,7 +118,7 @@ export async function fetchHelper(
|
|
|
118
118
|
throw new NonRetryableError(
|
|
119
119
|
// pre-0.58 error message: No response from fetch call
|
|
120
120
|
"No response from ODSP fetch call",
|
|
121
|
-
|
|
121
|
+
OdspErrorTypes.incorrectServerResponse,
|
|
122
122
|
{ driverVersion },
|
|
123
123
|
);
|
|
124
124
|
}
|
|
@@ -154,13 +154,17 @@ export async function fetchHelper(
|
|
|
154
154
|
|
|
155
155
|
// This error is thrown by fetch() when AbortSignal is provided and it gets cancelled
|
|
156
156
|
if (error.name === "AbortError") {
|
|
157
|
-
throw new RetryableError(
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
throw new RetryableError(
|
|
158
|
+
"Fetch Timeout (AbortError)",
|
|
159
|
+
OdspErrorTypes.fetchTimeout,
|
|
160
|
+
{
|
|
161
|
+
driverVersion,
|
|
162
|
+
},
|
|
163
|
+
);
|
|
160
164
|
}
|
|
161
165
|
// TCP/IP timeout
|
|
162
166
|
if (redactedErrorText.includes("ETIMEDOUT")) {
|
|
163
|
-
throw new RetryableError("Fetch Timeout (ETIMEDOUT)",
|
|
167
|
+
throw new RetryableError("Fetch Timeout (ETIMEDOUT)", OdspErrorTypes.fetchTimeout, {
|
|
164
168
|
driverVersion,
|
|
165
169
|
});
|
|
166
170
|
}
|
|
@@ -170,7 +174,7 @@ export async function fetchHelper(
|
|
|
170
174
|
throw new RetryableError(
|
|
171
175
|
// pre-0.58 error message prefix: Offline
|
|
172
176
|
`ODSP fetch failure (Offline): ${redactedErrorText}`,
|
|
173
|
-
|
|
177
|
+
OdspErrorTypes.offlineError,
|
|
174
178
|
{
|
|
175
179
|
driverVersion,
|
|
176
180
|
rawErrorMessage: taggedErrorMessage,
|
|
@@ -182,7 +186,7 @@ export async function fetchHelper(
|
|
|
182
186
|
throw new RetryableError(
|
|
183
187
|
// pre-0.58 error message prefix: Fetch error
|
|
184
188
|
`ODSP fetch failure: ${redactedErrorText}`,
|
|
185
|
-
|
|
189
|
+
OdspErrorTypes.fetchFailure,
|
|
186
190
|
{
|
|
187
191
|
driverVersion,
|
|
188
192
|
rawErrorMessage: taggedErrorMessage,
|
|
@@ -279,11 +283,8 @@ export interface INewFileInfo extends IFileInfoBase {
|
|
|
279
283
|
/**
|
|
280
284
|
* application can request creation of a share link along with the creation of a new file
|
|
281
285
|
* by passing in an optional param to specify the kind of sharing link
|
|
282
|
-
* (at the time of adding this comment Sept/2021), odsp only supports csl
|
|
283
|
-
* ShareLinkTypes will deprecated in future. Use ISharingLinkKind instead which specifies both
|
|
284
|
-
* share link type and the role type.
|
|
285
286
|
*/
|
|
286
|
-
createLinkType?:
|
|
287
|
+
createLinkType?: ISharingLinkKind;
|
|
287
288
|
}
|
|
288
289
|
|
|
289
290
|
export interface IExistingFileInfo extends IFileInfoBase {
|
|
@@ -391,7 +392,7 @@ export function toInstrumentedOdspTokenFetcher(
|
|
|
391
392
|
throw new NonRetryableError(
|
|
392
393
|
// pre-0.58 error message: Token is null for ${name} call
|
|
393
394
|
`The Host-provided token fetcher returned null`,
|
|
394
|
-
|
|
395
|
+
OdspErrorTypes.fetchTokenError,
|
|
395
396
|
{ method: name, driverVersion },
|
|
396
397
|
);
|
|
397
398
|
}
|
|
@@ -406,7 +407,7 @@ export function toInstrumentedOdspTokenFetcher(
|
|
|
406
407
|
(errorMessage) =>
|
|
407
408
|
new NetworkErrorBasic(
|
|
408
409
|
`The Host-provided token fetcher threw an error`,
|
|
409
|
-
|
|
410
|
+
OdspErrorTypes.fetchTokenError,
|
|
410
411
|
typeof rawCanRetry === "boolean"
|
|
411
412
|
? rawCanRetry
|
|
412
413
|
: false /* canRetry */,
|
|
@@ -443,19 +444,13 @@ export const maxUmpPostBodySize = 79872;
|
|
|
443
444
|
* @param shareLinkType - Kind of sharing link requested
|
|
444
445
|
* @returns A string of request parameters that can be concatenated with the base URI
|
|
445
446
|
*/
|
|
446
|
-
export function buildOdspShareLinkReqParams(
|
|
447
|
-
shareLinkType: ShareLinkTypes | ISharingLinkKind | undefined,
|
|
448
|
-
) {
|
|
447
|
+
export function buildOdspShareLinkReqParams(shareLinkType: ISharingLinkKind | undefined) {
|
|
449
448
|
if (!shareLinkType) {
|
|
450
449
|
return;
|
|
451
450
|
}
|
|
452
|
-
const scope =
|
|
453
|
-
if (!scope) {
|
|
454
|
-
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
455
|
-
return `createLinkType=${shareLinkType}`;
|
|
456
|
-
}
|
|
451
|
+
const scope = shareLinkType.scope;
|
|
457
452
|
let shareLinkRequestParams = `createLinkScope=${scope}`;
|
|
458
|
-
const role =
|
|
453
|
+
const role = shareLinkType.role;
|
|
459
454
|
shareLinkRequestParams = role
|
|
460
455
|
? `${shareLinkRequestParams}&createLinkRole=${role}`
|
|
461
456
|
: shareLinkRequestParams;
|
|
@@ -479,3 +474,14 @@ export async function measureP<T>(callback: () => Promise<T>): Promise<[T, numbe
|
|
|
479
474
|
export function getJoinSessionCacheKey(odspResolvedUrl: IOdspResolvedUrl) {
|
|
480
475
|
return `${odspResolvedUrl.hashedDocumentId}/joinsession`;
|
|
481
476
|
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Utility API to check if the type of snapshot contents is `ISnapshot`.
|
|
480
|
+
* @internal
|
|
481
|
+
* @param obj - obj whose type needs to be identified.
|
|
482
|
+
*/
|
|
483
|
+
export function isInstanceOfISnapshot(
|
|
484
|
+
obj: ISnapshotContents | ISnapshot | undefined,
|
|
485
|
+
): obj is ISnapshot {
|
|
486
|
+
return obj !== undefined && "snapshotFormatV" in obj && obj.snapshotFormatV === 1;
|
|
487
|
+
}
|
package/src/packageVersion.ts
CHANGED
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { LoggingError, ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
6
|
+
import { LoggingError, ITelemetryLoggerExt, UsageError } from "@fluidframework/telemetry-utils";
|
|
7
7
|
import {
|
|
8
8
|
FetchSource,
|
|
9
9
|
IDocumentStorageService,
|
|
10
10
|
IDocumentStorageServicePolicies,
|
|
11
|
+
ISnapshot,
|
|
12
|
+
ISnapshotFetchOptions,
|
|
11
13
|
ISummaryContext,
|
|
12
14
|
} from "@fluidframework/driver-definitions";
|
|
13
15
|
import {
|
|
@@ -49,6 +51,15 @@ export class RetryErrorsStorageAdapter implements IDocumentStorageService, IDisp
|
|
|
49
51
|
);
|
|
50
52
|
}
|
|
51
53
|
|
|
54
|
+
public async getSnapshot(snapshotFetchOptions?: ISnapshotFetchOptions): Promise<ISnapshot> {
|
|
55
|
+
return this.runWithRetry(async () => {
|
|
56
|
+
if (this.internalStorageService.getSnapshot !== undefined) {
|
|
57
|
+
return this.internalStorageService.getSnapshot(snapshotFetchOptions);
|
|
58
|
+
}
|
|
59
|
+
throw new UsageError("getSnapshot should exist in storage adapter in ODSP driver");
|
|
60
|
+
}, "storage_getSnapshot");
|
|
61
|
+
}
|
|
62
|
+
|
|
52
63
|
public async readBlob(id: string): Promise<ArrayBufferLike> {
|
|
53
64
|
return this.runWithRetry(
|
|
54
65
|
async () => this.internalStorageService.readBlob(id),
|
package/src/retryUtils.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
|
7
7
|
import { performance } from "@fluid-internal/client-utils";
|
|
8
8
|
import { delay } from "@fluidframework/core-utils";
|
|
9
9
|
import { canRetryOnError, getRetryDelayFromError } from "@fluidframework/driver-utils";
|
|
10
|
-
import {
|
|
10
|
+
import { OdspErrorTypes } from "@fluidframework/odsp-driver-definitions";
|
|
11
11
|
import { Odsp409Error } from "./epochTracker";
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -44,7 +44,7 @@ export async function runWithRetry<T>(
|
|
|
44
44
|
const canRetry = canRetryOnError(error);
|
|
45
45
|
|
|
46
46
|
const coherencyError = error?.[Odsp409Error] === true;
|
|
47
|
-
const serviceReadonlyError = error?.errorType ===
|
|
47
|
+
const serviceReadonlyError = error?.errorType === OdspErrorTypes.serviceReadOnly;
|
|
48
48
|
|
|
49
49
|
// logging the first failed retry instead of every attempt. We want to avoid filling telemetry
|
|
50
50
|
// when we have tight loop of retrying in offline mode, but we also want to know what caused
|
|
@@ -12,7 +12,7 @@ import { Uint8ArrayToArrayBuffer, Uint8ArrayToString } from "@fluid-internal/cli
|
|
|
12
12
|
import { assert } from "@fluidframework/core-utils";
|
|
13
13
|
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
14
14
|
import { NonRetryableError } from "@fluidframework/driver-utils";
|
|
15
|
-
import {
|
|
15
|
+
import { OdspErrorTypes } from "@fluidframework/odsp-driver-definitions";
|
|
16
16
|
import { ReadBuffer } from "./ReadBufferUtils";
|
|
17
17
|
import { pkgVersion as driverVersion } from "./packageVersion";
|
|
18
18
|
import { measure } from "./odspUtils";
|
|
@@ -620,7 +620,7 @@ function throwBufferParseException(
|
|
|
620
620
|
): never {
|
|
621
621
|
throw new NonRetryableError(
|
|
622
622
|
`Buffer parsing exception: ${message}`,
|
|
623
|
-
|
|
623
|
+
OdspErrorTypes.incorrectServerResponse,
|
|
624
624
|
{
|
|
625
625
|
nodeType: getNodeType(node),
|
|
626
626
|
expectedNodeType,
|
|
File without changes
|