Skip to content

Commit 039d507

Browse files
authored
Make _delete() idempotent (#5159)
1 parent 3d10d33 commit 039d507

File tree

4 files changed

+13
-19
lines changed

4 files changed

+13
-19
lines changed

packages/database/src/exp/Database.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,10 +256,11 @@ export class FirebaseDatabase implements _FirebaseService {
256256
}
257257

258258
_delete(): Promise<void> {
259-
this._checkNotDeleted('delete');
260-
repoManagerDeleteRepo(this._repo, this.app.name);
261-
this._repoInternal = null;
262-
this._rootInternal = null;
259+
if (this._rootInternal !== null) {
260+
repoManagerDeleteRepo(this._repo, this.app.name);
261+
this._repoInternal = null;
262+
this._rootInternal = null;
263+
}
263264
return Promise.resolve();
264265
}
265266

packages/storage/compat/service.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,6 @@ export class StorageServiceCompat
3737
{
3838
constructor(public app: FirebaseApp, readonly _delegate: StorageService) {}
3939

40-
INTERNAL = {
41-
/**
42-
* Called when the associated app is deleted.
43-
*/
44-
delete: () => {
45-
return this._delegate._delete();
46-
}
47-
};
48-
4940
get maxOperationRetryTime(): number {
5041
return this._delegate.maxOperationRetryTime;
5142
}

packages/storage/src/service.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,11 @@ export class StorageService implements _FirebaseService {
269269
* Stop running requests and prevent more from being created.
270270
*/
271271
_delete(): Promise<void> {
272-
this._deleted = true;
273-
this._requests.forEach(request => request.cancel());
274-
this._requests.clear();
272+
if (!this._deleted) {
273+
this._deleted = true;
274+
this._requests.forEach(request => request.cancel());
275+
this._requests.clear();
276+
}
275277
return Promise.resolve();
276278
}
277279

packages/storage/test/unit/service.compat.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,13 +333,13 @@ GOOG4-RSA-SHA256`
333333
const ref = service.refFromURL('gs://mybucket/image.jpg');
334334
const metadataPromise = ref.getMetadata();
335335
// eslint-disable-next-line @typescript-eslint/no-floating-promises
336-
service.INTERNAL.delete();
336+
service._delegate._delete();
337337
await expect(metadataPromise).to.be.rejectedWith('storage/app-deleted');
338338
});
339339
it('Requests fail when started after the service is deleted', async () => {
340340
const ref = service.refFromURL('gs://mybucket/image.jpg');
341341
// eslint-disable-next-line @typescript-eslint/no-floating-promises
342-
service.INTERNAL.delete();
342+
service._delegate._delete();
343343

344344
await expect(ref.getMetadata()).to.be.rejectedWith('storage/app-deleted');
345345
});
@@ -360,7 +360,7 @@ GOOG4-RSA-SHA256`
360360
}
361361
);
362362
// eslint-disable-next-line @typescript-eslint/no-floating-promises
363-
service.INTERNAL.delete();
363+
service._delegate._delete();
364364
});
365365
return toReturn;
366366
});

0 commit comments

Comments
 (0)