Properly propagate 204 to fetchManifest

This commit is contained in:
Fedor Indutny 2022-01-31 11:58:20 -08:00 committed by GitHub
parent c857250b12
commit b6287f4839
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 7 deletions

View File

@ -682,6 +682,11 @@ async function fetchManifest(
return;
}
} catch (err) {
if (err.code === 204) {
log.info('storageService.fetchManifest: no newer manifest, ok');
return;
}
log.error(
'storageService.fetchManifest: failed!',
err && err.stack ? err.stack : String(err)
@ -691,10 +696,6 @@ async function fetchManifest(
await createNewManifest();
return;
}
if (err.code === 204) {
// noNewerManifest we're ok
return;
}
throw err;
}

View File

@ -423,7 +423,12 @@ function doRecordsConflict(
// If both types are Long we can use Long's equals to compare them
if (Long.isLong(localValue) || typeof localValue === 'number') {
if (!Long.isLong(remoteValue) || typeof remoteValue !== 'number') {
if (!Long.isLong(remoteValue) && typeof remoteValue !== 'number') {
log.info(
'storageService.doRecordsConflict: Conflict found, remote value ' +
'is not a number',
key
);
return true;
}

View File

@ -1381,17 +1381,29 @@ export function initialize({
): Promise<Uint8Array> {
const { credentials, greaterThanVersion } = options;
return _ajax({
const { data, response } = await _ajax({
call: 'storageManifest',
contentType: 'application/x-protobuf',
host: storageUrl,
httpType: 'GET',
responseType: 'bytes',
responseType: 'byteswithdetails',
urlParameters: greaterThanVersion
? `/version/${greaterThanVersion}`
: '',
...credentials,
});
if (response.status === 204) {
throw makeHTTPError(
'promiseAjax: error response',
response.status,
response.headers.raw(),
data,
new Error().stack
);
}
return data;
}
async function getStorageRecords(