@fluidframework/odsp-driver 0.56.3 → 0.57.0-51086
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/dist/createFile.d.ts.map +1 -1
- package/dist/createFile.js +6 -5
- package/dist/createFile.js.map +1 -1
- package/dist/createOdspUrl.d.ts.map +1 -1
- package/dist/createOdspUrl.js.map +1 -1
- package/dist/epochTracker.d.ts.map +1 -1
- package/dist/epochTracker.js +5 -4
- package/dist/epochTracker.js.map +1 -1
- package/dist/fetchSnapshot.d.ts.map +1 -1
- package/dist/fetchSnapshot.js +2 -1
- package/dist/fetchSnapshot.js.map +1 -1
- package/dist/getFileLink.d.ts.map +1 -1
- package/dist/getFileLink.js +5 -4
- package/dist/getFileLink.js.map +1 -1
- package/dist/getQueryString.d.ts.map +1 -1
- package/dist/getQueryString.js.map +1 -1
- package/dist/odspDeltaStorageService.js +1 -1
- package/dist/odspDeltaStorageService.js.map +1 -1
- package/dist/odspDocumentDeltaConnection.d.ts +6 -6
- package/dist/odspDocumentDeltaConnection.d.ts.map +1 -1
- package/dist/odspDocumentDeltaConnection.js +1 -0
- package/dist/odspDocumentDeltaConnection.js.map +1 -1
- package/dist/odspDocumentService.d.ts.map +1 -1
- package/dist/odspDocumentService.js +3 -2
- package/dist/odspDocumentService.js.map +1 -1
- package/dist/odspDocumentStorageManager.d.ts.map +1 -1
- package/dist/odspDocumentStorageManager.js +10 -9
- package/dist/odspDocumentStorageManager.js.map +1 -1
- package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
- package/dist/odspDriverUrlResolverForShareLink.js +2 -1
- package/dist/odspDriverUrlResolverForShareLink.js.map +1 -1
- package/dist/odspSummaryUploadManager.d.ts.map +1 -1
- package/dist/odspSummaryUploadManager.js +4 -1
- package/dist/odspSummaryUploadManager.js.map +1 -1
- package/dist/odspUtils.d.ts +1 -1
- package/dist/odspUtils.d.ts.map +1 -1
- package/dist/odspUtils.js +13 -13
- package/dist/odspUtils.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/retryUtils.js.map +1 -1
- package/dist/vroom.js +1 -1
- package/dist/vroom.js.map +1 -1
- package/dist/zipItDataRepresentationUtils.d.ts.map +1 -1
- package/dist/zipItDataRepresentationUtils.js +2 -0
- package/dist/zipItDataRepresentationUtils.js.map +1 -1
- package/lib/createFile.d.ts.map +1 -1
- package/lib/createFile.js +6 -5
- package/lib/createFile.js.map +1 -1
- package/lib/createOdspUrl.d.ts.map +1 -1
- package/lib/createOdspUrl.js.map +1 -1
- package/lib/epochTracker.d.ts.map +1 -1
- package/lib/epochTracker.js +5 -4
- package/lib/epochTracker.js.map +1 -1
- package/lib/fetchSnapshot.d.ts.map +1 -1
- package/lib/fetchSnapshot.js +2 -1
- package/lib/fetchSnapshot.js.map +1 -1
- package/lib/getFileLink.d.ts.map +1 -1
- package/lib/getFileLink.js +5 -4
- package/lib/getFileLink.js.map +1 -1
- package/lib/getQueryString.d.ts.map +1 -1
- package/lib/getQueryString.js.map +1 -1
- package/lib/odspDeltaStorageService.js +1 -1
- package/lib/odspDeltaStorageService.js.map +1 -1
- package/lib/odspDocumentDeltaConnection.d.ts +6 -6
- package/lib/odspDocumentDeltaConnection.d.ts.map +1 -1
- package/lib/odspDocumentDeltaConnection.js +1 -0
- package/lib/odspDocumentDeltaConnection.js.map +1 -1
- package/lib/odspDocumentService.d.ts.map +1 -1
- package/lib/odspDocumentService.js +3 -2
- package/lib/odspDocumentService.js.map +1 -1
- package/lib/odspDocumentStorageManager.d.ts.map +1 -1
- package/lib/odspDocumentStorageManager.js +10 -9
- package/lib/odspDocumentStorageManager.js.map +1 -1
- package/lib/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
- package/lib/odspDriverUrlResolverForShareLink.js +2 -1
- package/lib/odspDriverUrlResolverForShareLink.js.map +1 -1
- package/lib/odspSummaryUploadManager.d.ts.map +1 -1
- package/lib/odspSummaryUploadManager.js +4 -1
- package/lib/odspSummaryUploadManager.js.map +1 -1
- package/lib/odspUtils.d.ts +1 -1
- package/lib/odspUtils.d.ts.map +1 -1
- package/lib/odspUtils.js +16 -16
- package/lib/odspUtils.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/retryUtils.js.map +1 -1
- package/lib/vroom.js +1 -1
- package/lib/vroom.js.map +1 -1
- package/lib/zipItDataRepresentationUtils.d.ts.map +1 -1
- package/lib/zipItDataRepresentationUtils.js +2 -0
- package/lib/zipItDataRepresentationUtils.js.map +1 -1
- package/package.json +8 -8
- package/src/createFile.ts +8 -5
- package/src/createOdspUrl.ts +1 -1
- package/src/epochTracker.ts +6 -10
- package/src/fetchSnapshot.ts +8 -7
- package/src/getFileLink.ts +7 -4
- package/src/getQueryString.ts +1 -1
- package/src/odspDeltaStorageService.ts +1 -1
- package/src/odspDocumentDeltaConnection.ts +9 -8
- package/src/odspDocumentService.ts +4 -2
- package/src/odspDocumentStorageManager.ts +15 -11
- package/src/odspDriverUrlResolverForShareLink.ts +3 -1
- package/src/odspSummaryUploadManager.ts +4 -1
- package/src/odspUtils.ts +22 -17
- package/src/packageVersion.ts +1 -1
- package/src/retryUtils.ts +1 -1
- package/src/vroom.ts +1 -1
- package/src/zipItDataRepresentationUtils.ts +2 -0
|
@@ -46,7 +46,9 @@ export class OdspSummaryUploadManager {
|
|
|
46
46
|
public async writeSummaryTree(tree: api.ISummaryTree, context: ISummaryContext) {
|
|
47
47
|
// If the last proposed handle is not the proposed handle of the acked summary(could happen when the last summary get nacked),
|
|
48
48
|
// then re-initialize the caches with the previous ones else just update the previous caches with the caches from acked summary.
|
|
49
|
-
if
|
|
49
|
+
// Don't bother logging if lastSummaryProposalHandle hasn't been set before; only log on a positive mismatch.
|
|
50
|
+
if (this.lastSummaryProposalHandle !== undefined &&
|
|
51
|
+
this.lastSummaryProposalHandle !== context.proposalHandle) {
|
|
50
52
|
this.mc.logger.sendTelemetryEvent({
|
|
51
53
|
eventName: "LastSummaryProposedHandleMismatch",
|
|
52
54
|
ackedSummaryProposedHandle: context.proposalHandle,
|
|
@@ -106,6 +108,7 @@ export class OdspSummaryUploadManager {
|
|
|
106
108
|
headers: Object.keys(headers).length !== 0 ? true : undefined,
|
|
107
109
|
blobs,
|
|
108
110
|
size: postBody.length,
|
|
111
|
+
referenceSequenceNumber,
|
|
109
112
|
},
|
|
110
113
|
async () => {
|
|
111
114
|
const response = await this.epochTracker.fetchAndParseAsJSON<IWriteSummaryResponse>(
|
package/src/odspUtils.ts
CHANGED
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
InstrumentedStorageTokenFetcher,
|
|
35
35
|
} from "@fluidframework/odsp-driver-definitions";
|
|
36
36
|
import { fetch } from "./fetch";
|
|
37
|
-
import { pkgVersion } from "./packageVersion";
|
|
37
|
+
import { pkgVersion as driverVersion } from "./packageVersion";
|
|
38
38
|
import { IOdspSnapshot } from "./contracts";
|
|
39
39
|
|
|
40
40
|
export const getWithRetryForTokenRefreshRepeat = "getWithRetryForTokenRefreshRepeat";
|
|
@@ -52,7 +52,7 @@ export interface ISnapshotContents {
|
|
|
52
52
|
export interface IOdspResponse<T> {
|
|
53
53
|
content: T;
|
|
54
54
|
headers: Map<string, string>;
|
|
55
|
-
|
|
55
|
+
propsToLog: ITelemetryProperties;
|
|
56
56
|
duration: number,
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -111,7 +111,8 @@ export async function fetchHelper(
|
|
|
111
111
|
throw new NonRetryableError(
|
|
112
112
|
"odspFetchErrorNoResponse",
|
|
113
113
|
"No response from fetch call",
|
|
114
|
-
DriverErrorType.incorrectServerResponse
|
|
114
|
+
DriverErrorType.incorrectServerResponse,
|
|
115
|
+
{ driverVersion });
|
|
115
116
|
}
|
|
116
117
|
if (!response.ok || response.status < 200 || response.status >= 300) {
|
|
117
118
|
throwOdspNetworkError(
|
|
@@ -122,7 +123,7 @@ export async function fetchHelper(
|
|
|
122
123
|
return {
|
|
123
124
|
content: response,
|
|
124
125
|
headers,
|
|
125
|
-
|
|
126
|
+
propsToLog: getSPOAndGraphRequestIdsFromResponse(headers),
|
|
126
127
|
duration: performance.now() - start,
|
|
127
128
|
};
|
|
128
129
|
}, (error) => {
|
|
@@ -136,11 +137,13 @@ export async function fetchHelper(
|
|
|
136
137
|
}
|
|
137
138
|
// This error is thrown by fetch() when AbortSignal is provided and it gets cancelled
|
|
138
139
|
if (error.name === "AbortError") {
|
|
139
|
-
throw new RetryableError(
|
|
140
|
+
throw new RetryableError(
|
|
141
|
+
"fetchAbort", "Fetch Timeout (AbortError)", OdspErrorType.fetchTimeout, { driverVersion });
|
|
140
142
|
}
|
|
141
143
|
// TCP/IP timeout
|
|
142
144
|
if (errorText.indexOf("ETIMEDOUT") !== -1) {
|
|
143
|
-
throw new RetryableError(
|
|
145
|
+
throw new RetryableError(
|
|
146
|
+
"fetchETimedout", "Fetch Timeout (ETIMEDOUT)", OdspErrorType.fetchTimeout, { driverVersion });
|
|
144
147
|
}
|
|
145
148
|
|
|
146
149
|
//
|
|
@@ -149,9 +152,11 @@ export async function fetchHelper(
|
|
|
149
152
|
// It is also non-serializable object due to circular references.
|
|
150
153
|
//
|
|
151
154
|
if (online === OnlineStatus.Offline) {
|
|
152
|
-
throw new RetryableError(
|
|
155
|
+
throw new RetryableError(
|
|
156
|
+
"OdspFetchOffline", `Offline: ${errorText}`, DriverErrorType.offlineError, { driverVersion });
|
|
153
157
|
} else {
|
|
154
|
-
throw new RetryableError(
|
|
158
|
+
throw new RetryableError(
|
|
159
|
+
"OdspFetchError", `Fetch error: ${errorText}`, DriverErrorType.fetchFailure, { driverVersion });
|
|
155
160
|
}
|
|
156
161
|
});
|
|
157
162
|
}
|
|
@@ -165,14 +170,14 @@ export async function fetchArray(
|
|
|
165
170
|
requestInfo: RequestInfo,
|
|
166
171
|
requestInit: RequestInit | undefined,
|
|
167
172
|
): Promise<IOdspResponse<ArrayBuffer>> {
|
|
168
|
-
const { content, headers,
|
|
173
|
+
const { content, headers, propsToLog, duration } = await fetchHelper(requestInfo, requestInit);
|
|
169
174
|
|
|
170
175
|
const arrayBuffer = await content.arrayBuffer();
|
|
171
|
-
|
|
176
|
+
propsToLog.bodySize = arrayBuffer.byteLength;
|
|
172
177
|
return {
|
|
173
178
|
headers,
|
|
174
179
|
content: arrayBuffer,
|
|
175
|
-
|
|
180
|
+
propsToLog,
|
|
176
181
|
duration,
|
|
177
182
|
};
|
|
178
183
|
}
|
|
@@ -186,7 +191,7 @@ export async function fetchAndParseAsJSONHelper<T>(
|
|
|
186
191
|
requestInfo: RequestInfo,
|
|
187
192
|
requestInit: RequestInit | undefined,
|
|
188
193
|
): Promise<IOdspResponse<T>> {
|
|
189
|
-
const { content, headers,
|
|
194
|
+
const { content, headers, propsToLog, duration } = await fetchHelper(requestInfo, requestInit);
|
|
190
195
|
let text: string | undefined;
|
|
191
196
|
try {
|
|
192
197
|
text = await content.text();
|
|
@@ -204,11 +209,11 @@ export async function fetchAndParseAsJSONHelper<T>(
|
|
|
204
209
|
);
|
|
205
210
|
}
|
|
206
211
|
|
|
207
|
-
|
|
212
|
+
propsToLog.bodySize = text.length;
|
|
208
213
|
const res = {
|
|
209
214
|
headers,
|
|
210
215
|
content: JSON.parse(text),
|
|
211
|
-
|
|
216
|
+
propsToLog,
|
|
212
217
|
duration,
|
|
213
218
|
};
|
|
214
219
|
return res;
|
|
@@ -238,7 +243,7 @@ export const createOdspLogger = (logger?: ITelemetryBaseLogger) =>
|
|
|
238
243
|
"OdspDriver",
|
|
239
244
|
{ all :
|
|
240
245
|
{
|
|
241
|
-
driverVersion
|
|
246
|
+
driverVersion,
|
|
242
247
|
},
|
|
243
248
|
});
|
|
244
249
|
|
|
@@ -304,7 +309,7 @@ export function toInstrumentedOdspTokenFetcher(
|
|
|
304
309
|
"storageTokenIsNull",
|
|
305
310
|
`Token is null for ${name} call`,
|
|
306
311
|
OdspErrorType.fetchTokenError,
|
|
307
|
-
{ method: name });
|
|
312
|
+
{ method: name, driverVersion });
|
|
308
313
|
}
|
|
309
314
|
return token;
|
|
310
315
|
}, (error) => {
|
|
@@ -318,7 +323,7 @@ export function toInstrumentedOdspTokenFetcher(
|
|
|
318
323
|
errorMessage,
|
|
319
324
|
OdspErrorType.fetchTokenError,
|
|
320
325
|
typeof rawCanRetry === "boolean" ? rawCanRetry : false /* canRetry */,
|
|
321
|
-
{ method: name, driverVersion
|
|
326
|
+
{ method: name, driverVersion }));
|
|
322
327
|
throw tokenError;
|
|
323
328
|
}),
|
|
324
329
|
{ cancel: "generic" });
|
package/src/packageVersion.ts
CHANGED
package/src/retryUtils.ts
CHANGED
|
@@ -68,7 +68,7 @@ export async function runWithRetry<T>(
|
|
|
68
68
|
|
|
69
69
|
assert(canRetry, 0x24d /* "can retry" */);
|
|
70
70
|
await delay(Math.floor(retryAfter));
|
|
71
|
-
retryAfter += retryAfter / 4
|
|
71
|
+
retryAfter += retryAfter / 4 * (1 + Math.random());
|
|
72
72
|
lastError = error;
|
|
73
73
|
}
|
|
74
74
|
}
|
package/src/vroom.ts
CHANGED
|
@@ -94,7 +94,7 @@ export async function fetchJoinSession(
|
|
|
94
94
|
|
|
95
95
|
// TODO SPO-specific telemetry
|
|
96
96
|
event.end({
|
|
97
|
-
...response.
|
|
97
|
+
...response.propsToLog,
|
|
98
98
|
// pushV2 websocket urls will contain pushf
|
|
99
99
|
pushv2: socketUrl.includes("pushf"),
|
|
100
100
|
webSocketHostName,
|
|
@@ -12,6 +12,7 @@ import { assert, IsoBuffer, Uint8ArrayToArrayBuffer, Uint8ArrayToString } from "
|
|
|
12
12
|
import { NonRetryableError } from "@fluidframework/driver-utils";
|
|
13
13
|
import { DriverErrorType } from "@fluidframework/driver-definitions";
|
|
14
14
|
import { ReadBuffer } from "./ReadBufferUtils";
|
|
15
|
+
import { pkgVersion as driverVersion } from "./packageVersion";
|
|
15
16
|
|
|
16
17
|
// eslint-disable-next-line max-len
|
|
17
18
|
// https://onedrive.visualstudio.com/SharePoint%20Online/_git/SPO?path=/cobalt/Base/Property/BinaryEncodedPropertyReader.cs&version=GBmaster&_a=contents
|
|
@@ -485,6 +486,7 @@ function throwBufferParseException(
|
|
|
485
486
|
{
|
|
486
487
|
nodeType: getNodeType(node),
|
|
487
488
|
expectedNodeType,
|
|
489
|
+
driverVersion,
|
|
488
490
|
});
|
|
489
491
|
}
|
|
490
492
|
|