File tree Expand file tree Collapse file tree 2 files changed +8
-9
lines changed
packages/database/src/core Expand file tree Collapse file tree 2 files changed +8
-9
lines changed Original file line number Diff line number Diff line change @@ -54,6 +54,9 @@ const INTERRUPT_REASON = 'repo_interrupt';
54
54
* A connection to a single data repository.
55
55
*/
56
56
export class Repo {
57
+ /** Key for uniquely identifying this repo, used in RepoManager */
58
+ readonly key : string ;
59
+
57
60
dataUpdateCount = 0 ;
58
61
private infoSyncTree_ : SyncTree ;
59
62
private serverSyncTree_ : SyncTree ;
@@ -174,6 +177,9 @@ export class Repo {
174
177
this . server_ . unlisten ( query , tag ) ;
175
178
}
176
179
} ) ;
180
+
181
+ // This key is intentionally not updated if RepoInfo is later changed or replaced
182
+ this . key = this . repoInfo_ . toURLString ( ) ;
177
183
}
178
184
179
185
/**
Original file line number Diff line number Diff line change @@ -98,17 +98,10 @@ export class RepoManager {
98
98
? new EmulatorAdminTokenProvider ( )
99
99
: repo . authTokenProvider ;
100
100
101
- // Before we modify the repo, get the key used in the repo manager
102
- const oldRepoKey = repo . repoInfo_ . toURLString ( ) ;
103
-
104
101
// Update the repo in-place
105
102
const { repoInfo } = parseRepoInfo ( url , nodeAdmin ) ;
106
103
repo . repoInfo_ = repoInfo ;
107
104
repo . authTokenProvider = authTokenProvider ;
108
-
109
- // Replace the repomanager cache entry
110
- delete this . repos_ [ repo . app . name ] [ oldRepoKey ] ;
111
- this . repos_ [ repo . app . name ] [ repoInfo . toURLString ( ) ] = repo ;
112
105
}
113
106
114
107
/**
@@ -181,13 +174,13 @@ export class RepoManager {
181
174
deleteRepo ( repo : Repo ) {
182
175
const appRepos = safeGet ( this . repos_ , repo . app . name ) ;
183
176
// This should never happen...
184
- if ( ! appRepos || safeGet ( appRepos , repo . repoInfo_ . toURLString ( ) ) !== repo ) {
177
+ if ( ! appRepos || safeGet ( appRepos , repo . key ) !== repo ) {
185
178
fatal (
186
179
`Database ${ repo . app . name } (${ repo . repoInfo_ } ) has already been deleted.`
187
180
) ;
188
181
}
189
182
repo . interrupt ( ) ;
190
- delete appRepos [ repo . repoInfo_ . toURLString ( ) ] ;
183
+ delete appRepos [ repo . key ] ;
191
184
}
192
185
193
186
/**
You can’t perform that action at this time.
0 commit comments