Skip to content

Commit 84b200a

Browse files
Clean up LocalStore initialization (#3344)
1 parent dcf82a5 commit 84b200a

File tree

1 file changed

+19
-29
lines changed
  • firebase-firestore/src/main/java/com/google/firebase/firestore/local

1 file changed

+19
-29
lines changed

firebase-firestore/src/main/java/com/google/firebase/firestore/local/LocalStore.java

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -158,31 +158,36 @@ public LocalStore(
158158
hardAssert(
159159
persistence.isStarted(), "LocalStore was passed an unstarted persistence implementation");
160160
this.persistence = persistence;
161+
this.queryEngine = queryEngine;
162+
this.indexBackfiller = indexBackfiller;
163+
161164
targetCache = persistence.getTargetCache();
162165
bundleCache = persistence.getBundleCache();
163166
targetIdGenerator = TargetIdGenerator.forTargetCache(targetCache.getHighestTargetId());
164-
indexManager = persistence.getIndexManager(initialUser);
165-
mutationQueue = persistence.getMutationQueue(initialUser, indexManager);
166-
documentOverlayCache = persistence.getDocumentOverlay(initialUser);
167167
remoteDocuments = persistence.getRemoteDocumentCache();
168-
localDocuments =
169-
new LocalDocumentsView(remoteDocuments, mutationQueue, documentOverlayCache, indexManager);
170-
this.queryEngine = queryEngine;
171-
queryEngine.initialize(localDocuments, indexManager);
172-
173168
localViewReferences = new ReferenceSet();
169+
queryDataByTarget = new SparseArray<>();
170+
targetIdByTarget = new HashMap<>();
171+
174172
persistence.getReferenceDelegate().setInMemoryPins(localViewReferences);
175173

176-
remoteDocuments.setIndexManager(indexManager);
174+
initializeUserComponents(initialUser);
175+
}
177176

178-
this.indexBackfiller = indexBackfiller;
177+
private void initializeUserComponents(User user) {
178+
// TODO(indexing): Add spec tests that test these components change after a user change
179+
indexManager = persistence.getIndexManager(user);
180+
mutationQueue = persistence.getMutationQueue(user, indexManager);
181+
documentOverlayCache = persistence.getDocumentOverlay(user);
182+
localDocuments =
183+
new LocalDocumentsView(remoteDocuments, mutationQueue, documentOverlayCache, indexManager);
184+
185+
remoteDocuments.setIndexManager(indexManager);
186+
queryEngine.initialize(localDocuments, indexManager);
179187
if (indexBackfiller != null) {
180188
indexBackfiller.setIndexManager(indexManager);
181189
indexBackfiller.setLocalDocumentsView(localDocuments);
182190
}
183-
184-
queryDataByTarget = new SparseArray<>();
185-
targetIdByTarget = new HashMap<>();
186191
}
187192

188193
public void start() {
@@ -205,27 +210,12 @@ public ImmutableSortedMap<DocumentKey, Document> handleUserChange(User user) {
205210
// Swap out the mutation queue, grabbing the pending mutation batches before and after.
206211
List<MutationBatch> oldBatches = mutationQueue.getAllMutationBatches();
207212

208-
indexManager = persistence.getIndexManager(user);
209-
mutationQueue = persistence.getMutationQueue(user, indexManager);
210-
documentOverlayCache = persistence.getDocumentOverlay(user);
211-
213+
initializeUserComponents(user);
212214
startIndexManager();
213215
startMutationQueue();
214216

215217
List<MutationBatch> newBatches = mutationQueue.getAllMutationBatches();
216218

217-
// Recreate our LocalDocumentsView using the new MutationQueue.
218-
localDocuments =
219-
new LocalDocumentsView(remoteDocuments, mutationQueue, documentOverlayCache, indexManager);
220-
queryEngine.initialize(localDocuments, indexManager);
221-
222-
// TODO(indexing): Add spec tests that test these components change after a user change
223-
remoteDocuments.setIndexManager(indexManager);
224-
if (indexBackfiller != null) {
225-
indexBackfiller.setIndexManager(indexManager);
226-
indexBackfiller.setLocalDocumentsView(localDocuments);
227-
}
228-
229219
// Union the old/new changed keys.
230220
ImmutableSortedSet<DocumentKey> changedKeys = DocumentKey.emptyKeySet();
231221
for (List<MutationBatch> batches : asList(oldBatches, newBatches)) {

0 commit comments

Comments
 (0)