diff options
author | bob <bcz@cs.brown.edu> | 2019-07-10 16:53:21 -0400 |
---|---|---|
committer | bob <bcz@cs.brown.edu> | 2019-07-10 16:53:21 -0400 |
commit | 63cb729640fb9c1a027c6c6008766f336dad2185 (patch) | |
tree | 952d857d00418bf9756f423920640d3c73a858de | |
parent | 4fb942ccc008f0952833b809be6301a5405bfe20 (diff) | |
parent | abb53ad8a5cbf2439aac420e9ec16a3a461dec1e (diff) |
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
-rw-r--r-- | src/client/DocServer.ts | 2 | ||||
-rw-r--r-- | src/client/views/collections/CollectionDockingView.tsx | 1 | ||||
-rw-r--r-- | src/server/GarbageCollector.ts | 13 |
3 files changed, 14 insertions, 2 deletions
diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts index 443f70bb1..97147f5e4 100644 --- a/src/client/DocServer.ts +++ b/src/client/DocServer.ts @@ -32,6 +32,8 @@ export namespace DocServer { // _cache = {}; } + export function isReadOnly() { return _isReadOnly; } + export function prepend(extension: string): string { return window.location.origin + extension; } diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx index d477f96f0..57964442d 100644 --- a/src/client/views/collections/CollectionDockingView.tsx +++ b/src/client/views/collections/CollectionDockingView.tsx @@ -426,6 +426,7 @@ export class CollectionDockingView extends React.Component<SubCollectionViewProp stackCreated = (stack: any) => { //stack.header.controlsContainer.find('.lm_popout').hide(); + stack.header.element[0].style.backgroundColor = DocServer.isReadOnly() ? "#228540" : undefined; stack.header.controlsContainer.find('.lm_close') //get the close icon .off('click') //unbind the current click handler .click(action(function () { diff --git a/src/server/GarbageCollector.ts b/src/server/GarbageCollector.ts index 268239481..59682e51e 100644 --- a/src/server/GarbageCollector.ts +++ b/src/server/GarbageCollector.ts @@ -94,8 +94,17 @@ async function GarbageCollect() { const toDeleteCursor = await Database.Instance.query({ _id: { $nin: Array.from(visited) } }, { _id: 1 }); const toDelete: string[] = (await toDeleteCursor.toArray()).map(doc => doc._id); toDeleteCursor.close(); - const result = await Database.Instance.delete({ _id: { $in: toDelete } }, "newDocuments"); - console.log(`${result.deletedCount} documents deleted`); + let i = 0; + let deleted = 0; + while (i < toDelete.length) { + const count = Math.min(toDelete.length, 5000); + const toDeleteDocs = toDelete.slice(i, i + count); + i += count; + const result = await Database.Instance.delete({ _id: { $in: toDeleteDocs } }, "newDocuments"); + deleted += result.deletedCount || 0; + } + // const result = await Database.Instance.delete({ _id: { $in: toDelete } }, "newDocuments"); + console.log(`${deleted} documents deleted`); await Search.Instance.deleteDocuments(toDelete); console.log("Cleared search documents"); |