aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-12-16 10:40:45 -0500
committerbob <bcz@cs.brown.edu>2019-12-16 10:40:45 -0500
commit9c3acfbd6ad518cd1afcc05a521480d93c07f13a (patch)
treea6c6bbbfc2250e7c6d1f1d4b9757e55128597edf
parent7584c5bed0de45f2f656fb289ff67463fb1958ef (diff)
parent001cea83f6c57914e0e76a75a94f3e06e542a419 (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
-rw-r--r--.gitignore4
-rw-r--r--package-lock.json54
-rw-r--r--package.json2
-rw-r--r--solr-8.3.1/server/logs/solr-8983-console.log15
-rw-r--r--solr-8.3.1/server/logs/solr.log663
-rw-r--r--solr-8.3.1/server/logs/solr_gc.log.0.current369
-rw-r--r--solr-8.3.1/server/logs/solr_slow_requests.log0
-rw-r--r--src/client/documents/DocumentTypes.ts3
-rw-r--r--src/client/documents/Documents.ts20
-rw-r--r--src/client/util/DragManager.ts23
-rw-r--r--src/client/util/Import & Export/DirectoryImportBox.tsx7
-rw-r--r--src/client/util/RichTextRules.ts5
-rw-r--r--src/client/util/RichTextSchema.tsx6
-rw-r--r--src/client/util/SearchUtil.ts4
-rw-r--r--src/client/util/SelectionManager.ts6
-rw-r--r--src/client/views/DocComponent.tsx1
-rw-r--r--src/client/views/collections/CollectionSubView.tsx4
-rw-r--r--src/client/views/collections/ParentDocumentSelector.tsx2
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.scss2
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx21
-rw-r--r--src/client/views/nodes/ContentFittingDocumentView.scss5
-rw-r--r--src/client/views/nodes/ContentFittingDocumentView.tsx24
-rw-r--r--src/client/views/nodes/DocumentBox.scss6
-rw-r--r--src/client/views/nodes/DocumentBox.tsx55
-rw-r--r--src/client/views/nodes/DocumentContentsView.tsx3
-rw-r--r--src/client/views/nodes/DocumentView.tsx23
-rw-r--r--src/client/views/nodes/FormattedTextBox.tsx1
-rw-r--r--src/client/views/nodes/ImageBox.tsx1
-rw-r--r--src/client/views/nodes/KeyValueBox.tsx2
-rw-r--r--src/client/views/nodes/PDFBox.tsx61
-rw-r--r--src/client/views/pdf/PDFMenu.tsx36
-rw-r--r--src/client/views/pdf/PDFViewer.tsx8
-rw-r--r--src/client/views/search/SearchBox.tsx5
-rw-r--r--src/new_fields/Doc.ts21
-rw-r--r--src/new_fields/ScriptField.ts5
-rw-r--r--src/new_fields/documentSchemas.ts4
-rw-r--r--src/server/ApiManagers/PDFManager.ts72
-rw-r--r--src/server/ChildProcessUtilities/daemon/session.ts190
-rw-r--r--src/server/ProcessFactory.ts (renamed from src/server/ChildProcessUtilities/ProcessFactory.ts)25
-rw-r--r--src/server/authentication/models/current_user_utils.ts1
-rw-r--r--src/server/index.ts2
-rw-r--r--src/server/session_manager/config.ts33
-rw-r--r--src/server/session_manager/input_manager.ts101
-rw-r--r--src/server/session_manager/logs/current_daemon_pid.log1
-rw-r--r--src/server/session_manager/logs/current_server_pid.log1
-rw-r--r--src/server/session_manager/logs/current_session_manager_pid.log1
-rw-r--r--src/server/session_manager/session_manager.ts199
47 files changed, 650 insertions, 1447 deletions
diff --git a/.gitignore b/.gitignore
index 38c619c52..d376d7c12 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,7 @@ dist/
.DS_Store
.env
ClientUtils.ts
-solr-8.1.1/server/
+solr-8.3.1/server/logs/
src/server/public/files/
src/scraping/acm/package-lock.json
-src/server/ChildProcessUtilities/daemon/**/*.log
+src/server/session_manager/logs/**/*.log
diff --git a/package-lock.json b/package-lock.json
index f12115fee..a212fc74b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2546,7 +2546,7 @@
},
"browserify-aes": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"requires": {
"buffer-xor": "1.0.3",
@@ -2580,7 +2580,7 @@
},
"browserify-rsa": {
"version": "4.0.1",
- "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
"requires": {
"bn.js": "4.11.8",
@@ -2617,7 +2617,7 @@
},
"buffer": {
"version": "4.9.1",
- "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"dev": true,
"requires": {
@@ -2765,7 +2765,7 @@
},
"camelcase-keys": {
"version": "2.1.0",
- "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"requires": {
"camelcase": "2.1.1",
@@ -3540,7 +3540,7 @@
},
"create-hash": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"requires": {
"cipher-base": "1.0.4",
@@ -3552,7 +3552,7 @@
},
"create-hmac": {
"version": "1.1.7",
- "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"requires": {
"cipher-base": "1.0.4",
@@ -4095,7 +4095,7 @@
},
"diffie-hellman": {
"version": "5.0.3",
- "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"requires": {
"bn.js": "4.11.8",
@@ -7017,7 +7017,7 @@
},
"is-accessor-descriptor": {
"version": "0.1.6",
- "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "3.2.2"
@@ -7066,7 +7066,7 @@
},
"is-data-descriptor": {
"version": "0.1.4",
- "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "3.2.2"
@@ -7846,7 +7846,7 @@
},
"load-json-file": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"requires": {
"graceful-fs": "4.2.0",
@@ -8160,7 +8160,7 @@
},
"media-typer": {
"version": "0.3.0",
- "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"mem": {
@@ -8192,7 +8192,7 @@
},
"meow": {
"version": "3.7.0",
- "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"requires": {
"camelcase-keys": "2.1.0",
@@ -8385,7 +8385,7 @@
},
"mkdirp": {
"version": "0.5.1",
- "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
@@ -8726,7 +8726,7 @@
},
"next-tick": {
"version": "1.0.0",
- "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"nice-try": {
@@ -8890,7 +8890,7 @@
},
"semver": {
"version": "5.3.0",
- "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
},
"tar": {
@@ -12499,7 +12499,7 @@
},
"os-homedir": {
"version": "1.0.2",
- "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
},
"os-locale": {
@@ -12512,7 +12512,7 @@
},
"os-tmpdir": {
"version": "1.0.2",
- "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
"osenv": {
@@ -12752,7 +12752,7 @@
},
"path-is-absolute": {
"version": "1.0.1",
- "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-is-inside": {
@@ -14072,7 +14072,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "1.0.2",
@@ -14417,7 +14417,7 @@
},
"safe-regex": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"requires": {
"ret": "0.1.15"
@@ -14682,7 +14682,7 @@
},
"sha.js": {
"version": "2.4.11",
- "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
"requires": {
"inherits": "2.0.3",
@@ -15427,7 +15427,7 @@
},
"string_decoder": {
"version": "1.1.1",
- "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "5.1.2"
@@ -15457,7 +15457,7 @@
},
"strip-ansi": {
"version": "3.0.1",
- "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "2.1.1"
@@ -15473,7 +15473,7 @@
},
"strip-eof": {
"version": "1.0.0",
- "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
},
"strip-indent": {
@@ -16226,7 +16226,7 @@
},
"tty-browserify": {
"version": "0.0.0",
- "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
"dev": true
},
@@ -17668,7 +17668,7 @@
},
"wrap-ansi": {
"version": "2.1.0",
- "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"requires": {
"string-width": "1.0.2",
@@ -18015,4 +18015,4 @@
}
}
}
-}
+} \ No newline at end of file
diff --git a/package.json b/package.json
index 100d55d9a..45390ba90 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"main": "index.js",
"scripts": {
"start-release": "cross-env RELEASE=true NODE_OPTIONS=--max_old_space_size=4096 ts-node-dev -- src/server/index.ts",
- "session": "npx ts-node ./src/server/ChildProcessUtilities/daemon/session.ts",
+ "session": "npx ts-node ./src/server/session_manager/session_manager.ts",
"start": "cross-env NODE_OPTIONS=--max_old_space_size=4096 ts-node-dev -- src/server/index.ts",
"debug": "cross-env NODE_OPTIONS=--max_old_space_size=8192 ts-node-dev --inspect -- src/server/index.ts",
"build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 webpack --env production",
diff --git a/solr-8.3.1/server/logs/solr-8983-console.log b/solr-8.3.1/server/logs/solr-8983-console.log
deleted file mode 100644
index 7e3ba9574..000000000
--- a/solr-8.3.1/server/logs/solr-8983-console.log
+++ /dev/null
@@ -1,15 +0,0 @@
-2019-12-10 23:00:17.458 INFO (main) [ ] o.e.j.u.log Logging initialized @1404ms to org.eclipse.jetty.util.log.Slf4jLog
-2019-12-10 23:00:17.810 WARN (main) [ ] o.e.j.x.XmlConfiguration Deprecated method public void org.eclipse.jetty.rewrite.handler.RedirectRegexRule.setReplacement(java.lang.String) in file:///C:/Users/dash/Documents/Dash-Web/solr-8.3.1/server/etc/jetty.xml
-2019-12-10 23:00:17.912 WARN (main) [ ] o.e.j.s.AbstractConnector Ignoring deprecated socket close linger time
-2019-12-10 23:00:17.912 WARN (main) [ ] o.e.j.x.XmlConfiguration Deprecated method public void org.eclipse.jetty.server.ServerConnector.setSoLingerTime(int) in file:///C:/Users/dash/Documents/Dash-Web/solr-8.3.1/server/etc/jetty-http.xml
-2019-12-10 23:00:17.920 INFO (main) [ ] o.e.j.s.Server jetty-9.4.19.v20190610; built: 2019-06-10T16:30:51.723Z; git: afcf563148970e98786327af5e07c261fda175d3; jvm 1.8.0_211-b12
-2019-12-10 23:00:17.963 INFO (main) [ ] o.e.j.d.p.ScanningAppProvider Deployment monitor [file:///C:/Users/dash/Documents/Dash-Web/solr-8.3.1/server/contexts/] at interval 0
-2019-12-10 23:00:18.723 INFO (main) [ ] o.e.j.w.StandardDescriptorProcessor NO JSP Support for /solr, did not find org.apache.jasper.servlet.JspServlet
-2019-12-10 23:00:18.739 INFO (main) [ ] o.e.j.s.session DefaultSessionIdManager workerName=node0
-2019-12-10 23:00:18.739 INFO (main) [ ] o.e.j.s.session No SessionScavenger set, using defaults
-2019-12-10 23:00:18.742 INFO (main) [ ] o.e.j.s.session node0 Scavenging every 600000ms
-2019-12-10 23:00:18.869 INFO (main) [ ] o.a.s.s.SolrDispatchFilter Using logger factory org.apache.logging.slf4j.Log4jLoggerFactory
-2019-12-10 23:00:18.875 INFO (main) [ ] o.a.s.s.SolrDispatchFilter ___ _ Welcome to Apache Solr™ version 8.3.1
-2019-12-10 23:00:18.875 INFO (main) [ ] o.a.s.s.SolrDispatchFilter / __| ___| |_ _ Starting in standalone mode on port 8983
-2019-12-10 23:00:18.875 INFO (main) [ ] o.a.s.s.SolrDispatchFilter \__ \/ _ \ | '_| Install dir: C:/Users/dash/Documents/Dash-Web/solr-8.3.1
-2019-12-10 23:00:18.876 INFO (main) [ ] o.a.s.s.SolrDispatchFilter |___/\___/_|_| Start time: 2019-12-10T23:00:18.876Z
diff --git a/solr-8.3.1/server/logs/solr.log b/solr-8.3.1/server/logs/solr.log
deleted file mode 100644
index 6b4ffa0e0..000000000
--- a/solr-8.3.1/server/logs/solr.log
+++ /dev/null
@@ -1,663 +0,0 @@
-2019-12-10 23:00:17.458 INFO (main) [ ] o.e.j.u.log Logging initialized @1404ms to org.eclipse.jetty.util.log.Slf4jLog
-2019-12-10 23:00:17.810 WARN (main) [ ] o.e.j.x.XmlConfiguration Deprecated method public void org.eclipse.jetty.rewrite.handler.RedirectRegexRule.setReplacement(java.lang.String) in file:///C:/Users/dash/Documents/Dash-Web/solr-8.3.1/server/etc/jetty.xml
-2019-12-10 23:00:17.912 WARN (main) [ ] o.e.j.s.AbstractConnector Ignoring deprecated socket close linger time
-2019-12-10 23:00:17.912 WARN (main) [ ] o.e.j.x.XmlConfiguration Deprecated method public void org.eclipse.jetty.server.ServerConnector.setSoLingerTime(int) in file:///C:/Users/dash/Documents/Dash-Web/solr-8.3.1/server/etc/jetty-http.xml
-2019-12-10 23:00:17.920 INFO (main) [ ] o.e.j.s.Server jetty-9.4.19.v20190610; built: 2019-06-10T16:30:51.723Z; git: afcf563148970e98786327af5e07c261fda175d3; jvm 1.8.0_211-b12
-2019-12-10 23:00:17.963 INFO (main) [ ] o.e.j.d.p.ScanningAppProvider Deployment monitor [file:///C:/Users/dash/Documents/Dash-Web/solr-8.3.1/server/contexts/] at interval 0
-2019-12-10 23:00:18.723 INFO (main) [ ] o.e.j.w.StandardDescriptorProcessor NO JSP Support for /solr, did not find org.apache.jasper.servlet.JspServlet
-2019-12-10 23:00:18.739 INFO (main) [ ] o.e.j.s.session DefaultSessionIdManager workerName=node0
-2019-12-10 23:00:18.739 INFO (main) [ ] o.e.j.s.session No SessionScavenger set, using defaults
-2019-12-10 23:00:18.742 INFO (main) [ ] o.e.j.s.session node0 Scavenging every 600000ms
-2019-12-10 23:00:18.869 INFO (main) [ ] o.a.s.s.SolrDispatchFilter Using logger factory org.apache.logging.slf4j.Log4jLoggerFactory
-2019-12-10 23:00:18.875 INFO (main) [ ] o.a.s.s.SolrDispatchFilter ___ _ Welcome to Apache Solr™ version 8.3.1
-2019-12-10 23:00:18.875 INFO (main) [ ] o.a.s.s.SolrDispatchFilter / __| ___| |_ _ Starting in standalone mode on port 8983
-2019-12-10 23:00:18.875 INFO (main) [ ] o.a.s.s.SolrDispatchFilter \__ \/ _ \ | '_| Install dir: C:/Users/dash/Documents/Dash-Web/solr-8.3.1
-2019-12-10 23:00:18.876 INFO (main) [ ] o.a.s.s.SolrDispatchFilter |___/\___/_|_| Start time: 2019-12-10T23:00:18.876Z
-2019-12-10 23:00:18.909 INFO (main) [ ] o.a.s.c.SolrResourceLoader Using system property solr.solr.home: C:/Users/dash/Documents/Dash-Web/solr-8.3.1/server/solr
-2019-12-10 23:00:18.918 INFO (main) [ ] o.a.s.c.SolrXmlConfig Loading container configuration from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\solr.xml
-2019-12-10 23:00:19.084 INFO (main) [ ] o.a.s.c.SolrXmlConfig MBean server found: com.sun.jmx.mbeanserver.JmxMBeanServer@5d740a0f, but no JMX reporters were configured - adding default JMX reporter.
-2019-12-10 23:00:19.587 INFO (main) [ ] o.a.s.h.c.HttpShardHandlerFactory Host whitelist initialized: WhitelistHostChecker [whitelistHosts=null, whitelistHostCheckingEnabled=true]
-2019-12-10 23:00:20.142 WARN (main) [ ] o.e.j.u.s.S.config Trusting all certificates configured for Client@253d9f73[provider=null,keyStore=null,trustStore=null]
-2019-12-10 23:00:20.142 WARN (main) [ ] o.e.j.u.s.S.config No Client EndPointIdentificationAlgorithm configured for Client@253d9f73[provider=null,keyStore=null,trustStore=null]
-2019-12-10 23:00:20.307 WARN (main) [ ] o.e.j.u.s.S.config Trusting all certificates configured for Client@5ee2b6f9[provider=null,keyStore=null,trustStore=null]
-2019-12-10 23:00:20.307 WARN (main) [ ] o.e.j.u.s.S.config No Client EndPointIdentificationAlgorithm configured for Client@5ee2b6f9[provider=null,keyStore=null,trustStore=null]
-2019-12-10 23:00:20.597 INFO (main) [ ] o.a.s.c.TransientSolrCoreCacheDefault Allocating transient cache for 2147483647 transient cores
-2019-12-10 23:00:20.600 INFO (main) [ ] o.a.s.h.a.MetricsHistoryHandler No .system collection, keeping metrics history in memory.
-2019-12-10 23:00:20.766 INFO (main) [ ] o.a.s.m.r.SolrJmxReporter JMX monitoring for 'solr.node' (registry 'solr.node') enabled at server: com.sun.jmx.mbeanserver.JmxMBeanServer@5d740a0f
-2019-12-10 23:00:20.767 INFO (main) [ ] o.a.s.m.r.SolrJmxReporter JMX monitoring for 'solr.jvm' (registry 'solr.jvm') enabled at server: com.sun.jmx.mbeanserver.JmxMBeanServer@5d740a0f
-2019-12-10 23:00:20.777 INFO (main) [ ] o.a.s.m.r.SolrJmxReporter JMX monitoring for 'solr.jetty' (registry 'solr.jetty') enabled at server: com.sun.jmx.mbeanserver.JmxMBeanServer@5d740a0f
-2019-12-10 23:00:20.851 INFO (main) [ ] o.a.s.c.CorePropertiesLocator Found 0 core definitions underneath C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr
-2019-12-10 23:00:21.244 INFO (main) [ ] o.e.j.s.h.ContextHandler Started o.e.j.w.WebAppContext@44821a96{/solr,file:///C:/Users/dash/Documents/Dash-Web/solr-8.3.1/server/solr-webapp/webapp/,AVAILABLE}{C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server/solr-webapp/webapp}
-2019-12-10 23:00:21.252 INFO (main) [ ] o.e.j.s.AbstractConnector Started ServerConnector@3b0090a4{HTTP/1.1,[http/1.1, h2c]}{0.0.0.0:8983}
-2019-12-10 23:00:21.252 INFO (main) [ ] o.e.j.s.Server Started @5201ms
-2019-12-10 23:00:27.011 INFO (qtp1010931249-18) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json} status=0 QTime=55
-2019-12-10 23:00:40.666 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={indexInfo=false&wt=json&_=1576018840418} status=0 QTime=1
-2019-12-10 23:00:40.685 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576018840418} status=0 QTime=16
-2019-12-10 23:00:40.705 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576018840418} status=0 QTime=15
-2019-12-10 23:04:46.872 INFO (qtp1010931249-23) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={indexInfo=false&wt=json&_=1576019086700} status=0 QTime=0
-2019-12-10 23:04:46.896 INFO (qtp1010931249-23) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576019086701} status=0 QTime=13
-2019-12-10 23:04:46.912 INFO (qtp1010931249-23) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576019086701} status=0 QTime=11
-2019-12-10 23:04:48.697 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={indexInfo=false&wt=json&_=1576019088535} status=0 QTime=0
-2019-12-10 23:04:48.731 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576019088537} status=0 QTime=19
-2019-12-10 23:04:48.746 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576019088537} status=0 QTime=14
-2019-12-10 23:04:52.741 INFO (qtp1010931249-19) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={indexInfo=false&wt=json&_=1576019092527} status=0 QTime=0
-2019-12-10 23:04:52.760 INFO (qtp1010931249-19) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576019092527} status=0 QTime=13
-2019-12-10 23:04:52.785 INFO (qtp1010931249-18) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576019092527} status=0 QTime=30
-2019-12-10 23:09:26.527 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={indexInfo=false&wt=json&_=1576019092527} status=0 QTime=0
-2019-12-10 23:09:26.545 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1576019092527} status=0 QTime=13
-2019-12-10 23:09:26.548 INFO (qtp1010931249-35) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={wt=json&_=1576019092527} status=0 QTime=0
-2019-12-10 23:09:40.449 INFO (qtp1010931249-14) [ x:dash] o.a.s.h.a.CoreAdminOperation core create command schema=schema.xml&dataDir=data&name=dash&action=CREATE&config=solrconfig.xml&instanceDir=dash&wt=json&_=1576019092527
-2019-12-10 23:09:40.477 ERROR (qtp1010931249-14) [ x:dash] o.a.s.h.RequestHandlerBase org.apache.solr.common.SolrException: Error CREATEing SolrCore 'dash': Unable to create core [dash] Caused by: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1201)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Unable to create core [dash]
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1272)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- ... 44 more
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- ... 45 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
-2019-12-10 23:09:40.477 INFO (qtp1010931249-14) [ x:dash] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={schema=schema.xml&dataDir=data&name=dash&action=CREATE&config=solrconfig.xml&instanceDir=dash&wt=json&_=1576019092527} status=400 QTime=29
-2019-12-10 23:10:20.705 ERROR (qtp1010931249-19) [ ] o.a.s.s.HttpSolrCall null:org.apache.solr.core.SolrCoreInitializationException: SolrCore 'dash' is not available due to init failure: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1740)
- at org.apache.solr.servlet.HttpSolrCall.init(HttpSolrCall.java:253)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:538)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- ... 36 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
-2019-12-10 23:10:25.081 ERROR (qtp1010931249-19) [ ] o.a.s.s.HttpSolrCall null:org.apache.solr.core.SolrCoreInitializationException: SolrCore 'dash' is not available due to init failure: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1740)
- at org.apache.solr.servlet.HttpSolrCall.init(HttpSolrCall.java:253)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:538)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- ... 36 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
-2019-12-10 23:10:25.098 ERROR (qtp1010931249-14) [ ] o.a.s.s.HttpSolrCall null:org.apache.solr.core.SolrCoreInitializationException: SolrCore 'dash' is not available due to init failure: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1740)
- at org.apache.solr.servlet.HttpSolrCall.init(HttpSolrCall.java:253)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:538)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- ... 36 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
-2019-12-10 23:10:25.106 ERROR (qtp1010931249-14) [ ] o.a.s.s.HttpSolrCall null:org.apache.solr.core.SolrCoreInitializationException: SolrCore 'dash' is not available due to init failure: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1740)
- at org.apache.solr.servlet.HttpSolrCall.init(HttpSolrCall.java:253)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:538)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- ... 36 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
-2019-12-10 23:10:25.111 ERROR (qtp1010931249-19) [ ] o.a.s.s.HttpSolrCall null:org.apache.solr.core.SolrCoreInitializationException: SolrCore 'dash' is not available due to init failure: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1740)
- at org.apache.solr.servlet.HttpSolrCall.init(HttpSolrCall.java:253)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:538)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- ... 36 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
-2019-12-10 23:11:34.319 ERROR (qtp1010931249-14) [ ] o.a.s.s.HttpSolrCall null:org.apache.solr.core.SolrCoreInitializationException: SolrCore 'dash' is not available due to init failure: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1740)
- at org.apache.solr.servlet.HttpSolrCall.init(HttpSolrCall.java:253)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:538)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- ... 36 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
-2019-12-10 23:11:34.335 ERROR (qtp1010931249-18) [ ] o.a.s.s.HttpSolrCall null:org.apache.solr.core.SolrCoreInitializationException: SolrCore 'dash' is not available due to init failure: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1740)
- at org.apache.solr.servlet.HttpSolrCall.init(HttpSolrCall.java:253)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:538)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- ... 36 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
-2019-12-10 23:11:34.338 ERROR (qtp1010931249-14) [ ] o.a.s.s.HttpSolrCall null:org.apache.solr.core.SolrCoreInitializationException: SolrCore 'dash' is not available due to init failure: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1740)
- at org.apache.solr.servlet.HttpSolrCall.init(HttpSolrCall.java:253)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:538)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)
- at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)
- at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
- at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
- at org.eclipse.jetty.server.Server.handle(Server.java:505)
- at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
- at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
- at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
- at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
- at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
- at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
- at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
- at java.lang.Thread.run(Unknown Source)
-Caused by: org.apache.solr.common.SolrException: Could not load conf for core dash: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:96)
- at org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1300)
- at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1247)
- at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1162)
- at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:93)
- at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:362)
- at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:397)
- at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:181)
- at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
- at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:839)
- at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:805)
- at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:558)
- ... 36 more
-Caused by: org.apache.solr.common.SolrException: Error loading solr config from C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash\conf\solrconfig.xml
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:190)
- at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:108)
- at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:90)
- ... 47 more
-Caused by: org.apache.solr.core.SolrResourceNotFoundException: Can't find resource 'solrconfig.xml' in classpath or 'C:\Users\dash\Documents\Dash-Web\solr-8.3.1\server\solr\dash'
- at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407)
- at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:362)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:117)
- at org.apache.solr.core.XmlConfigFile.<init>(XmlConfigFile.java:87)
- at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:205)
- at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:182)
- ... 49 more
-
diff --git a/solr-8.3.1/server/logs/solr_gc.log.0.current b/solr-8.3.1/server/logs/solr_gc.log.0.current
deleted file mode 100644
index 79bace5fe..000000000
--- a/solr-8.3.1/server/logs/solr_gc.log.0.current
+++ /dev/null
@@ -1,369 +0,0 @@
-Java HotSpot(TM) 64-Bit Server VM (25.211-b12) for windows-amd64 JRE (1.8.0_211-b12), built on Apr 1 2019 20:53:26 by "java_re" with MS VC++ 10.0 (VS2010)
-Memory: 4k page, physical 7339572k(4615672k free), swap 8519220k(5755496k free)
-CommandLine flags: -XX:+AlwaysPreTouch -XX:GCLogFileSize=20971520 -XX:InitialHeapSize=536870912 -XX:MaxGCPauseMillis=250 -XX:MaxHeapSize=536870912 -XX:NumberOfGCLogFiles=9 -XX:OnOutOfMemoryError=C:/Users/dash/Documents/Dash-Web/solr-8.3.1/bin/oom_solr.sh 8983 /c/Users/dash/Documents/Dash-Web/solr-8.3.1/server/logs -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:ThreadStackSize=256 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:+UseGCLogFileRotation -XX:-UseLargePages -XX:-UseLargePagesIndividualAllocation
-2019-12-10T18:00:16.490-0500: 0.440: Total time for which application threads were stopped: 0.0002174 seconds, Stopping threads took: 0.0000209 seconds
-2019-12-10T18:00:16.650-0500: 0.600: Total time for which application threads were stopped: 0.0001302 seconds, Stopping threads took: 0.0000215 seconds
-2019-12-10T18:00:16.842-0500: 0.792: Total time for which application threads were stopped: 0.0002254 seconds, Stopping threads took: 0.0000360 seconds
-2019-12-10T18:00:16.922-0500: 0.872: Total time for which application threads were stopped: 0.0001570 seconds, Stopping threads took: 0.0000336 seconds
-{Heap before GC invocations=0 (full 0):
- garbage-first heap total 524288K, used 25600K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 25 young (25600K), 0 survivors (0K)
- Metaspace used 9693K, capacity 9956K, committed 10112K, reserved 1058816K
- class space used 1208K, capacity 1284K, committed 1408K, reserved 1048576K
-2019-12-10T18:00:17.118-0500: 1.068: [GC pause (G1 Evacuation Pause) (young)
-Desired survivor size 2097152 bytes, new threshold 15 (max 15)
-, 0.0072626 secs]
- [Parallel Time: 5.5 ms, GC Workers: 2]
- [GC Worker Start (ms): Min: 1068.4, Avg: 1068.5, Max: 1068.6, Diff: 0.2]
- [Ext Root Scanning (ms): Min: 0.9, Avg: 1.1, Max: 1.2, Diff: 0.3, Sum: 2.1]
- [Update RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [Processed Buffers: Min: 0, Avg: 0.0, Max: 0, Diff: 0, Sum: 0]
- [Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [Code Root Scanning (ms): Min: 0.1, Avg: 0.2, Max: 0.3, Diff: 0.2, Sum: 0.5]
- [Object Copy (ms): Min: 4.0, Avg: 4.0, Max: 4.0, Diff: 0.0, Sum: 8.0]
- [Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 2]
- [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
- [GC Worker Total (ms): Min: 5.2, Avg: 5.3, Max: 5.4, Diff: 0.2, Sum: 10.7]
- [GC Worker End (ms): Min: 1073.8, Avg: 1073.8, Max: 1073.8, Diff: 0.0]
- [Code Root Fixup: 0.0 ms]
- [Code Root Purge: 0.0 ms]
- [Clear CT: 0.0 ms]
- [Other: 1.7 ms]
- [Choose CSet: 0.0 ms]
- [Ref Proc: 1.4 ms]
- [Ref Enq: 0.1 ms]
- [Redirty Cards: 0.1 ms]
- [Humongous Register: 0.0 ms]
- [Humongous Reclaim: 0.0 ms]
- [Free CSet: 0.1 ms]
- [Eden: 25.0M(25.0M)->0.0B(21.0M) Survivors: 0.0B->4096.0K Heap: 25.0M(512.0M)->4808.5K(512.0M)]
-Heap after GC invocations=1 (full 0):
- garbage-first heap total 524288K, used 4808K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 4 young (4096K), 4 survivors (4096K)
- Metaspace used 9693K, capacity 9956K, committed 10112K, reserved 1058816K
- class space used 1208K, capacity 1284K, committed 1408K, reserved 1048576K
-}
- [Times: user=0.00 sys=0.00, real=0.01 secs]
-2019-12-10T18:00:17.126-0500: 1.076: Total time for which application threads were stopped: 0.0078706 seconds, Stopping threads took: 0.0000635 seconds
-2019-12-10T18:00:17.161-0500: 1.111: Total time for which application threads were stopped: 0.0001474 seconds, Stopping threads took: 0.0000168 seconds
-2019-12-10T18:00:17.307-0500: 1.257: Total time for which application threads were stopped: 0.0002319 seconds, Stopping threads took: 0.0000357 seconds
-{Heap before GC invocations=1 (full 0):
- garbage-first heap total 524288K, used 28360K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 25 young (25600K), 4 survivors (4096K)
- Metaspace used 14299K, capacity 14600K, committed 14720K, reserved 1062912K
- class space used 1804K, capacity 1903K, committed 1920K, reserved 1048576K
-2019-12-10T18:00:17.625-0500: 1.575: [GC pause (G1 Evacuation Pause) (young)
-Desired survivor size 2097152 bytes, new threshold 1 (max 15)
-- age 1: 2345864 bytes, 2345864 total
-, 0.0236890 secs]
- [Parallel Time: 22.5 ms, GC Workers: 2]
- [GC Worker Start (ms): Min: 1575.2, Avg: 1575.2, Max: 1575.2, Diff: 0.0]
- [Ext Root Scanning (ms): Min: 0.9, Avg: 1.0, Max: 1.2, Diff: 0.3, Sum: 2.1]
- [Update RS (ms): Min: 0.8, Avg: 0.8, Max: 0.9, Diff: 0.0, Sum: 1.7]
- [Processed Buffers: Min: 1, Avg: 1.5, Max: 2, Diff: 1, Sum: 3]
- [Scan RS (ms): Min: 0.1, Avg: 1.4, Max: 2.6, Diff: 2.5, Sum: 2.8]
- [Code Root Scanning (ms): Min: 0.0, Avg: 1.6, Max: 3.1, Diff: 3.1, Sum: 3.1]
- [Object Copy (ms): Min: 17.5, Avg: 17.6, Max: 17.8, Diff: 0.3, Sum: 35.3]
- [Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 2]
- [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [GC Worker Total (ms): Min: 22.5, Avg: 22.5, Max: 22.5, Diff: 0.0, Sum: 44.9]
- [GC Worker End (ms): Min: 1597.7, Avg: 1597.7, Max: 1597.7, Diff: 0.0]
- [Code Root Fixup: 0.0 ms]
- [Code Root Purge: 0.0 ms]
- [Clear CT: 0.0 ms]
- [Other: 1.1 ms]
- [Choose CSet: 0.0 ms]
- [Ref Proc: 0.8 ms]
- [Ref Enq: 0.1 ms]
- [Redirty Cards: 0.0 ms]
- [Humongous Register: 0.1 ms]
- [Humongous Reclaim: 0.0 ms]
- [Free CSet: 0.1 ms]
- [Eden: 21.0M(21.0M)->0.0B(21.0M) Survivors: 4096.0K->4096.0K Heap: 27.7M(512.0M)->14.7M(512.0M)]
-Heap after GC invocations=2 (full 0):
- garbage-first heap total 524288K, used 15040K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 4 young (4096K), 4 survivors (4096K)
- Metaspace used 14299K, capacity 14600K, committed 14720K, reserved 1062912K
- class space used 1804K, capacity 1903K, committed 1920K, reserved 1048576K
-}
- [Times: user=0.06 sys=0.00, real=0.02 secs]
-2019-12-10T18:00:17.649-0500: 1.599: Total time for which application threads were stopped: 0.0240493 seconds, Stopping threads took: 0.0000243 seconds
-2019-12-10T18:00:17.927-0500: 1.877: Total time for which application threads were stopped: 0.0025994 seconds, Stopping threads took: 0.0023659 seconds
-2019-12-10T18:00:17.938-0500: 1.888: Total time for which application threads were stopped: 0.0001370 seconds, Stopping threads took: 0.0000173 seconds
-2019-12-10T18:00:18.038-0500: 1.988: Total time for which application threads were stopped: 0.0002861 seconds, Stopping threads took: 0.0000236 seconds
-{Heap before GC invocations=2 (full 0):
- garbage-first heap total 524288K, used 36544K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 25 young (25600K), 4 survivors (4096K)
- Metaspace used 17797K, capacity 18080K, committed 18304K, reserved 1064960K
- class space used 2204K, capacity 2315K, committed 2432K, reserved 1048576K
-2019-12-10T18:00:18.298-0500: 2.247: [GC pause (G1 Evacuation Pause) (young)
-Desired survivor size 2097152 bytes, new threshold 1 (max 15)
-- age 1: 4148416 bytes, 4148416 total
-, 0.0153142 secs]
- [Parallel Time: 13.5 ms, GC Workers: 2]
- [GC Worker Start (ms): Min: 2247.5, Avg: 2247.5, Max: 2247.5, Diff: 0.0]
- [Ext Root Scanning (ms): Min: 1.3, Avg: 1.3, Max: 1.3, Diff: 0.0, Sum: 2.6]
- [Update RS (ms): Min: 0.4, Avg: 0.5, Max: 0.6, Diff: 0.2, Sum: 1.0]
- [Processed Buffers: Min: 2, Avg: 4.5, Max: 7, Diff: 5, Sum: 9]
- [Scan RS (ms): Min: 1.3, Avg: 1.3, Max: 1.4, Diff: 0.1, Sum: 2.7]
- [Code Root Scanning (ms): Min: 0.0, Avg: 0.2, Max: 0.3, Diff: 0.3, Sum: 0.3]
- [Object Copy (ms): Min: 10.1, Avg: 10.2, Max: 10.3, Diff: 0.2, Sum: 20.3]
- [Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 2]
- [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [GC Worker Total (ms): Min: 13.5, Avg: 13.5, Max: 13.5, Diff: 0.0, Sum: 26.9]
- [GC Worker End (ms): Min: 2261.0, Avg: 2261.0, Max: 2261.0, Diff: 0.0]
- [Code Root Fixup: 0.0 ms]
- [Code Root Purge: 0.0 ms]
- [Clear CT: 0.1 ms]
- [Other: 1.7 ms]
- [Choose CSet: 0.0 ms]
- [Ref Proc: 1.4 ms]
- [Ref Enq: 0.1 ms]
- [Redirty Cards: 0.0 ms]
- [Humongous Register: 0.0 ms]
- [Humongous Reclaim: 0.0 ms]
- [Free CSet: 0.1 ms]
- [Eden: 21.0M(21.0M)->0.0B(38.0M) Survivors: 4096.0K->4096.0K Heap: 35.7M(512.0M)->19.5M(512.0M)]
-Heap after GC invocations=3 (full 0):
- garbage-first heap total 524288K, used 19968K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 4 young (4096K), 4 survivors (4096K)
- Metaspace used 17797K, capacity 18080K, committed 18304K, reserved 1064960K
- class space used 2204K, capacity 2315K, committed 2432K, reserved 1048576K
-}
- [Times: user=0.03 sys=0.00, real=0.01 secs]
-2019-12-10T18:00:18.313-0500: 2.263: Total time for which application threads were stopped: 0.0156491 seconds, Stopping threads took: 0.0000752 seconds
-2019-12-10T18:00:18.722-0500: 2.672: Total time for which application threads were stopped: 0.0003732 seconds, Stopping threads took: 0.0000411 seconds
-{Heap before GC invocations=3 (full 0):
- garbage-first heap total 524288K, used 58880K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 42 young (43008K), 4 survivors (4096K)
- Metaspace used 18940K, capacity 19388K, committed 19712K, reserved 1067008K
- class space used 2349K, capacity 2493K, committed 2560K, reserved 1048576K
-2019-12-10T18:00:18.831-0500: 2.781: [GC pause (G1 Evacuation Pause) (young)
-Desired survivor size 3145728 bytes, new threshold 15 (max 15)
-- age 1: 1355992 bytes, 1355992 total
-, 0.0121758 secs]
- [Parallel Time: 10.5 ms, GC Workers: 2]
- [GC Worker Start (ms): Min: 2780.9, Avg: 2786.1, Max: 2791.4, Diff: 10.5]
- [Ext Root Scanning (ms): Min: 0.0, Avg: 0.8, Max: 1.7, Diff: 1.7, Sum: 1.7]
- [Update RS (ms): Min: 0.0, Avg: 1.0, Max: 1.9, Diff: 1.9, Sum: 1.9]
- [Processed Buffers: Min: 0, Avg: 5.0, Max: 10, Diff: 10, Sum: 10]
- [Scan RS (ms): Min: 0.0, Avg: 0.2, Max: 0.5, Diff: 0.5, Sum: 0.5]
- [Code Root Scanning (ms): Min: 0.0, Avg: 0.2, Max: 0.4, Diff: 0.4, Sum: 0.4]
- [Object Copy (ms): Min: 0.0, Avg: 3.0, Max: 6.0, Diff: 6.0, Sum: 6.0]
- [Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 0.1]
- [Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 2]
- [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [GC Worker Total (ms): Min: 0.0, Avg: 5.3, Max: 10.5, Diff: 10.5, Sum: 10.5]
- [GC Worker End (ms): Min: 2791.4, Avg: 2791.4, Max: 2791.4, Diff: 0.0]
- [Code Root Fixup: 0.0 ms]
- [Code Root Purge: 0.0 ms]
- [Clear CT: 0.0 ms]
- [Other: 1.6 ms]
- [Choose CSet: 0.0 ms]
- [Ref Proc: 1.4 ms]
- [Ref Enq: 0.0 ms]
- [Redirty Cards: 0.0 ms]
- [Humongous Register: 0.0 ms]
- [Humongous Reclaim: 0.0 ms]
- [Free CSet: 0.0 ms]
- [Eden: 38.0M(38.0M)->0.0B(302.0M) Survivors: 4096.0K->5120.0K Heap: 57.5M(512.0M)->20.5M(512.0M)]
-Heap after GC invocations=4 (full 0):
- garbage-first heap total 524288K, used 20992K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 5 young (5120K), 5 survivors (5120K)
- Metaspace used 18940K, capacity 19388K, committed 19712K, reserved 1067008K
- class space used 2349K, capacity 2493K, committed 2560K, reserved 1048576K
-}
- [Times: user=0.03 sys=0.00, real=0.01 secs]
-2019-12-10T18:00:18.843-0500: 2.793: Total time for which application threads were stopped: 0.0124664 seconds, Stopping threads took: 0.0000362 seconds
-2019-12-10T18:00:18.959-0500: 2.909: Total time for which application threads were stopped: 0.0004038 seconds, Stopping threads took: 0.0000266 seconds
-2019-12-10T18:00:18.961-0500: 2.911: Total time for which application threads were stopped: 0.0002282 seconds, Stopping threads took: 0.0000255 seconds
-{Heap before GC invocations=4 (full 0):
- garbage-first heap total 524288K, used 34304K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 19 young (19456K), 5 survivors (5120K)
- Metaspace used 20744K, capacity 21132K, committed 21296K, reserved 1069056K
- class space used 2571K, capacity 2687K, committed 2688K, reserved 1048576K
-2019-12-10T18:00:19.008-0500: 2.957: [GC pause (Metadata GC Threshold) (young) (initial-mark)
-Desired survivor size 20447232 bytes, new threshold 15 (max 15)
-- age 1: 1303592 bytes, 1303592 total
-- age 2: 1312120 bytes, 2615712 total
-, 0.0058175 secs]
- [Parallel Time: 4.9 ms, GC Workers: 2]
- [GC Worker Start (ms): Min: 2957.7, Avg: 2957.7, Max: 2957.7, Diff: 0.0]
- [Ext Root Scanning (ms): Min: 1.1, Avg: 1.2, Max: 1.3, Diff: 0.2, Sum: 2.4]
- [Update RS (ms): Min: 0.5, Avg: 0.6, Max: 0.6, Diff: 0.1, Sum: 1.1]
- [Processed Buffers: Min: 3, Avg: 4.0, Max: 5, Diff: 2, Sum: 8]
- [Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [Code Root Scanning (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 0.2]
- [Object Copy (ms): Min: 3.0, Avg: 3.0, Max: 3.0, Diff: 0.1, Sum: 6.0]
- [Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 2]
- [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
- [GC Worker Total (ms): Min: 4.9, Avg: 4.9, Max: 4.9, Diff: 0.0, Sum: 9.8]
- [GC Worker End (ms): Min: 2962.6, Avg: 2962.6, Max: 2962.6, Diff: 0.0]
- [Code Root Fixup: 0.0 ms]
- [Code Root Purge: 0.0 ms]
- [Clear CT: 0.0 ms]
- [Other: 0.9 ms]
- [Choose CSet: 0.0 ms]
- [Ref Proc: 0.6 ms]
- [Ref Enq: 0.0 ms]
- [Redirty Cards: 0.0 ms]
- [Humongous Register: 0.0 ms]
- [Humongous Reclaim: 0.0 ms]
- [Free CSet: 0.0 ms]
- [Eden: 14.0M(302.0M)->0.0B(303.0M) Survivors: 5120.0K->4096.0K Heap: 34.0M(512.0M)->19.5M(512.0M)]
-Heap after GC invocations=5 (full 0):
- garbage-first heap total 524288K, used 19968K [0x00000000e0000000, 0x00000000e0101000, 0x0000000100000000)
- region size 1024K, 4 young (4096K), 4 survivors (4096K)
- Metaspace used 20744K, capacity 21132K, committed 21296K, reserved 1069056K
- class space used 2571K, capacity 2687K, committed 2688K, reserved 1048576K
-}
- [Times: user=0.00 sys=0.00, real=0.01 secs]
-2019-12-10T18:00:19.014-0500: 2.963: [GC concurrent-root-region-scan-start]
-2019-12-10T18:00:19.014-0500: 2.964: Total time for which application threads were stopped: 0.0062704 seconds, Stopping threads took: 0.0000366 seconds
-2019-12-10T18:00:19.017-0500: 2.966: [GC concurrent-root-region-scan-end, 0.0030128 secs]
-2019-12-10T18:00:19.017-0500: 2.967: [GC concurrent-mark-start]
-2019-12-10T18:00:19.054-0500: 3.004: [GC concurrent-mark-end, 0.0369341 secs]
-2019-12-10T18:00:19.074-0500: 3.024: [GC remark 2019-12-10T18:00:19.074-0500: 3.024: [Finalize Marking, 0.0000591 secs] 2019-12-10T18:00:19.074-0500: 3.024: [GC ref-proc, 0.0004678 secs] 2019-12-10T18:00:19.075-0500: 3.024: [Unloading, 0.0050618 secs], 0.0058746 secs]
- [Times: user=0.00 sys=0.00, real=0.01 secs]
-2019-12-10T18:00:19.080-0500: 3.030: Total time for which application threads were stopped: 0.0060372 seconds, Stopping threads took: 0.0000774 seconds
-2019-12-10T18:00:19.080-0500: 3.030: [GC cleanup 25M->24M(512M), 0.0006816 secs]
- [Times: user=0.00 sys=0.00, real=0.00 secs]
-2019-12-10T18:00:19.081-0500: 3.031: Total time for which application threads were stopped: 0.0007705 seconds, Stopping threads took: 0.0000244 seconds
-2019-12-10T18:00:19.081-0500: 3.031: [GC concurrent-cleanup-start]
-2019-12-10T18:00:19.081-0500: 3.031: [GC concurrent-cleanup-end, 0.0000153 secs]
-2019-12-10T18:00:19.516-0500: 3.466: Total time for which application threads were stopped: 0.0004024 seconds, Stopping threads took: 0.0000412 seconds
-2019-12-10T18:00:19.527-0500: 3.477: Total time for which application threads were stopped: 0.0002788 seconds, Stopping threads took: 0.0000323 seconds
-2019-12-10T18:00:19.528-0500: 3.478: Total time for which application threads were stopped: 0.0002128 seconds, Stopping threads took: 0.0000293 seconds
-2019-12-10T18:00:19.538-0500: 3.488: Total time for which application threads were stopped: 0.0001682 seconds, Stopping threads took: 0.0000339 seconds
-2019-12-10T18:00:19.613-0500: 3.563: Total time for which application threads were stopped: 0.0003252 seconds, Stopping threads took: 0.0000396 seconds
-2019-12-10T18:00:19.841-0500: 3.791: Total time for which application threads were stopped: 0.0004460 seconds, Stopping threads took: 0.0000579 seconds
-2019-12-10T18:00:20.405-0500: 4.355: Total time for which application threads were stopped: 0.0007422 seconds, Stopping threads took: 0.0003526 seconds
-2019-12-10T18:00:20.432-0500: 4.382: Total time for which application threads were stopped: 0.0004368 seconds, Stopping threads took: 0.0000437 seconds
-2019-12-10T18:00:20.706-0500: 4.656: Total time for which application threads were stopped: 0.0002155 seconds, Stopping threads took: 0.0000443 seconds
-2019-12-10T18:00:20.706-0500: 4.656: Total time for which application threads were stopped: 0.0000820 seconds, Stopping threads took: 0.0000282 seconds
-2019-12-10T18:00:20.707-0500: 4.657: Total time for which application threads were stopped: 0.0000918 seconds, Stopping threads took: 0.0000257 seconds
-2019-12-10T18:00:20.707-0500: 4.657: Total time for which application threads were stopped: 0.0000728 seconds, Stopping threads took: 0.0000240 seconds
-2019-12-10T18:00:20.880-0500: 4.830: Total time for which application threads were stopped: 0.0002158 seconds, Stopping threads took: 0.0000567 seconds
-2019-12-10T18:00:21.251-0500: 5.201: Total time for which application threads were stopped: 0.0001219 seconds, Stopping threads took: 0.0000385 seconds
-2019-12-10T18:00:21.253-0500: 5.203: Total time for which application threads were stopped: 0.0000526 seconds, Stopping threads took: 0.0000270 seconds
-2019-12-10T18:00:21.253-0500: 5.203: Total time for which application threads were stopped: 0.0000362 seconds, Stopping threads took: 0.0000184 seconds
-2019-12-10T18:00:23.254-0500: 7.204: Total time for which application threads were stopped: 0.0001608 seconds, Stopping threads took: 0.0000297 seconds
-2019-12-10T18:00:26.855-0500: 10.805: Total time for which application threads were stopped: 0.0001221 seconds, Stopping threads took: 0.0000286 seconds
-2019-12-10T18:00:26.855-0500: 10.805: Total time for which application threads were stopped: 0.0000432 seconds, Stopping threads took: 0.0000156 seconds
-2019-12-10T18:00:26.867-0500: 10.817: Total time for which application threads were stopped: 0.0000581 seconds, Stopping threads took: 0.0000188 seconds
-2019-12-10T18:00:26.867-0500: 10.818: Total time for which application threads were stopped: 0.0000387 seconds, Stopping threads took: 0.0000119 seconds
-2019-12-10T18:00:26.884-0500: 10.834: Total time for which application threads were stopped: 0.0004423 seconds, Stopping threads took: 0.0000164 seconds
-2019-12-10T18:00:26.994-0500: 10.944: Total time for which application threads were stopped: 0.0001028 seconds, Stopping threads took: 0.0000365 seconds
-2019-12-10T18:00:26.994-0500: 10.944: Total time for which application threads were stopped: 0.0000750 seconds, Stopping threads took: 0.0000202 seconds
-2019-12-10T18:00:26.994-0500: 10.944: Total time for which application threads were stopped: 0.0000416 seconds, Stopping threads took: 0.0000135 seconds
-2019-12-10T18:00:26.995-0500: 10.944: Total time for which application threads were stopped: 0.0000391 seconds, Stopping threads took: 0.0000123 seconds
-2019-12-10T18:00:26.995-0500: 10.945: Total time for which application threads were stopped: 0.0000466 seconds, Stopping threads took: 0.0000240 seconds
-2019-12-10T18:00:26.995-0500: 10.945: Total time for which application threads were stopped: 0.0000742 seconds, Stopping threads took: 0.0000421 seconds
-2019-12-10T18:00:26.995-0500: 10.946: Total time for which application threads were stopped: 0.0001412 seconds, Stopping threads took: 0.0000569 seconds
-2019-12-10T18:00:26.995-0500: 10.946: Total time for which application threads were stopped: 0.0000417 seconds, Stopping threads took: 0.0000119 seconds
-2019-12-10T18:00:26.996-0500: 10.946: Total time for which application threads were stopped: 0.0000878 seconds, Stopping threads took: 0.0000277 seconds
-2019-12-10T18:00:26.996-0500: 10.946: Total time for which application threads were stopped: 0.0000355 seconds, Stopping threads took: 0.0000114 seconds
-2019-12-10T18:00:26.996-0500: 10.947: Total time for which application threads were stopped: 0.0000334 seconds, Stopping threads took: 0.0000104 seconds
-2019-12-10T18:00:26.996-0500: 10.947: Total time for which application threads were stopped: 0.0000332 seconds, Stopping threads took: 0.0000104 seconds
-2019-12-10T18:00:26.996-0500: 10.947: Total time for which application threads were stopped: 0.0000335 seconds, Stopping threads took: 0.0000102 seconds
-2019-12-10T18:00:26.996-0500: 10.947: Total time for which application threads were stopped: 0.0000335 seconds, Stopping threads took: 0.0000105 seconds
-2019-12-10T18:00:26.997-0500: 10.947: Total time for which application threads were stopped: 0.0000365 seconds, Stopping threads took: 0.0000120 seconds
-2019-12-10T18:00:26.997-0500: 10.948: Total time for which application threads were stopped: 0.0000343 seconds, Stopping threads took: 0.0000113 seconds
-2019-12-10T18:00:26.997-0500: 10.948: Total time for which application threads were stopped: 0.0000915 seconds, Stopping threads took: 0.0000611 seconds
-2019-12-10T18:00:26.997-0500: 10.948: Total time for which application threads were stopped: 0.0000438 seconds, Stopping threads took: 0.0000199 seconds
-2019-12-10T18:00:26.998-0500: 10.948: Total time for which application threads were stopped: 0.0001053 seconds, Stopping threads took: 0.0000520 seconds
-2019-12-10T18:00:26.998-0500: 10.948: Total time for which application threads were stopped: 0.0000792 seconds, Stopping threads took: 0.0000511 seconds
-2019-12-10T18:00:26.998-0500: 10.948: Total time for which application threads were stopped: 0.0000944 seconds, Stopping threads took: 0.0000646 seconds
-2019-12-10T18:00:26.998-0500: 10.949: Total time for which application threads were stopped: 0.0001188 seconds, Stopping threads took: 0.0000644 seconds
-2019-12-10T18:00:27.008-0500: 10.959: Total time for which application threads were stopped: 0.0001008 seconds, Stopping threads took: 0.0000600 seconds
-2019-12-10T18:00:27.009-0500: 10.959: Total time for which application threads were stopped: 0.0000830 seconds, Stopping threads took: 0.0000535 seconds
-2019-12-10T18:00:27.009-0500: 10.959: Total time for which application threads were stopped: 0.0002464 seconds, Stopping threads took: 0.0000749 seconds
-2019-12-10T18:00:27.009-0500: 10.959: Total time for which application threads were stopped: 0.0002028 seconds, Stopping threads took: 0.0001646 seconds
-2019-12-10T18:00:27.010-0500: 10.961: Total time for which application threads were stopped: 0.0001106 seconds, Stopping threads took: 0.0000757 seconds
-2019-12-10T18:00:27.014-0500: 10.965: Total time for which application threads were stopped: 0.0000868 seconds, Stopping threads took: 0.0000452 seconds
-2019-12-10T18:00:27.015-0500: 10.965: Total time for which application threads were stopped: 0.0000940 seconds, Stopping threads took: 0.0000502 seconds
-2019-12-10T18:00:27.080-0500: 11.031: Total time for which application threads were stopped: 0.0001740 seconds, Stopping threads took: 0.0000362 seconds
-2019-12-10T18:00:27.082-0500: 11.032: Total time for which application threads were stopped: 0.0000733 seconds, Stopping threads took: 0.0000305 seconds
-2019-12-10T18:00:36.994-0500: 20.945: Total time for which application threads were stopped: 0.0001168 seconds, Stopping threads took: 0.0000376 seconds
-2019-12-10T18:00:36.996-0500: 20.947: Total time for which application threads were stopped: 0.0000522 seconds, Stopping threads took: 0.0000195 seconds
-2019-12-10T18:00:36.997-0500: 20.947: Total time for which application threads were stopped: 0.0001105 seconds, Stopping threads took: 0.0000639 seconds
-2019-12-10T18:00:36.997-0500: 20.948: Total time for which application threads were stopped: 0.0000966 seconds, Stopping threads took: 0.0000499 seconds
-2019-12-10T18:00:36.997-0500: 20.948: Total time for which application threads were stopped: 0.0001053 seconds, Stopping threads took: 0.0000715 seconds
-2019-12-10T18:00:36.997-0500: 20.948: Total time for which application threads were stopped: 0.0000857 seconds, Stopping threads took: 0.0000472 seconds
-2019-12-10T18:00:36.997-0500: 20.948: Total time for which application threads were stopped: 0.0000985 seconds, Stopping threads took: 0.0000583 seconds
-2019-12-10T18:00:37.016-0500: 20.966: Total time for which application threads were stopped: 0.0001050 seconds, Stopping threads took: 0.0000519 seconds
-2019-12-10T18:00:37.023-0500: 20.973: Total time for which application threads were stopped: 0.0001270 seconds, Stopping threads took: 0.0000701 seconds
-2019-12-10T18:00:37.023-0500: 20.973: Total time for which application threads were stopped: 0.0000467 seconds, Stopping threads took: 0.0000217 seconds
-2019-12-10T18:00:37.023-0500: 20.973: Total time for which application threads were stopped: 0.0000459 seconds, Stopping threads took: 0.0000190 seconds
-2019-12-10T18:00:37.023-0500: 20.973: Total time for which application threads were stopped: 0.0000418 seconds, Stopping threads took: 0.0000189 seconds
-2019-12-10T18:00:37.023-0500: 20.973: Total time for which application threads were stopped: 0.0000489 seconds, Stopping threads took: 0.0000231 seconds
-2019-12-10T18:00:37.023-0500: 20.974: Total time for which application threads were stopped: 0.0000392 seconds, Stopping threads took: 0.0000177 seconds
-2019-12-10T18:00:37.023-0500: 20.974: Total time for which application threads were stopped: 0.0000413 seconds, Stopping threads took: 0.0000169 seconds
-2019-12-10T18:00:37.023-0500: 20.974: Total time for which application threads were stopped: 0.0000435 seconds, Stopping threads took: 0.0000182 seconds
-2019-12-10T18:00:37.023-0500: 20.974: Total time for which application threads were stopped: 0.0000404 seconds, Stopping threads took: 0.0000186 seconds
-2019-12-10T18:00:37.023-0500: 20.974: Total time for which application threads were stopped: 0.0000382 seconds, Stopping threads took: 0.0000171 seconds
-2019-12-10T18:00:37.023-0500: 20.974: Total time for which application threads were stopped: 0.0001023 seconds, Stopping threads took: 0.0000444 seconds
-2019-12-10T18:00:37.023-0500: 20.974: Total time for which application threads were stopped: 0.0000645 seconds, Stopping threads took: 0.0000417 seconds
-2019-12-10T18:00:37.024-0500: 20.974: Total time for which application threads were stopped: 0.0001846 seconds, Stopping threads took: 0.0000267 seconds
-2019-12-10T18:00:37.058-0500: 21.009: Total time for which application threads were stopped: 0.0001436 seconds, Stopping threads took: 0.0000760 seconds
-2019-12-10T18:00:37.071-0500: 21.022: Total time for which application threads were stopped: 0.0000907 seconds, Stopping threads took: 0.0000258 seconds
-2019-12-10T18:00:37.142-0500: 21.092: Total time for which application threads were stopped: 0.0002202 seconds, Stopping threads took: 0.0000732 seconds
-2019-12-10T18:00:37.142-0500: 21.092: Total time for which application threads were stopped: 0.0000717 seconds, Stopping threads took: 0.0000384 seconds
-2019-12-10T18:00:37.142-0500: 21.093: Total time for which application threads were stopped: 0.0000875 seconds, Stopping threads took: 0.0000561 seconds
-2019-12-10T18:00:37.143-0500: 21.094: Total time for which application threads were stopped: 0.0000634 seconds, Stopping threads took: 0.0000289 seconds
-2019-12-10T18:00:37.143-0500: 21.094: Total time for which application threads were stopped: 0.0000464 seconds, Stopping threads took: 0.0000179 seconds
-2019-12-10T18:00:37.144-0500: 21.094: Total time for which application threads were stopped: 0.0000595 seconds, Stopping threads took: 0.0000273 seconds
-2019-12-10T18:00:37.144-0500: 21.095: Total time for which application threads were stopped: 0.0000457 seconds, Stopping threads took: 0.0000165 seconds
-2019-12-10T18:00:37.144-0500: 21.095: Total time for which application threads were stopped: 0.0000510 seconds, Stopping threads took: 0.0000234 seconds
-2019-12-10T18:00:37.154-0500: 21.105: Total time for which application threads were stopped: 0.0001106 seconds, Stopping threads took: 0.0000468 seconds
-2019-12-10T18:00:37.187-0500: 21.138: Total time for which application threads were stopped: 0.0077135 seconds, Stopping threads took: 0.0075820 seconds
-2019-12-10T18:00:37.209-0500: 21.159: Total time for which application threads were stopped: 0.0001567 seconds, Stopping threads took: 0.0000282 seconds
-2019-12-10T18:00:37.217-0500: 21.168: Total time for which application threads were stopped: 0.0001537 seconds, Stopping threads took: 0.0000335 seconds
-2019-12-10T18:00:37.231-0500: 21.182: Total time for which application threads were stopped: 0.0001429 seconds, Stopping threads took: 0.0000309 seconds
-2019-12-10T18:00:37.234-0500: 21.185: Total time for which application threads were stopped: 0.0001291 seconds, Stopping threads took: 0.0000354 seconds
-2019-12-10T18:00:37.235-0500: 21.185: Total time for which application threads were stopped: 0.0003605 seconds, Stopping threads took: 0.0001275 seconds
-2019-12-10T18:00:37.385-0500: 21.336: Total time for which application threads were stopped: 0.0039647 seconds, Stopping threads took: 0.0038443 seconds
-2019-12-10T18:00:37.396-0500: 21.347: Total time for which application threads were stopped: 0.0002697 seconds, Stopping threads took: 0.0002063 seconds
-2019-12-10T18:00:38.421-0500: 22.370: Total time for which application threads were stopped: 0.0001487 seconds, Stopping threads took: 0.0000318 seconds
-2019-12-10T18:00:39.838-0500: 23.789: Total time for which application threads were stopped: 0.0002229 seconds, Stopping threads took: 0.0001513 seconds
-2019-12-10T18:00:39.844-0500: 23.794: Total time for which application threads were stopped: 0.0000662 seconds, Stopping threads took: 0.0000238 seconds
-2019-12-10T18:00:39.850-0500: 23.800: Total time for which application threads were stopped: 0.0001588 seconds, Stopping threads took: 0.0000207 seconds
-2019-12-10T18:00:40.850-0500: 24.800: Total time for which application threads were stopped: 0.0002526 seconds, Stopping threads took: 0.0000314 seconds
-2019-12-10T18:00:45.853-0500: 29.803: Total time for which application threads were stopped: 0.0001398 seconds, Stopping threads took: 0.0000281 seconds
-2019-12-10T18:01:15.868-0500: 59.818: Total time for which application threads were stopped: 0.0000979 seconds, Stopping threads took: 0.0000322 seconds
-2019-12-10T18:01:16.869-0500: 60.819: Total time for which application threads were stopped: 0.0001200 seconds, Stopping threads took: 0.0000506 seconds
-2019-12-10T18:01:17.872-0500: 61.822: Total time for which application threads were stopped: 0.0001333 seconds, Stopping threads took: 0.0000486 seconds
-2019-12-10T18:01:18.872-0500: 62.822: Total time for which application threads were stopped: 0.0001093 seconds, Stopping threads took: 0.0000342 seconds
-2019-12-10T18:01:20.606-0500: 64.556: Total time for which application threads were stopped: 0.0001249 seconds, Stopping threads took: 0.0000316 seconds
-2019-12-10T18:01:20.611-0500: 64.561: Total time for which application threads were stopped: 0.0001504 seconds, Stopping threads took: 0.0001045 seconds
-2019-12-10T18:01:20.612-0500: 64.562: Total time for which application threads were stopped: 0.0002104 seconds, Stopping threads took: 0.0000720 seconds
-2019-12-10T18:01:20.634-0500: 64.584: Total time for which application threads were stopped: 0.0005949 seconds, Stopping threads took: 0.0000293 seconds
-2019-12-10T18:01:21.635-0500: 65.584: Total time for which application threads were stopped: 0.0001048 seconds, Stopping threads took: 0.0000323 seconds
-2019-12-10T18:02:21.670-0500: 125.619: Total time for which application threads were stopped: 0.0001036 seconds, Stopping threads took: 0.0000317 seconds
-2019-12-10T18:02:36.678-0500: 140.627: Total time for which application threads were stopped: 0.0001073 seconds, Stopping threads took: 0.0000348 seconds
-2019-12-10T18:03:21.702-0500: 185.651: Total time for which application threads were stopped: 0.0001397 seconds, Stopping threads took: 0.0000478 seconds
-2019-12-10T18:04:01.883-0500: 225.832: Total time for which application threads were stopped: 0.0012842 seconds, Stopping threads took: 0.0004094 seconds
-2019-12-10T18:04:02.884-0500: 226.833: Total time for which application threads were stopped: 0.0001800 seconds, Stopping threads took: 0.0000951 seconds
-2019-12-10T18:04:03.884-0500: 227.833: Total time for which application threads were stopped: 0.0001071 seconds, Stopping threads took: 0.0000347 seconds
-2019-12-10T18:04:04.884-0500: 228.834: Total time for which application threads were stopped: 0.0001214 seconds, Stopping threads took: 0.0000485 seconds
-2019-12-10T18:04:05.401-0500: 229.351: Total time for which application threads were stopped: 0.0003632 seconds, Stopping threads took: 0.0001904 seconds
-2019-12-10T18:04:06.401-0500: 230.350: Total time for which application threads were stopped: 0.0001118 seconds, Stopping threads took: 0.0000313 seconds
-2019-12-10T18:04:07.402-0500: 231.351: Total time for which application threads were stopped: 0.0001456 seconds, Stopping threads took: 0.0000371 seconds
-2019-12-10T18:04:08.403-0500: 232.352: Total time for which application threads were stopped: 0.0001129 seconds, Stopping threads took: 0.0000299 seconds
-2019-12-10T18:04:10.403-0500: 234.353: Total time for which application threads were stopped: 0.0001521 seconds, Stopping threads took: 0.0000645 seconds
-2019-12-10T18:04:16.613-0500: 240.563: Total time for which application threads were stopped: 0.0002027 seconds, Stopping threads took: 0.0000287 seconds
-2019-12-10T18:04:17.614-0500: 241.563: Total time for which application threads were stopped: 0.0001457 seconds, Stopping threads took: 0.0000732 seconds
-2019-12-10T18:04:18.614-0500: 242.564: Total time for which application threads were stopped: 0.0005516 seconds, Stopping threads took: 0.0004233 seconds
-2019-12-10T18:04:21.616-0500: 245.566: Total time for which application threads were stopped: 0.0001176 seconds, Stopping threads took: 0.0000271 seconds
-2019-12-10T18:04:25.619-0500: 249.568: Total time for which application threads were stopped: 0.0001372 seconds, Stopping threads took: 0.0000628 seconds
-2019-12-10T18:04:31.622-0500: 255.571: Total time for which application threads were stopped: 0.0001110 seconds, Stopping threads took: 0.0000371 seconds
-2019-12-10T18:04:46.630-0500: 270.579: Total time for which application threads were stopped: 0.0001627 seconds, Stopping threads took: 0.0000587 seconds
-2019-12-10T18:04:47.630-0500: 271.579: Total time for which application threads were stopped: 0.0001223 seconds, Stopping threads took: 0.0000376 seconds
-2019-12-10T18:04:48.631-0500: 272.580: Total time for which application threads were stopped: 0.0001493 seconds, Stopping threads took: 0.0000319 seconds
-2019-12-10T18:04:49.631-0500: 273.581: Total time for which application threads were stopped: 0.0001144 seconds, Stopping threads took: 0.0000331 seconds
-2019-12-10T18:04:52.634-0500: 276.584: Total time for which application threads were stopped: 0.0002969 seconds, Stopping threads took: 0.0002051 seconds
-2019-12-10T18:04:53.635-0500: 277.584: Total time for which application threads were stopped: 0.0001135 seconds, Stopping threads t \ No newline at end of file
diff --git a/solr-8.3.1/server/logs/solr_slow_requests.log b/solr-8.3.1/server/logs/solr_slow_requests.log
deleted file mode 100644
index e69de29bb..000000000
--- a/solr-8.3.1/server/logs/solr_slow_requests.log
+++ /dev/null
diff --git a/src/client/documents/DocumentTypes.ts b/src/client/documents/DocumentTypes.ts
index f6dd0c346..8f96b2fa6 100644
--- a/src/client/documents/DocumentTypes.ts
+++ b/src/client/documents/DocumentTypes.ts
@@ -25,5 +25,6 @@ export enum DocumentType {
COLOR = "color",
DOCULINK = "doculink",
PDFANNO = "pdfanno",
- INK = "ink"
+ INK = "ink",
+ DOCUMENT = "document"
} \ No newline at end of file
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts
index 7df08c7e6..50c51ace1 100644
--- a/src/client/documents/Documents.ts
+++ b/src/client/documents/Documents.ts
@@ -48,6 +48,7 @@ import { PresElementBox } from "../views/presentationview/PresElementBox";
import { QueryBox } from "../views/nodes/QueryBox";
import { ColorBox } from "../views/nodes/ColorBox";
import { DocuLinkBox } from "../views/nodes/DocuLinkBox";
+import { DocumentBox } from "../views/nodes/DocumentBox";
import { InkingStroke } from "../views/InkingStroke";
import { InkField } from "../../new_fields/InkField";
const requestImageSize = require('../util/request-image-size');
@@ -112,7 +113,7 @@ export interface DocumentOptions {
dropConverter?: ScriptField; // script to run when documents are dropped on this Document.
strokeWidth?: number;
color?: string;
- limitHeight?:number; // maximum height for newly created (eg, from pasting) text documents
+ limitHeight?: number; // maximum height for newly created (eg, from pasting) text documents
// [key: string]: Opt<Field>;
}
@@ -171,6 +172,10 @@ export namespace Docs {
layout: { view: KeyValueBox, dataField: data },
options: { height: 150 }
}],
+ [DocumentType.DOCUMENT, {
+ layout: { view: DocumentBox, dataField: data },
+ options: { height: 250 }
+ }],
[DocumentType.VID, {
layout: { view: VideoBox, dataField: data },
options: { currentTimecode: 0 },
@@ -181,7 +186,7 @@ export namespace Docs {
}],
[DocumentType.PDF, {
layout: { view: PDFBox, dataField: data },
- options: { nativeWidth: 1200, curPage: 1 }
+ options: { curPage: 1 }
}],
[DocumentType.ICON, {
layout: { view: IconBox, dataField: data },
@@ -482,6 +487,10 @@ export namespace Docs {
return InstanceFromProto(Prototypes.get(DocumentType.KVP), document, { title: document.title + ".kvp", ...options });
}
+ export function DocumentDocument(document?: Doc, options: DocumentOptions = {}) {
+ return InstanceFromProto(Prototypes.get(DocumentType.DOCUMENT), document, { title: document ? document.title + "" : "container", ...options });
+ }
+
export function FreeformDocument(documents: Array<Doc>, options: DocumentOptions, id?: string) {
return InstanceFromProto(Prototypes.get(DocumentType.COL), new List(documents), { chromeStatus: "collapsed", schemaColumns: new List([new SchemaHeaderField("title", "#f1efeb")]), ...options, viewType: CollectionViewType.Freeform }, id);
}
@@ -644,17 +653,20 @@ export namespace Docs {
let ctor: ((path: string, options: DocumentOptions) => (Doc | Promise<Doc | undefined>)) | undefined = undefined;
if (type.indexOf("image") !== -1) {
ctor = Docs.Create.ImageDocument;
+ if (!options.width) options.width = 300;
}
if (type.indexOf("video") !== -1) {
ctor = Docs.Create.VideoDocument;
+ if (!options.width) options.width = 600;
+ if (!options.height) options.height = options.width * 2 / 3;
}
if (type.indexOf("audio") !== -1) {
ctor = Docs.Create.AudioDocument;
}
if (type.indexOf("pdf") !== -1) {
ctor = Docs.Create.PdfDocument;
- options.nativeWidth = 927;
- options.nativeHeight = 1200;
+ if (!options.width) options.width = 400;
+ if (!options.height) options.height = options.width * 1200 / 927;
}
if (type.indexOf("excel") !== -1) {
ctor = Docs.Create.DBDocument;
diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts
index 326262895..df2f5fe3c 100644
--- a/src/client/util/DragManager.ts
+++ b/src/client/util/DragManager.ts
@@ -18,7 +18,7 @@ import { convertDropDataToButtons } from "./DropConverter";
export type dropActionType = "alias" | "copy" | undefined;
export function SetupDrag(
_reference: React.RefObject<HTMLElement>,
- docFunc: () => Doc | Promise<Doc>,
+ docFunc: () => Doc | Promise<Doc> | undefined,
moveFunc?: DragManager.MoveFunction,
dropAction?: dropActionType,
treeViewId?: string,
@@ -32,13 +32,15 @@ export function SetupDrag(
document.removeEventListener("pointermove", onRowMove);
document.removeEventListener('pointerup', onRowUp);
const doc = await docFunc();
- const dragData = new DragManager.DocumentDragData([doc]);
- dragData.dropAction = dropAction;
- dragData.moveDocument = moveFunc;
- dragData.treeViewId = treeViewId;
- dragData.dontHideOnDrop = dontHideOnDrop;
- DragManager.StartDocumentDrag([_reference.current!], dragData, e.x, e.y);
- dragStarted && dragStarted();
+ if (doc) {
+ const dragData = new DragManager.DocumentDragData([doc]);
+ dragData.dropAction = dropAction;
+ dragData.moveDocument = moveFunc;
+ dragData.treeViewId = treeViewId;
+ dragData.dontHideOnDrop = dontHideOnDrop;
+ DragManager.StartDocumentDrag([_reference.current!], dragData, e.x, e.y);
+ dragStarted && dragStarted();
+ }
};
const onRowUp = (): void => {
document.removeEventListener("pointermove", onRowMove);
@@ -49,12 +51,13 @@ export function SetupDrag(
e.stopPropagation();
if (e.shiftKey && CollectionDockingView.Instance) {
e.persist();
- CollectionDockingView.Instance.StartOtherDrag({
+ const dragDoc = await docFunc();
+ dragDoc && CollectionDockingView.Instance.StartOtherDrag({
pageX: e.pageX,
pageY: e.pageY,
preventDefault: emptyFunction,
button: 0
- }, [await docFunc()]);
+ }, [dragDoc]);
} else {
document.addEventListener("pointermove", onRowMove);
document.addEventListener("pointerup", onRowUp);
diff --git a/src/client/util/Import & Export/DirectoryImportBox.tsx b/src/client/util/Import & Export/DirectoryImportBox.tsx
index e6a215b2c..5b5bffd8c 100644
--- a/src/client/util/Import & Export/DirectoryImportBox.tsx
+++ b/src/client/util/Import & Export/DirectoryImportBox.tsx
@@ -122,12 +122,7 @@ export default class DirectoryImportBox extends React.Component<FieldViewProps>
await Promise.all(uploads.map(async ({ name, type, clientAccessPath, exifData }) => {
const path = Utils.prepend(clientAccessPath);
- const options = {
- nativeWidth: 300,
- width: 300,
- title: name
- };
- const document = await Docs.Get.DocumentFromType(type, path, options);
+ const document = await Docs.Get.DocumentFromType(type, path, { width: 300, title: name });
const { data, error } = exifData;
if (document) {
Doc.GetProto(document).exif = error || Docs.Get.DocumentHierarchyFromJson(data);
diff --git a/src/client/util/RichTextRules.ts b/src/client/util/RichTextRules.ts
index 364c85165..f5dd459fc 100644
--- a/src/client/util/RichTextRules.ts
+++ b/src/client/util/RichTextRules.ts
@@ -85,8 +85,9 @@ export const inpRules = {
const value = state.doc.textBetween(start, end);
if (value) {
DocServer.GetRefField(value).then(docx => {
- const doc = ((docx instanceof Doc) && docx) || Docs.Create.FreeformDocument([], { title: value, width: 500, height: 500 }, value);
- DocUtils.Publish(doc, value, returnFalse, returnFalse);
+ const target = ((docx instanceof Doc) && docx) || Docs.Create.FreeformDocument([], { title: value, width: 500, height: 500 }, value);
+ DocUtils.Publish(target, value, returnFalse, returnFalse);
+ DocUtils.MakeLink({ doc: (schema as any).Document }, { doc: target }, "portal link", "");
});
const link = state.schema.marks.link.create({ href: Utils.prepend("/doc/" + value), location: "onRight", title: value });
return state.tr.addMark(start, end, link);
diff --git a/src/client/util/RichTextSchema.tsx b/src/client/util/RichTextSchema.tsx
index 543f45731..7a048ed0d 100644
--- a/src/client/util/RichTextSchema.tsx
+++ b/src/client/util/RichTextSchema.tsx
@@ -741,7 +741,11 @@ export class DashDocView {
self._dashDoc = dashDoc;
dashDoc.hideSidebar = true;
if (node.attrs.width !== dashDoc.width + "px" || node.attrs.height !== dashDoc.height + "px") {
- view.dispatch(view.state.tr.setNodeMarkup(getPos(), null, { ...node.attrs, width: dashDoc.width + "px", height: dashDoc.height + "px" }));
+ try { // bcz: an exception will be thrown if two aliases are open at the same time when a doc view comment is made
+ view.dispatch(view.state.tr.setNodeMarkup(getPos(), null, { ...node.attrs, width: dashDoc.width + "px", height: dashDoc.height + "px" }));
+ } catch (e) {
+ console.log(e);
+ }
}
this._reactionDisposer && this._reactionDisposer();
this._reactionDisposer = reaction(() => dashDoc[HeightSym]() + dashDoc[WidthSym](), () => {
diff --git a/src/client/util/SearchUtil.ts b/src/client/util/SearchUtil.ts
index 7a9176bec..1fda82880 100644
--- a/src/client/util/SearchUtil.ts
+++ b/src/client/util/SearchUtil.ts
@@ -64,7 +64,7 @@ export namespace SearchUtil {
const textDocs = newIds.map((id: string) => textDocMap[id]).map(doc => doc as Doc);
for (let i = 0; i < textDocs.length; i++) {
const testDoc = textDocs[i];
- if (testDoc instanceof Doc && testDoc.type !== DocumentType.KVP && theDocs.findIndex(d => Doc.AreProtosEqual(d, testDoc)) === -1) {
+ if (testDoc instanceof Doc && testDoc.type !== DocumentType.KVP && testDoc.type !== DocumentType.EXTENSION && theDocs.findIndex(d => Doc.AreProtosEqual(d, testDoc)) === -1) {
theDocs.push(Doc.GetProto(testDoc));
theLines.push(newLines[i].map(line => line.replace(query, query.toUpperCase())));
}
@@ -74,7 +74,7 @@ export namespace SearchUtil {
const docs = ids.map((id: string) => docMap[id]).map(doc => doc as Doc);
for (let i = 0; i < ids.length; i++) {
const testDoc = docs[i];
- if (testDoc instanceof Doc && testDoc.type !== DocumentType.KVP && (options.allowAliases || theDocs.findIndex(d => Doc.AreProtosEqual(d, testDoc)) === -1)) {
+ if (testDoc instanceof Doc && testDoc.type !== DocumentType.KVP && testDoc.type !== DocumentType.EXTENSION && (options.allowAliases || theDocs.findIndex(d => Doc.AreProtosEqual(d, testDoc)) === -1)) {
theDocs.push(testDoc);
theLines.push([]);
}
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts
index e01216e0f..cb7a69295 100644
--- a/src/client/util/SelectionManager.ts
+++ b/src/client/util/SelectionManager.ts
@@ -2,6 +2,8 @@ import { observable, action, runInAction, ObservableMap } from "mobx";
import { Doc } from "../../new_fields/Doc";
import { DocumentView } from "../views/nodes/DocumentView";
import { computedFn } from "mobx-utils";
+import { List } from "../../new_fields/List";
+import { Scripting } from "./Scripting";
export namespace SelectionManager {
@@ -27,6 +29,7 @@ export namespace SelectionManager {
manager.SelectedDocuments.clear();
manager.SelectedDocuments.set(docView, true);
}
+ Doc.UserDoc().SelectedDocs = new List(SelectionManager.SelectedDocuments().map(dv => dv.props.Document));
}
@action
DeselectDoc(docView: DocumentView): void {
@@ -78,3 +81,6 @@ export namespace SelectionManager {
return Array.from(manager.SelectedDocuments.keys());
}
}
+
+Scripting.addGlobal(function selectDoc(doc: any) { Doc.UserDoc().SelectedDocs = new List([doc]); });
+
diff --git a/src/client/views/DocComponent.tsx b/src/client/views/DocComponent.tsx
index c7ddee7ea..7fbad4638 100644
--- a/src/client/views/DocComponent.tsx
+++ b/src/client/views/DocComponent.tsx
@@ -59,6 +59,7 @@ export function DocAnnotatableComponent<P extends DocAnnotatableProps, T>(schema
@computed get layoutDoc() { return Doc.Layout(this.props.Document); }
@computed get dataDoc() { return (this.props.DataDoc && this.props.Document.isTemplateField ? this.props.DataDoc : Doc.GetProto(this.props.Document)) as Doc; }
@computed get extensionDoc() { return Doc.fieldExtensionDoc(this.dataDoc, this.props.fieldKey); }
+ @computed get extensionDocSync() { return Doc.fieldExtensionDocSync(this.dataDoc, this.props.fieldKey); }
@computed get annotationsKey() { return "annotations"; }
@action.bound
diff --git a/src/client/views/collections/CollectionSubView.tsx b/src/client/views/collections/CollectionSubView.tsx
index 5c7794cc0..062521690 100644
--- a/src/client/views/collections/CollectionSubView.tsx
+++ b/src/client/views/collections/CollectionSubView.tsx
@@ -262,7 +262,7 @@ export function CollectionSubView<T>(schemaCtor: (doc: Doc) => T) {
.then(result => {
const type = result["content-type"];
if (type) {
- Docs.Get.DocumentFromType(type, str, { ...options, width: 300, nativeWidth: type.indexOf("video") !== -1 ? 600 : 300 })
+ Docs.Get.DocumentFromType(type, str, options)
.then(doc => doc && this.props.addDocument(doc));
}
});
@@ -281,7 +281,7 @@ export function CollectionSubView<T>(schemaCtor: (doc: Doc) => T) {
const dropFileName = file ? file.name : "-empty-";
promises.push(Networking.PostFormDataToServer("/upload", formData).then(results => {
results.map(action(({ clientAccessPath }: any) => {
- const full = { ...options, nativeWidth: type.indexOf("video") !== -1 ? 600 : 300, width: 300, title: dropFileName };
+ const full = { ...options, width: 300, title: dropFileName };
const pathname = Utils.prepend(clientAccessPath);
Docs.Get.DocumentFromType(type, pathname, full).then(doc => {
doc && (Doc.GetProto(doc).fileUpload = basename(pathname).replace("upload_", "").replace(/\.[a-z0-9]*$/, ""));
diff --git a/src/client/views/collections/ParentDocumentSelector.tsx b/src/client/views/collections/ParentDocumentSelector.tsx
index e00d8e83b..8346e8099 100644
--- a/src/client/views/collections/ParentDocumentSelector.tsx
+++ b/src/client/views/collections/ParentDocumentSelector.tsx
@@ -81,7 +81,7 @@ export class SelectorContextMenu extends React.Component<SelectorProps> {
@observer
export class ParentDocSelector extends React.Component<SelectorProps> {
render() {
- let flyout = (
+ const flyout = (
<div className="parentDocumentSelector-flyout" style={{}} title=" ">
<SelectorContextMenu {...this.props} />
</div>
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.scss b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.scss
index 070d4aa65..f8a9e49d8 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.scss
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.scss
@@ -52,6 +52,8 @@
left: 0;
width: 100%;
height: 100%;
+ align-items: center;
+ display: flex;
}
// selection border...?
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
index 89c1df598..fc507bf5e 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
@@ -882,6 +882,19 @@ export class CollectionFreeFormView extends CollectionSubView(PanZoomDocument) {
eles.push(<CollectionFreeFormRemoteCursors {...this.props} key="remoteCursors" />);
return eles;
}
+ @computed get placeholder() {
+ return <div style={{ background: "gray", width: "100%", height: "100%", display: "flex", alignItems: "center" }}>
+ <span style={{ fontSize: 96, background: "gray", margin: "auto", display: "flex" }}>{this.props.Document.title}></span></div>;
+ }
+ @computed get marqueeView() {
+ return <MarqueeView {...this.props} extensionDoc={this.extensionDoc!} activeDocuments={this.getActiveDocuments} selectDocuments={this.selectDocuments} addDocument={this.addDocument}
+ addLiveTextDocument={this.addLiveTextBox} getContainerTransform={this.getContainerTransform} getTransform={this.getTransform} isAnnotationOverlay={this.isAnnotationOverlay}>
+ <CollectionFreeFormViewPannableContents centeringShiftX={this.centeringShiftX} centeringShiftY={this.centeringShiftY}
+ easing={this.easing} zoomScaling={this.zoomScaling} panX={this.panX} panY={this.panY}>
+ {this.children}
+ </CollectionFreeFormViewPannableContents>
+ </MarqueeView>;
+ }
render() {
TraceMobx();
// update the actual dimensions of the collection so that they can inquired (e.g., by a minimap)
@@ -895,13 +908,7 @@ export class CollectionFreeFormView extends CollectionSubView(PanZoomDocument) {
<div className={"collectionfreeformview-container"} ref={this.createDropTarget} onWheel={this.onPointerWheel}//pointerEvents: SelectionManager.GetIsDragging() ? "all" : undefined,
style={{ pointerEvents: SelectionManager.GetIsDragging() ? "all" : undefined, height: this.isAnnotationOverlay ? (this.props.Document.scrollHeight ? this.Document.scrollHeight : "100%") : this.props.PanelHeight() }}
onPointerDown={this.onPointerDown} onPointerMove={this.onCursorMove} onDrop={this.onDrop.bind(this)} onContextMenu={this.onContextMenu} onTouchStart={this.onTouchStart}>
- <MarqueeView {...this.props} extensionDoc={this.extensionDoc} activeDocuments={this.getActiveDocuments} selectDocuments={this.selectDocuments} addDocument={this.addDocument}
- addLiveTextDocument={this.addLiveTextBox} getContainerTransform={this.getContainerTransform} getTransform={this.getTransform} isAnnotationOverlay={this.isAnnotationOverlay}>
- <CollectionFreeFormViewPannableContents centeringShiftX={this.centeringShiftX} centeringShiftY={this.centeringShiftY}
- easing={this.easing} zoomScaling={this.zoomScaling} panX={this.panX} panY={this.panY}>
- {this.children}
- </CollectionFreeFormViewPannableContents>
- </MarqueeView>
+ {!BoolCast(this.Document.LODdisable) && !this.props.isAnnotationOverlay && this.props.renderDepth > 0 && this.Document[WidthSym]() * this.Document[HeightSym]() / this.props.ScreenToLocalTransform().Scale / this.props.ScreenToLocalTransform().Scale < NumCast(this.Document.LODarea, 100000) ? this.placeholder : this.marqueeView}
<CollectionFreeFormOverlayView elements={this.elementFunc} />
</div>;
}
diff --git a/src/client/views/nodes/ContentFittingDocumentView.scss b/src/client/views/nodes/ContentFittingDocumentView.scss
index 796e67269..2801af441 100644
--- a/src/client/views/nodes/ContentFittingDocumentView.scss
+++ b/src/client/views/nodes/ContentFittingDocumentView.scss
@@ -2,10 +2,11 @@
.contentFittingDocumentView {
position: relative;
- height: auto !important;
+ display: flex;
+ align-items: center;
.contentFittingDocumentView-previewDoc {
- position: absolute;
+ position: relative;
display: inline;
}
diff --git a/src/client/views/nodes/ContentFittingDocumentView.tsx b/src/client/views/nodes/ContentFittingDocumentView.tsx
index 5e3306a11..e15790c9d 100644
--- a/src/client/views/nodes/ContentFittingDocumentView.tsx
+++ b/src/client/views/nodes/ContentFittingDocumentView.tsx
@@ -31,9 +31,9 @@ interface ContentFittingDocumentViewProps {
CollectionDoc?: Doc;
onClick?: ScriptField;
getTransform: () => Transform;
- addDocument: (document: Doc) => boolean;
- moveDocument: (document: Doc, target: Doc | undefined, addDoc: ((doc: Doc) => boolean)) => boolean;
- removeDocument: (document: Doc) => boolean;
+ addDocument?: (document: Doc) => boolean;
+ moveDocument?: (document: Doc, target: Doc | undefined, addDoc: ((doc: Doc) => boolean)) => boolean;
+ removeDocument?: (document: Doc) => boolean;
active: (outsideReaction: boolean) => boolean;
whenActiveChanged: (isActive: boolean) => void;
addDocTab: (document: Doc, dataDoc: Doc | undefined, where: string) => boolean;
@@ -47,8 +47,8 @@ interface ContentFittingDocumentViewProps {
export class ContentFittingDocumentView extends React.Component<ContentFittingDocumentViewProps>{
public get displayName() { return "DocumentView(" + this.props.Document?.title + ")"; } // this makes mobx trace() statements more descriptive
private get layoutDoc() { return this.props.Document && Doc.Layout(this.props.Document); }
- private get nativeWidth() { return NumCast(this.layoutDoc!.nativeWidth, this.props.PanelWidth()); }
- private get nativeHeight() { return NumCast(this.layoutDoc!.nativeHeight, this.props.PanelHeight()); }
+ private get nativeWidth() { return NumCast(this.layoutDoc?.nativeWidth, this.props.PanelWidth()); }
+ private get nativeHeight() { return NumCast(this.layoutDoc?.nativeHeight, this.props.PanelHeight()); }
private contentScaling = () => {
const wscale = this.props.PanelWidth() / (this.nativeWidth ? this.nativeWidth : this.props.PanelWidth());
if (wscale * this.nativeHeight > this.props.PanelHeight()) {
@@ -73,21 +73,25 @@ export class ContentFittingDocumentView extends React.Component<ContentFittingDo
}
private PanelWidth = () => this.nativeWidth && (!this.props.Document || !this.props.Document.fitWidth) ? this.nativeWidth * this.contentScaling() : this.props.PanelWidth();
private PanelHeight = () => this.nativeHeight && (!this.props.Document || !this.props.Document.fitWidth) ? this.nativeHeight * this.contentScaling() : this.props.PanelHeight();
- private getTransform = () => this.props.getTransform().translate(-this.centeringOffset, 0).scale(1 / this.contentScaling());
+ private getTransform = () => this.props.getTransform().translate(-this.centeringOffset, -this.centeringYOffset).scale(1 / this.contentScaling());
private get centeringOffset() { return this.nativeWidth && (!this.props.Document || !this.props.Document.fitWidth) ? (this.props.PanelWidth() - this.nativeWidth * this.contentScaling()) / 2 : 0; }
+ private get centeringYOffset() { return Math.abs(this.centeringOffset) < 0.001 ? (this.props.PanelHeight() - this.nativeHeight * this.contentScaling()) / 2 : 0; }
- @computed get borderRounding() { return StrCast(this.props.Document!.borderRounding); }
+ @computed get borderRounding() { return StrCast(this.props.Document?.borderRounding); }
render() {
TraceMobx();
- return (<div className="contentFittingDocumentView" style={{ width: this.props.PanelWidth(), height: this.props.PanelHeight() }}>
+ return (<div className="contentFittingDocumentView" style={{
+ width: Math.abs(this.centeringYOffset) > 0.001 ? "auto" : this.props.PanelWidth(),
+ height: Math.abs(this.centeringOffset) > 0.0001 ? "auto" : this.props.PanelHeight()
+ }}>
{!this.props.Document || !this.props.PanelWidth ? (null) : (
<div className="contentFittingDocumentView-previewDoc"
style={{
transform: `translate(${this.centeringOffset}px, 0px)`,
borderRadius: this.borderRounding,
- height: this.props.PanelHeight(),
- width: `${100 * (this.props.PanelWidth() - this.centeringOffset * 2) / this.props.PanelWidth()}%`
+ height: Math.abs(this.centeringYOffset) > 0.001 ? `${100 * this.nativeHeight / this.nativeWidth * this.props.PanelWidth() / this.props.PanelHeight()}%` : this.props.PanelHeight(),
+ width: Math.abs(this.centeringOffset) > 0.001 ? `${100 * (this.props.PanelWidth() - this.centeringOffset * 2) / this.props.PanelWidth()}%` : this.props.PanelWidth()
}}>
<DocumentView {...this.props}
Document={this.props.Document}
diff --git a/src/client/views/nodes/DocumentBox.scss b/src/client/views/nodes/DocumentBox.scss
new file mode 100644
index 000000000..6a2f98166
--- /dev/null
+++ b/src/client/views/nodes/DocumentBox.scss
@@ -0,0 +1,6 @@
+.documentBox-container {
+ width: 100%;
+ height: 100%;
+ pointer-events: all;
+ background: gray;
+} \ No newline at end of file
diff --git a/src/client/views/nodes/DocumentBox.tsx b/src/client/views/nodes/DocumentBox.tsx
new file mode 100644
index 000000000..b9a97b42d
--- /dev/null
+++ b/src/client/views/nodes/DocumentBox.tsx
@@ -0,0 +1,55 @@
+import { observer } from "mobx-react";
+import { Doc } from "../../../new_fields/Doc";
+import { documentSchema } from "../../../new_fields/documentSchemas";
+import { makeInterface } from "../../../new_fields/Schema";
+import { ComputedField } from "../../../new_fields/ScriptField";
+import { emptyFunction, emptyPath } from "../../../Utils";
+import { ContextMenu } from "../ContextMenu";
+import { ContextMenuProps } from "../ContextMenuItem";
+import { DocComponent } from "../DocComponent";
+import { ContentFittingDocumentView } from "./ContentFittingDocumentView";
+import "./DocumentBox.scss";
+import { FieldView, FieldViewProps } from "./FieldView";
+import React = require("react");
+
+type DocBoxSchema = makeInterface<[typeof documentSchema]>;
+const DocBoxDocument = makeInterface(documentSchema);
+
+@observer
+export class DocumentBox extends DocComponent<FieldViewProps, DocBoxSchema>(DocBoxDocument) {
+ public static LayoutString(fieldKey: string) { return FieldView.LayoutString(DocumentBox, fieldKey); }
+
+
+ specificContextMenu = (e: React.MouseEvent): void => {
+ const funcs: ContextMenuProps[] = [];
+ funcs.push({ description: "Auto Show Selected", event: () => Doc.GetProto(this.props.Document).data = ComputedField.MakeFunction("selectedDocs(this,true,[_last_])?.[0]"), icon: "expand-arrows-alt" });
+
+ ContextMenu.Instance.addItem({ description: "DocumentBox Funcs...", subitems: funcs, icon: "asterisk" });
+ }
+ render() {
+ const containedDoc = this.props.Document[this.props.fieldKey] as Doc;
+ return <div className="documentBox-container" onContextMenu={this.specificContextMenu}>
+ {!containedDoc ? (null) : <ContentFittingDocumentView
+ Document={containedDoc}
+ DataDocument={undefined}
+ LibraryPath={emptyPath}
+ fitToBox={this.props.fitToBox}
+ addDocument={this.props.addDocument}
+ moveDocument={this.props.moveDocument}
+ removeDocument={this.props.removeDocument}
+ ruleProvider={this.props.ruleProvider}
+ addDocTab={this.props.addDocTab}
+ pinToPres={this.props.pinToPres}
+ getTransform={this.props.ScreenToLocalTransform}
+ renderDepth={this.props.renderDepth - 1}
+ PanelWidth={this.props.PanelWidth}
+ PanelHeight={this.props.PanelHeight}
+ focus={this.props.focus}
+ active={this.props.active}
+ whenActiveChanged={this.props.whenActiveChanged}
+ setPreviewScript={emptyFunction}
+ previewScript={undefined}
+ />}
+ </div>;
+ }
+}
diff --git a/src/client/views/nodes/DocumentContentsView.tsx b/src/client/views/nodes/DocumentContentsView.tsx
index 1bbc82119..8f6bfc8e1 100644
--- a/src/client/views/nodes/DocumentContentsView.tsx
+++ b/src/client/views/nodes/DocumentContentsView.tsx
@@ -14,6 +14,7 @@ import { LinkFollowBox } from "../linking/LinkFollowBox";
import { YoutubeBox } from "./../../apis/youtube/YoutubeBox";
import { AudioBox } from "./AudioBox";
import { ButtonBox } from "./ButtonBox";
+import { DocumentBox } from "./DocumentBox";
import { DocumentViewProps } from "./DocumentView";
import "./DocumentView.scss";
import { FontIconBox } from "./FontIconBox";
@@ -102,7 +103,7 @@ export class DocumentContentsView extends React.Component<DocumentViewProps & {
FormattedTextBox, ImageBox, IconBox, DirectoryImportBox, FontIconBox: FontIconBox, ButtonBox, FieldView,
CollectionFreeFormView, CollectionDockingView, CollectionSchemaView, CollectionView, WebBox, KeyValueBox,
PDFBox, VideoBox, AudioBox, HistogramBox, PresBox, YoutubeBox, LinkFollowBox, PresElementBox, QueryBox,
- ColorBox, DocuLinkBox, InkingStroke
+ ColorBox, DocuLinkBox, InkingStroke, DocumentBox
}}
bindings={this.CreateBindings()}
jsx={this.layout}
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index b096d68fc..18885f272 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -43,6 +43,8 @@ import { InteractionUtils } from '../../util/InteractionUtils';
import { InkingControl } from '../InkingControl';
import { InkTool } from '../../../new_fields/InkField';
import { TraceMobx } from '../../../new_fields/util';
+import { List } from '../../../new_fields/List';
+import { FormattedTextBoxComment } from './FormattedTextBoxComment';
library.add(fa.faEdit, fa.faTrash, fa.faShare, fa.faDownload, fa.faExpandArrowsAlt, fa.faCompressArrowsAlt, fa.faLayerGroup, fa.faExternalLinkAlt, fa.faAlignCenter, fa.faCaretSquareRight,
fa.faSquare, fa.faConciergeBell, fa.faWindowRestore, fa.faFolder, fa.faMapPin, fa.faLink, fa.faFingerprint, fa.faCrosshairs, fa.faDesktop, fa.faUnlock, fa.faLock, fa.faLaptopCode, fa.faMale,
@@ -170,6 +172,9 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
this.onClickHandler.script.run({ this: this.Document.isTemplateField && this.props.DataDoc ? this.props.DataDoc : this.props.Document }, console.log);
} else if (this.Document.type === DocumentType.BUTTON) {
ScriptBox.EditButtonScript("On Button Clicked ...", this.props.Document, "onClick", e.clientX, e.clientY);
+ } else if (this.props.Document.isButton === "Selector") { // this should be moved to an OnClick script
+ FormattedTextBoxComment.Hide();
+ this.Document.links?.[0] instanceof Doc && (Doc.UserDoc().SelectedDocs = new List([Doc.LinkOtherAnchor(this.Document.links[0]!, this.props.Document)]));
} else if (this.Document.isButton) {
SelectionManager.SelectDoc(this, e.ctrlKey); // don't think this should happen if a button action is actually triggered.
this.buttonClick(e.altKey, e.ctrlKey);
@@ -316,6 +321,17 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
}
@undoBatch
+ makeSelBtnClicked = (): void => {
+ if (this.Document.isButton || this.Document.onClick || this.Document.ignoreClick) {
+ this.Document.isButton = false;
+ this.Document.ignoreClick = false;
+ this.Document.onClick = undefined;
+ } else {
+ this.props.Document.isButton = "Selector";
+ }
+ }
+
+ @undoBatch
@action
drop = async (e: Event, de: DragManager.DropEvent) => {
if (de.complete.annoDragData) {
@@ -433,13 +449,8 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
onClicks.push({ description: "Toggle Detail", event: () => this.Document.onClick = ScriptField.MakeScript("toggleDetail(this)"), icon: "window-restore" });
onClicks.push({ description: this.Document.ignoreClick ? "Select" : "Do Nothing", event: () => this.Document.ignoreClick = !this.Document.ignoreClick, icon: this.Document.ignoreClick ? "unlock" : "lock" });
onClicks.push({ description: this.Document.isButton || this.Document.onClick ? "Remove Click Behavior" : "Follow Link", event: this.makeBtnClicked, icon: "concierge-bell" });
+ onClicks.push({ description: this.props.Document.isButton ? "Remove Select Link Behavior" : "Select Link", event: this.makeSelBtnClicked, icon: "concierge-bell" });
onClicks.push({ description: "Edit onClick Script", icon: "edit", event: (obj: any) => ScriptBox.EditButtonScript("On Button Clicked ...", this.props.Document, "onClick", obj.x, obj.y) });
- onClicks.push({
- description: "Edit onClick Foreach Doc Script", icon: "edit", event: (obj: any) => {
- this.props.Document.collectionContext = this.props.ContainingCollectionDoc;
- ScriptBox.EditButtonScript("Foreach Collection Doc (d) => ", this.props.Document, "onClick", obj.x, obj.y, "docList(this.collectionContext.data).map(d => {", "});\n");
- }
- });
!existingOnClick && cm.addItem({ description: "OnClick...", subitems: onClicks, icon: "hand-point-right" });
const funcs: ContextMenuProps[] = [];
diff --git a/src/client/views/nodes/FormattedTextBox.tsx b/src/client/views/nodes/FormattedTextBox.tsx
index a298fd6af..3efbd434e 100644
--- a/src/client/views/nodes/FormattedTextBox.tsx
+++ b/src/client/views/nodes/FormattedTextBox.tsx
@@ -822,6 +822,7 @@ export class FormattedTextBox extends DocAnnotatableComponent<(FieldViewProps &
clipboardTextSerializer: this.clipboardTextSerializer,
handlePaste: this.handlePaste,
});
+ this._editorView.state.schema.Document = this.props.Document;
if (startup && this._editorView) {
Doc.GetProto(doc).documentText = undefined;
this._editorView.dispatch(this._editorView.state.tr.insertText(startup));
diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx
index f6aa47f15..09e627078 100644
--- a/src/client/views/nodes/ImageBox.tsx
+++ b/src/client/views/nodes/ImageBox.tsx
@@ -18,7 +18,6 @@ import { undoBatch } from '../../util/UndoManager';
import { ContextMenu } from "../../views/ContextMenu";
import { ContextMenuProps } from '../ContextMenuItem';
import { DocAnnotatableComponent } from '../DocComponent';
-import { InkingControl } from '../InkingControl';
import FaceRectangles from './FaceRectangles';
import { FieldView, FieldViewProps } from './FieldView';
import "./ImageBox.scss";
diff --git a/src/client/views/nodes/KeyValueBox.tsx b/src/client/views/nodes/KeyValueBox.tsx
index 322d639dc..234a6a9d3 100644
--- a/src/client/views/nodes/KeyValueBox.tsx
+++ b/src/client/views/nodes/KeyValueBox.tsx
@@ -57,7 +57,7 @@ export class KeyValueBox extends React.Component<FieldViewProps> {
value = eq ? value.substr(1) : value;
const dubEq = value.startsWith(":=") ? "computed" : value.startsWith(";=") ? "script" : false;
value = dubEq ? value.substr(2) : value;
- const options: ScriptOptions = { addReturn: true, params: { this: "Doc" } };
+ const options: ScriptOptions = { addReturn: true, params: { this: "Doc", _last_: "any" }, editable: false };
if (dubEq) options.typecheck = false;
const script = CompileScript(value, options);
if (!script.compiled) {
diff --git a/src/client/views/nodes/PDFBox.tsx b/src/client/views/nodes/PDFBox.tsx
index 0f5cc0fa9..2f1e1832e 100644
--- a/src/client/views/nodes/PDFBox.tsx
+++ b/src/client/views/nodes/PDFBox.tsx
@@ -3,11 +3,11 @@ import { action, observable, runInAction, reaction, IReactionDisposer, trace, un
import { observer } from "mobx-react";
import * as Pdfjs from "pdfjs-dist";
import "pdfjs-dist/web/pdf_viewer.css";
-import { Opt, WidthSym, Doc } from "../../../new_fields/Doc";
+import { Opt, WidthSym, Doc, HeightSym } from "../../../new_fields/Doc";
import { makeInterface } from "../../../new_fields/Schema";
import { ScriptField } from '../../../new_fields/ScriptField';
-import { Cast, NumCast } from "../../../new_fields/Types";
-import { PdfField } from "../../../new_fields/URLField";
+import { Cast, NumCast, StrCast } from "../../../new_fields/Types";
+import { PdfField, URLField } from "../../../new_fields/URLField";
import { Utils } from '../../../Utils';
import { KeyCodes } from '../../northstar/utils/KeyCodes';
import { undoBatch } from '../../util/UndoManager';
@@ -49,16 +49,38 @@ export class PDFBox extends DocAnnotatableComponent<FieldViewProps, PdfDocument>
constructor(props: any) {
super(props);
this._initialScale = this.props.ScreenToLocalTransform().Scale;
+ const nw = this.Document.nativeWidth = NumCast(this.extensionDocSync.nativeWidth, NumCast(this.Document.nativeWidth, 927));
+ const nh = this.Document.nativeHeight = NumCast(this.extensionDocSync.nativeHeight, NumCast(this.Document.nativeHeight, 1200));
+ !this.Document.fitWidth && !this.Document.ignoreAspect && (this.Document.height = this.Document[WidthSym]() * (nh / nw));
+
+ const backup = "oldPath";
+ const { Document } = this.props;
+ const { url: { href } } = Cast(Document[this.props.fieldKey], PdfField)!;
+ const pathCorrectionTest = /upload\_[a-z0-9]{32}.(.*)/g;
+ const matches = pathCorrectionTest.exec(href);
+ console.log("\nHere's the { url } being fed into the outer regex:");
+ console.log(href);
+ console.log("And here's the 'properPath' build from the captured filename:\n");
+ if (matches !== null) {
+ const properPath = Utils.prepend(`/files/pdfs/${matches[0]}`);
+ console.log(properPath);
+ if (!properPath.includes(href)) {
+ console.log(`The two (url and proper path) were not equal`);
+ const proto = Doc.GetProto(Document);
+ proto[this.props.fieldKey] = new PdfField(properPath);
+ proto[backup] = href;
+ } else {
+ console.log(`The two (url and proper path) were equal`);
+ }
+ } else {
+ console.log("Outer matches was null!");
+ }
}
componentWillUnmount() {
this._selectReactionDisposer && this._selectReactionDisposer();
}
componentDidMount() {
- const pdfUrl = Cast(this.dataDoc[this.props.fieldKey], PdfField);
- if (pdfUrl instanceof PdfField) {
- Pdfjs.getDocument(pdfUrl.url.pathname).promise.then(pdf => runInAction(() => this._pdf = pdf));
- }
this._selectReactionDisposer = reaction(() => this.props.isSelected(),
() => {
document.removeEventListener("keydown", this.onKeyDown);
@@ -67,9 +89,9 @@ export class PDFBox extends DocAnnotatableComponent<FieldViewProps, PdfDocument>
}
loaded = (nw: number, nh: number, np: number) => {
- this.dataDoc.numPages = np;
- this.Document.nativeWidth = nw * 96 / 72;
- this.Document.nativeHeight = nh * 96 / 72;
+ this.extensionDocSync.numPages = np;
+ this.extensionDocSync.nativeWidth = this.Document.nativeWidth = nw * 96 / 72;
+ this.extensionDocSync.nativeHeight = this.Document.nativeHeight = nh * 96 / 72;
!this.Document.fitWidth && !this.Document.ignoreAspect && (this.Document.height = this.Document[WidthSym]() * (nh / nw));
}
@@ -197,9 +219,9 @@ export class PDFBox extends DocAnnotatableComponent<FieldViewProps, PdfDocument>
@computed get renderTitleBox() {
const classname = "pdfBox" + (this.active() ? "-interactive" : "");
return <div className={classname} style={{
- width: !this.props.Document.fitWidth ? NumCast(this.props.Document.nativeWidth) : `${100 / this.contentScaling}%`,
- height: !this.props.Document.fitWidth ? NumCast(this.props.Document.nativeHeight) : `${100 / this.contentScaling}%`,
- transform: `scale(${this.props.ContentScaling()})`
+ width: !this.props.Document.fitWidth ? this.Document.nativeWidth || 0 : `${100 / this.contentScaling}%`,
+ height: !this.props.Document.fitWidth ? this.Document.nativeHeight || 0 : `${100 / this.contentScaling}%`,
+ transform: `scale(${this.contentScaling})`
}} >
<div className="pdfBox-title-outer">
<strong className="pdfBox-title" >{this.props.Document.title}</strong>
@@ -225,10 +247,19 @@ export class PDFBox extends DocAnnotatableComponent<FieldViewProps, PdfDocument>
</div>;
}
+ _pdfjsRequested = false;
render() {
const pdfUrl = Cast(this.dataDoc[this.props.fieldKey], PdfField, null);
if (this.props.isSelected() || this.props.Document.scrollY !== undefined) this._everActive = true;
- return !pdfUrl || !this._pdf || !this.extensionDoc || (!this._everActive && this.props.ScreenToLocalTransform().Scale > 2.5) ?
- this.renderTitleBox : this.renderPdfView;
+ if (pdfUrl && this.extensionDoc && (this._everActive || (this.extensionDoc.nativeWidth && this.props.ScreenToLocalTransform().Scale < 2.5))) {
+ if (pdfUrl instanceof PdfField && this._pdf) {
+ return this.renderPdfView;
+ }
+ if (!this._pdfjsRequested) {
+ this._pdfjsRequested = true;
+ Pdfjs.getDocument(pdfUrl.url.href).promise.then(pdf => runInAction(() => this._pdf = pdf));
+ }
+ }
+ return this.renderTitleBox;
}
} \ No newline at end of file
diff --git a/src/client/views/pdf/PDFMenu.tsx b/src/client/views/pdf/PDFMenu.tsx
index 38e10e99a..503696ae9 100644
--- a/src/client/views/pdf/PDFMenu.tsx
+++ b/src/client/views/pdf/PDFMenu.tsx
@@ -12,19 +12,17 @@ export default class PDFMenu extends AntimodeMenu {
static Instance: PDFMenu;
private _commentCont = React.createRef<HTMLButtonElement>();
- private _snippetButton: React.RefObject<HTMLButtonElement> = React.createRef();
@observable private _keyValue: string = "";
@observable private _valueValue: string = "";
@observable private _added: boolean = false;
@observable public Highlighting: boolean = false;
- @observable public Status: "pdf" | "annotation" | "snippet" | "" = "";
+ @observable public Status: "pdf" | "annotation" | "" = "";
public StartDrag: (e: PointerEvent, ele: HTMLElement) => void = unimplementedFunction;
public Highlight: (color: string) => Opt<Doc> = (color: string) => undefined;
public Delete: () => void = unimplementedFunction;
- public Snippet: (marquee: { left: number, top: number, width: number, height: number }) => void = unimplementedFunction;
public AddTag: (key: string, value: string) => boolean = returnFalse;
public PinToPres: () => void = unimplementedFunction;
public Marquee: { left: number; top: number; width: number; height: number; } | undefined;
@@ -80,34 +78,6 @@ export default class PDFMenu extends AntimodeMenu {
this.Delete();
}
- snippetStart = (e: React.PointerEvent) => {
- document.removeEventListener("pointermove", this.snippetDrag);
- document.addEventListener("pointermove", this.snippetDrag);
- document.removeEventListener("pointerup", this.snippetEnd);
- document.addEventListener("pointerup", this.snippetEnd);
-
- e.stopPropagation();
- e.preventDefault();
- }
-
- snippetDrag = (e: PointerEvent) => {
- e.stopPropagation();
- e.preventDefault();
- if (!this._dragging) {
- this._dragging = true;
-
- this.Marquee && this.Snippet(this.Marquee);
- }
- }
-
- snippetEnd = (e: PointerEvent) => {
- this._dragging = false;
- document.removeEventListener("pointermove", this.snippetDrag);
- document.removeEventListener("pointerup", this.snippetEnd);
- e.stopPropagation();
- e.preventDefault();
- }
-
@action
keyChanged = (e: React.ChangeEvent<HTMLInputElement>) => {
this._keyValue = e.currentTarget.value;
@@ -128,14 +98,12 @@ export default class PDFMenu extends AntimodeMenu {
}
render() {
- const buttons = this.Status === "pdf" || this.Status === "snippet" ?
+ const buttons = this.Status === "pdf" ?
[
<button key="1" className="antimodeMenu-button" title="Click to Highlight" onClick={this.highlightClicked} style={this.Highlighting ? { backgroundColor: "#121212" } : {}}>
<FontAwesomeIcon icon="highlighter" size="lg" style={{ transition: "transform 0.1s", transform: this.Highlighting ? "" : "rotate(-45deg)" }} /></button>,
<button key="2" className="antimodeMenu-button" title="Drag to Annotate" ref={this._commentCont} onPointerDown={this.pointerDown}>
<FontAwesomeIcon icon="comment-alt" size="lg" /></button>,
- <button key="3" className="antimodeMenu-button" title="Drag to Snippetize Selection" style={{ display: this.Status === "snippet" ? "" : "none" }} onPointerDown={this.snippetStart} ref={this._snippetButton}>
- <FontAwesomeIcon icon="cut" size="lg" /></button>,
<button key="4" className="antimodeMenu-button" title="Pin Menu" onClick={this.togglePin} style={this.Pinned ? { backgroundColor: "#121212" } : {}}>
<FontAwesomeIcon icon="thumbtack" size="lg" style={{ transition: "transform 0.1s", transform: this.Pinned ? "rotate(45deg)" : "" }} /> </button>
] : [
diff --git a/src/client/views/pdf/PDFViewer.tsx b/src/client/views/pdf/PDFViewer.tsx
index c85350264..1a09991d2 100644
--- a/src/client/views/pdf/PDFViewer.tsx
+++ b/src/client/views/pdf/PDFViewer.tsx
@@ -30,6 +30,7 @@ import { DocumentDecorations } from "../DocumentDecorations";
import { InkingControl } from "../InkingControl";
import { InkTool } from "../../../new_fields/InkField";
import { TraceMobx } from "../../../new_fields/util";
+import { PdfField } from "../../../new_fields/URLField";
const PDFJSViewer = require("pdfjs-dist/web/pdf_viewer");
const pdfjsLib = require("pdfjs-dist");
@@ -416,7 +417,6 @@ export class PDFViewer extends DocAnnotatableComponent<IViewerProps, PdfDocument
// clear out old marquees and initialize menu for new selection
PDFMenu.Instance.StartDrag = this.startDrag;
PDFMenu.Instance.Highlight = this.highlight;
- PDFMenu.Instance.Snippet = this.createSnippet;
PDFMenu.Instance.Status = "pdf";
PDFMenu.Instance.fadeOut(true);
this._savedAnnotations.values().forEach(v => v.forEach(a => a.remove()));
@@ -514,7 +514,6 @@ export class PDFViewer extends DocAnnotatableComponent<IViewerProps, PdfDocument
}
if (!e.ctrlKey) {
- PDFMenu.Instance.Status = "snippet";
PDFMenu.Instance.Marquee = { left: this._marqueeX, top: this._marqueeY, width: this._marqueeWidth, height: this._marqueeHeight };
}
PDFMenu.Instance.jumpTo(e.clientX, e.clientY);
@@ -598,12 +597,13 @@ export class PDFViewer extends DocAnnotatableComponent<IViewerProps, PdfDocument
if (!this.props.Document[HeightSym]() || !this.props.Document.nativeHeight) {
setTimeout((() => {
this.Document.height = this.Document[WidthSym]() * this._coverPath.height / this._coverPath.width;
- this.Document.nativeHeight = nativeWidth * this._coverPath.height / this._coverPath.width;
+ this.Document.nativeHeight = (this.Document.nativeWidth || 0) * this._coverPath.height / this._coverPath.width;
}).bind(this), 0);
}
const nativeWidth = (this.Document.nativeWidth || 0);
const nativeHeight = (this.Document.nativeHeight || 0);
- return <img key={this._coverPath.path} src={this._coverPath.path} onError={action(() => this._coverPath.path = "http://www.cs.brown.edu/~bcz/face.gif")} onLoad={action(() => this._showWaiting = false)}
+ const resolved = Utils.prepend(this._coverPath.path);
+ return <img key={resolved} src={resolved} onError={action(() => this._coverPath.path = "http://www.cs.brown.edu/~bcz/face.gif")} onLoad={action(() => this._showWaiting = false)}
style={{ position: "absolute", display: "inline-block", top: 0, left: 0, width: `${nativeWidth}px`, height: `${nativeHeight}px` }} />;
}
diff --git a/src/client/views/search/SearchBox.tsx b/src/client/views/search/SearchBox.tsx
index b80c3bb54..2f28ebf76 100644
--- a/src/client/views/search/SearchBox.tsx
+++ b/src/client/views/search/SearchBox.tsx
@@ -234,8 +234,7 @@ export class SearchBox extends React.Component {
y += 300;
}
}
- return Docs.Create.FreeformDocument(docs, { width: 400, height: 400, panX: 175, panY: 175, backgroundColor: "grey", title: `Search Docs: "${this._searchString}"` });
-
+ return Docs.Create.TreeDocument(docs, { width: 200, height: 400, backgroundColor: "grey", title: `Search Docs: "${this._searchString}"` });
}
@action.bound
@@ -341,7 +340,7 @@ export class SearchBox extends React.Component {
return (
<div className="searchBox-container" onPointerDown={e => { e.stopPropagation(); e.preventDefault(); }}>
<div className="searchBox-bar">
- <span className="searchBox-barChild searchBox-collection" onPointerDown={SetupDrag(this.collectionRef, this.startDragCollection)} ref={this.collectionRef} title="Drag Results as Collection">
+ <span className="searchBox-barChild searchBox-collection" onPointerDown={SetupDrag(this.collectionRef, () => this._searchString ? this.startDragCollection() : undefined)} ref={this.collectionRef} title="Drag Results as Collection">
<FontAwesomeIcon icon="object-group" size="lg" />
</span>
<input value={this._searchString} onChange={this.onChange} type="text" placeholder="Search..." id="search-input" ref={this.inputRef}
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts
index 17c1b7e16..b8f11c8c8 100644
--- a/src/new_fields/Doc.ts
+++ b/src/new_fields/Doc.ts
@@ -1,4 +1,4 @@
-import { observable, ObservableMap, runInAction, action } from "mobx";
+import { observable, ObservableMap, runInAction, action, untracked } from "mobx";
import { alias, map, serializable } from "serializr";
import { DocServer } from "../client/DocServer";
import { DocumentType } from "../client/documents/DocumentTypes";
@@ -467,9 +467,14 @@ export namespace Doc {
// to store annotations, ink, and other data.
//
export function fieldExtensionDoc(doc: Doc, fieldKey: string) {
- const extension = doc[fieldKey + "_ext"] as Doc;
- (extension === undefined) && setTimeout(() => CreateDocumentExtensionForField(doc, fieldKey), 0);
- return extension ? extension : undefined;
+ const extension = doc[fieldKey + "_ext"];
+ if (extension === undefined) {
+ setTimeout(() => CreateDocumentExtensionForField(doc, fieldKey), 0);
+ }
+ return extension ? extension as Doc : undefined;
+ }
+ export function fieldExtensionDocSync(doc: Doc, fieldKey: string) {
+ return (doc[fieldKey + "_ext"] as Doc) || CreateDocumentExtensionForField(doc, fieldKey);
}
export function CreateDocumentExtensionForField(doc: Doc, fieldKey: string) {
@@ -682,7 +687,9 @@ export namespace Doc {
}
+ export function LinkOtherAnchor(linkDoc: Doc, anchorDoc: Doc) { return Doc.AreProtosEqual(anchorDoc, Cast(linkDoc.anchor1, Doc) as Doc) ? Cast(linkDoc.anchor2, Doc) as Doc : Cast(linkDoc.anchor1, Doc) as Doc; }
export function LinkEndpoint(linkDoc: Doc, anchorDoc: Doc) { return Doc.AreProtosEqual(anchorDoc, Cast(linkDoc.anchor1, Doc) as Doc) ? "layoutKey1" : "layoutKey2"; }
+
export function linkFollowUnhighlight() {
Doc.UnhighlightAll();
document.removeEventListener("pointerdown", linkFollowUnhighlight);
@@ -748,4 +755,8 @@ Scripting.addGlobal(function aliasDocs(field: any) { return new List<Doc>(field.
Scripting.addGlobal(function docList(field: any) { return DocListCast(field); });
Scripting.addGlobal(function sameDocs(doc1: any, doc2: any) { return Doc.AreProtosEqual(doc1, doc2); });
Scripting.addGlobal(function undo() { return UndoManager.Undo(); });
-Scripting.addGlobal(function redo() { return UndoManager.Redo(); }); \ No newline at end of file
+Scripting.addGlobal(function redo() { return UndoManager.Redo(); });
+Scripting.addGlobal(function selectedDocs(container: Doc, excludeCollections: boolean, prevValue: any) {
+ const docs = DocListCast(Doc.UserDoc().SelectedDocs).filter(d => !Doc.AreProtosEqual(d, container) && (!excludeCollections || !Cast(d.data, listSpec(Doc), null)) && d.type !== DocumentType.KVP);
+ return docs.length ? new List(docs) : prevValue;
+}); \ No newline at end of file
diff --git a/src/new_fields/ScriptField.ts b/src/new_fields/ScriptField.ts
index 6b2723663..b5ad4a7f6 100644
--- a/src/new_fields/ScriptField.ts
+++ b/src/new_fields/ScriptField.ts
@@ -103,7 +103,7 @@ export class ScriptField extends ObjectField {
}
public static CompileScript(script: string, params: object = {}, addReturn = false) {
const compiled = CompileScript(script, {
- params: { this: Doc.name, ...params },
+ params: { this: Doc.name, _last_: "any", ...params },
typecheck: false,
editable: true,
addReturn: addReturn
@@ -124,8 +124,9 @@ export class ScriptField extends ObjectField {
@scriptingGlobal
@Deserializable("computed", deserializeScript)
export class ComputedField extends ScriptField {
+ _lastComputedResult: any;
//TODO maybe add an observable cache based on what is passed in for doc, considering there shouldn't really be that many possible values for doc
- value = computedFn((doc: Doc) => this.script.run({ this: doc }, console.log).result);
+ value = computedFn((doc: Doc) => this._lastComputedResult = this.script.run({ this: doc, _last_: this._lastComputedResult }, console.log).result);
public static MakeScript(script: string, params: object = {}, ) {
const compiled = ScriptField.CompileScript(script, params, false);
return compiled.compiled ? new ComputedField(compiled) : undefined;
diff --git a/src/new_fields/documentSchemas.ts b/src/new_fields/documentSchemas.ts
index 5c2ba6111..21e69fbed 100644
--- a/src/new_fields/documentSchemas.ts
+++ b/src/new_fields/documentSchemas.ts
@@ -48,7 +48,9 @@ export const documentSchema = createSchema({
animateToDimensions: listSpec("number"), // layout information about the target rectangle a document is animating towards
scrollToLinkID: "string", // id of link being traversed. allows this doc to scroll/highlight/etc its link anchor. scrollToLinkID should be set to undefined by this doc after it sets up its scroll,etc.
strokeWidth: "number",
- fontSize: "string"
+ fontSize: "string",
+ LODarea: "number", // area (width*height) where CollectionFreeFormViews switch from a label to rendering contents
+ LODdisable: "boolean", // whether to disbale LOD switching for CollectionFreeFormViews
});
export const positionSchema = createSchema({
diff --git a/src/server/ApiManagers/PDFManager.ts b/src/server/ApiManagers/PDFManager.ts
index a190ab0cb..7e862631d 100644
--- a/src/server/ApiManagers/PDFManager.ts
+++ b/src/server/ApiManagers/PDFManager.ts
@@ -1,7 +1,7 @@
import ApiManager, { Registration } from "./ApiManager";
import { Method } from "../RouteManager";
import RouteSubscriber from "../RouteSubscriber";
-import { exists, createReadStream, createWriteStream } from "fs";
+import { existsSync, createReadStream, createWriteStream } from "fs";
import * as Pdfjs from 'pdfjs-dist';
import { createCanvas } from "canvas";
const imageSize = require("probe-image-size");
@@ -24,35 +24,30 @@ export default class PDFManager extends ApiManager {
}
-function getOrCreateThumbnail(thumbnailName: string, res: express.Response) {
+async function getOrCreateThumbnail(thumbnailName: string, res: express.Response): Promise<void> {
const noExtension = thumbnailName.substring(0, thumbnailName.length - ".png".length);
const pageString = noExtension.split('-')[1];
const pageNumber = parseInt(pageString);
- return new Promise<void>(resolve => {
+ return new Promise<void>(async resolve => {
const path = serverPathToFile(Directory.pdf_thumbnails, thumbnailName);
- exists(path, (exists: boolean) => {
- if (exists) {
- const existingThumbnail = createReadStream(path);
- imageSize(existingThumbnail, (err: any, { width, height }: any) => {
- if (err) {
- console.log(red(`In PDF thumbnail response, unable to determine dimensions of ${thumbnailName}:`));
- console.log(err);
- return;
- }
- res.send({
- path: clientPathToFile(Directory.pdf_thumbnails, thumbnailName),
- width,
- height
- });
- });
- } else {
- const offset = thumbnailName.length - pageString.length - 5;
- const name = thumbnailName.substring(0, offset) + ".pdf";
- const path = serverPathToFile(Directory.pdfs, name);
- CreateThumbnail(path, pageNumber, res);
+ if (existsSync(path)) {
+ const existingThumbnail = createReadStream(path);
+ const { err, viewport } = await new Promise<any>(resolve => {
+ imageSize(existingThumbnail, (err: any, viewport: any) => resolve({ err, viewport }));
+ });
+ if (err) {
+ console.log(red(`In PDF thumbnail response, unable to determine dimensions of ${thumbnailName}:`));
+ console.log(err);
+ return;
}
- resolve();
- });
+ dispatchThumbnail(res, viewport, thumbnailName);
+ } else {
+ const offset = thumbnailName.length - pageString.length - 5;
+ const name = thumbnailName.substring(0, offset) + ".pdf";
+ const path = serverPathToFile(Directory.pdfs, name);
+ await CreateThumbnail(path, pageNumber, res);
+ }
+ resolve();
});
}
@@ -70,19 +65,28 @@ async function CreateThumbnail(file: string, pageNumber: number, res: express.Re
await page.render(renderContext).promise;
const pngStream = canvas.createPNGStream();
const filenames = path.basename(file).split(".");
- const pngFile = serverPathToFile(Directory.pdf_thumbnails, `${filenames[0]}-${pageNumber}.png`);
+ const thumbnailName = `${filenames[0]}-${pageNumber}.png`;
+ const pngFile = serverPathToFile(Directory.pdf_thumbnails, thumbnailName);
const out = createWriteStream(pngFile);
pngStream.pipe(out);
- out.on("finish", () => {
- res.send({
- path: pngFile,
- width: viewport.width,
- height: viewport.height
+ return new Promise<void>((resolve, reject) => {
+ out.on("finish", () => {
+ dispatchThumbnail(res, viewport, thumbnailName);
+ resolve();
+ });
+ out.on("error", error => {
+ console.log(red(`In PDF thumbnail creation, encountered the following error when piping ${pngFile}:`));
+ console.log(error);
+ reject();
});
});
- out.on("error", error => {
- console.log(red(`In PDF thumbnail creation, encountered the following error when piping ${pngFile}:`));
- console.log(error);
+}
+
+function dispatchThumbnail(res: express.Response, { width, height }: Pdfjs.PDFPageViewport, thumbnailName: string) {
+ res.send({
+ path: clientPathToFile(Directory.pdf_thumbnails, thumbnailName),
+ width,
+ height
});
}
diff --git a/src/server/ChildProcessUtilities/daemon/session.ts b/src/server/ChildProcessUtilities/daemon/session.ts
deleted file mode 100644
index fb2b3551e..000000000
--- a/src/server/ChildProcessUtilities/daemon/session.ts
+++ /dev/null
@@ -1,190 +0,0 @@
-import * as request from "request-promise";
-import { log_execution, pathFromRoot } from "../../ActionUtilities";
-import { red, yellow, cyan, green, Color } from "colors";
-import * as nodemailer from "nodemailer";
-import { MailOptions } from "nodemailer/lib/json-transport";
-import { writeFileSync, existsSync, mkdirSync } from "fs";
-import { resolve } from 'path';
-import { ChildProcess, exec, execSync } from "child_process";
-import { createInterface } from "readline";
-const killport = require("kill-port");
-
-process.on('SIGINT', endPrevious);
-const identifier = yellow("__session_manager__:");
-
-let manualRestartActive = false;
-createInterface(process.stdin, process.stdout).on('line', async line => {
- const prompt = line.trim().toLowerCase();
- switch (prompt) {
- case "restart":
- manualRestartActive = true;
- identifiedLog(cyan("Initializing manual restart..."));
- await endPrevious();
- break;
- case "exit":
- identifiedLog(cyan("Initializing session end"));
- await endPrevious();
- identifiedLog("Cleanup complete. Exiting session...\n");
- execSync(killAllCommand());
- break;
- default:
- identifiedLog(red("commands: { exit, restart }"));
- return;
- }
-});
-
-const logPath = resolve(__dirname, "./logs");
-const crashPath = resolve(logPath, "./crashes");
-if (!existsSync(logPath)) {
- mkdirSync(logPath);
-}
-if (!existsSync(crashPath)) {
- mkdirSync(crashPath);
-}
-
-const crashLogPath = resolve(crashPath, `./session_crashes_${new Date().toISOString()}.log`);
-function addLogEntry(message: string, color: Color) {
- const formatted = color(`${message} ${timestamp()}.`);
- identifiedLog(formatted);
- // appendFileSync(crashLogPath, `${formatted}\n`);
-}
-
-function identifiedLog(message?: any, ...optionalParams: any[]) {
- console.log(identifier, message, ...optionalParams);
-}
-
-if (!["win32", "darwin"].includes(process.platform)) {
- identifiedLog(red("Invalid operating system: this script is supported only on Mac and Windows."));
- process.exit(1);
-}
-
-const latency = 10;
-const ports = [1050, 4321];
-const onWindows = process.platform === "win32";
-const LOCATION = "http://localhost";
-const heartbeat = `${LOCATION}:1050/serverHeartbeat`;
-const recipient = "samuel_wilkins@brown.edu";
-const { pid } = process;
-let restarting = false;
-let count = 0;
-
-function startServerCommand() {
- if (onWindows) {
- return '"C:\\Program Files\\Git\\git-bash.exe" -c "npm run start-release"';
- }
- return `osascript -e 'tell app "Terminal"\ndo script "cd ${pathFromRoot()} && npm run start-release"\nend tell'`;
-}
-
-function killAllCommand() {
- if (onWindows) {
- return "taskkill /f /im node.exe";
- }
- return "killall -9 node";
-}
-
-identifiedLog("Initializing session...");
-
-writeLocalPidLog("session_manager", pid);
-
-function writeLocalPidLog(filename: string, contents: any) {
- const path = `./logs/current_${filename}_pid.log`;
- identifiedLog(cyan(`${contents} written to ${path}`));
- writeFileSync(resolve(__dirname, path), `${contents}\n`);
-}
-
-function timestamp() {
- return `@ ${new Date().toISOString()}`;
-}
-
-async function endPrevious() {
- identifiedLog(yellow("Cleaning up previous connections..."));
- current_backup?.kill("SIGTERM");
- await Promise.all(ports.map(port => {
- const task = killport(port, 'tcp');
- return task.catch((error: any) => identifiedLog(red(error)));
- }));
- identifiedLog(yellow("Done. Any failures will be printed in red immediately above."));
-}
-
-let current_backup: ChildProcess | undefined = undefined;
-
-async function checkHeartbeat() {
- let error: any;
- try {
- count && !restarting && process.stdout.write(`${identifier} 👂 `);
- await request.get(heartbeat);
- count && !restarting && console.log('⇠ 💚');
- if (restarting || manualRestartActive) {
- addLogEntry(count++ ? "Backup server successfully restarted" : "Server successfully started", green);
- restarting = false;
- }
- } catch (e) {
- count && !restarting && console.log("⇠ 💔");
- error = e;
- } finally {
- if (error) {
- if (!restarting || manualRestartActive) {
- restarting = true;
- if (count && !manualRestartActive) {
- console.log();
- addLogEntry("Detected a server crash", red);
- identifiedLog(red(error.message));
- await endPrevious();
- await log_execution({
- startMessage: identifier + " Sending crash notification email",
- endMessage: ({ error, result }) => {
- const success = error === null && result === true;
- return identifier + ` ${(success ? `Notification successfully sent to` : `Failed to notify`)} ${recipient} ${timestamp()}`;
- },
- action: async () => notify(error || "Hmm, no error to report..."),
- color: cyan
- });
- identifiedLog(green("Initiating server restart..."));
- }
- manualRestartActive = false;
- current_backup = exec(startServerCommand(), err => identifiedLog(err?.message || count ? "Previous server process exited." : "Spawned initial server."));
- writeLocalPidLog("server", `${(current_backup?.pid ?? -2) + 1} created ${timestamp()}`);
- }
- }
- setTimeout(checkHeartbeat, 1000 * latency);
- }
-}
-
-async function startListening() {
- identifiedLog(yellow(`After initialization, will poll server heartbeat repeatedly...\n`));
- if (!LOCATION) {
- identifiedLog(red("No location specified for session manager. Please include as a command line environment variable or in a .env file."));
- process.exit(0);
- }
- await checkHeartbeat();
-}
-
-function emailText(error: any) {
- return [
- `Hey ${recipient.split("@")[0]},`,
- "You, as a Dash Administrator, are being notified of a server crash event. Here's what we know:",
- `Location: ${LOCATION}\nError: ${error}`,
- "The server should already be restarting itself, but if you're concerned, use the Remote Desktop Connection to monitor progress."
- ].join("\n\n");
-}
-
-async function notify(error: any) {
- const smtpTransport = nodemailer.createTransport({
- service: 'Gmail',
- auth: {
- user: 'brownptcdash@gmail.com',
- pass: 'browngfx1'
- }
- });
- const mailOptions = {
- to: recipient,
- from: 'brownptcdash@gmail.com',
- subject: 'Dash Server Crash',
- text: emailText(error)
- } as MailOptions;
- return new Promise<boolean>(resolve => {
- smtpTransport.sendMail(mailOptions, (dispatchError: Error | null) => resolve(dispatchError === null));
- });
-}
-
-startListening(); \ No newline at end of file
diff --git a/src/server/ChildProcessUtilities/ProcessFactory.ts b/src/server/ProcessFactory.ts
index 745b1479a..acb8b3a99 100644
--- a/src/server/ChildProcessUtilities/ProcessFactory.ts
+++ b/src/server/ProcessFactory.ts
@@ -1,10 +1,8 @@
import { existsSync, mkdirSync } from "fs";
-import { pathFromRoot, log_execution, fileDescriptorFromStream } from '../ActionUtilities';
-import { red, green } from "colors";
+import { pathFromRoot, fileDescriptorFromStream } from './ActionUtilities';
import rimraf = require("rimraf");
import { ChildProcess, spawn, StdioOptions } from "child_process";
import { Stream } from "stream";
-import { resolve } from "path";
export namespace ProcessFactory {
@@ -20,27 +18,6 @@ export namespace ProcessFactory {
return child;
}
- export namespace NamedAgents {
-
- export async function persistenceDaemon() {
- await log_execution({
- startMessage: "\ninitializing persistence daemon",
- endMessage: ({ result, error }) => {
- const success = error === null && result !== undefined;
- if (!success) {
- console.log(red("failed to initialize the persistance daemon"));
- console.log(error);
- process.exit(0);
- }
- return "failsafe daemon process successfully spawned";
- },
- action: () => createWorker('npx', ['ts-node', resolve(__dirname, "./daemon/persistence_daemon.ts")], ["ignore", "inherit", "inherit"]),
- color: green
- });
- console.log();
- }
- }
-
}
export namespace Logger {
diff --git a/src/server/authentication/models/current_user_utils.ts b/src/server/authentication/models/current_user_utils.ts
index 50bfb4832..fd01a291d 100644
--- a/src/server/authentication/models/current_user_utils.ts
+++ b/src/server/authentication/models/current_user_utils.ts
@@ -47,6 +47,7 @@ export class CurrentUserUtils {
doc.activePen = doc;
const docProtoData: { title: string, icon: string, drag?: string, ignoreClick?: boolean, click?: string, ischecked?: string, activePen?: Doc, backgroundColor?: string, dragFactory?: Doc }[] = [
{ title: "collection", icon: "folder", ignoreClick: true, drag: 'Docs.Create.FreeformDocument([], { nativeWidth: undefined, nativeHeight: undefined, width: 150, height: 100, title: "freeform" })' },
+ { title: "preview", icon: "expand", ignoreClick: true, drag: 'Docs.Create.DocumentDocument(undefined, { width: 250, height: 250, title: "container" })' },
{ title: "todo item", icon: "check", ignoreClick: true, drag: 'getCopy(this.dragFactory, true)', dragFactory: notes[notes.length - 1] },
{ title: "web page", icon: "globe-asia", ignoreClick: true, drag: 'Docs.Create.WebDocument("https://en.wikipedia.org/wiki/Hedgehog", { width: 300, height: 300, title: "New Webpage" })' },
{ title: "cat image", icon: "cat", ignoreClick: true, drag: 'Docs.Create.ImageDocument("https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg", { width: 200, title: "an image of a cat" })' },
diff --git a/src/server/index.ts b/src/server/index.ts
index bc481e579..2cc35ccec 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -23,7 +23,7 @@ import GeneralGoogleManager from "./ApiManagers/GeneralGoogleManager";
import GooglePhotosManager from "./ApiManagers/GooglePhotosManager";
import { yellow, red } from "colors";
import { disconnect } from "../server/Initialization";
-import { ProcessFactory, Logger } from "./ChildProcessUtilities/ProcessFactory";
+import { ProcessFactory, Logger } from "./ProcessFactory";
export const publicDirectory = path.resolve(__dirname, "public");
export const filesDirectory = path.resolve(publicDirectory, "files");
diff --git a/src/server/session_manager/config.ts b/src/server/session_manager/config.ts
new file mode 100644
index 000000000..ebbd999c6
--- /dev/null
+++ b/src/server/session_manager/config.ts
@@ -0,0 +1,33 @@
+import { resolve } from 'path';
+import { yellow } from "colors";
+
+export const latency = 10;
+export const ports = [1050, 4321];
+export const onWindows = process.platform === "win32";
+export const heartbeat = `http://localhost:1050/serverHeartbeat`;
+export const recipient = "samuel_wilkins@brown.edu";
+export const { pid, platform } = process;
+
+/**
+ * Logging
+ */
+export const identifier = yellow("__session_manager__:");
+
+/**
+ * Paths
+ */
+export const logPath = resolve(__dirname, "./logs");
+export const crashPath = resolve(logPath, "./crashes");
+
+/**
+ * State
+ */
+export enum SessionState {
+ STARTING = "STARTING",
+ INITIALIZED = "INITIALIZED",
+ LISTENING = "LISTENING",
+ AUTOMATICALLY_RESTARTING = "CRASH_RESTARTING",
+ MANUALLY_RESTARTING = "MANUALLY_RESTARTING",
+ EXITING = "EXITING",
+ UPDATING = "UPDATING"
+} \ No newline at end of file
diff --git a/src/server/session_manager/input_manager.ts b/src/server/session_manager/input_manager.ts
new file mode 100644
index 000000000..a95e6baae
--- /dev/null
+++ b/src/server/session_manager/input_manager.ts
@@ -0,0 +1,101 @@
+import { createInterface, Interface } from "readline";
+import { red } from "colors";
+
+export interface Configuration {
+ identifier: string;
+ onInvalid?: (culprit?: string) => string | string;
+ isCaseSensitive?: boolean;
+}
+
+export interface Registration {
+ argPattern: RegExp[];
+ action: (parsedArgs: IterableIterator<string>) => any | Promise<any>;
+}
+
+export default class InputManager {
+ private identifier: string;
+ private onInvalid: ((culprit?: string) => string) | string;
+ private isCaseSensitive: boolean;
+ private commandMap = new Map<string, Registration[]>();
+ public interface: Interface;
+ private busy = false;
+ private keys: string | undefined;
+
+ constructor({ identifier: prompt, onInvalid, isCaseSensitive }: Configuration) {
+ this.identifier = prompt;
+ this.onInvalid = onInvalid || this.usage;
+ this.isCaseSensitive = isCaseSensitive ?? true;
+ this.interface = createInterface(process.stdin, process.stdout).on('line', this.considerInput);
+ }
+
+ private usage = () => {
+ const resolved = this.keys;
+ if (resolved) {
+ return resolved;
+ }
+ const members: string[] = [];
+ const keys = this.commandMap.keys();
+ let next: IteratorResult<string>;
+ while (!(next = keys.next()).done) {
+ members.push(next.value);
+ }
+ return `${this.identifier} commands: { ${members.sort().join(", ")} }`;
+ }
+
+ public registerCommand = (basename: string, argPattern: RegExp[], action: any | Promise<any>) => {
+ const existing = this.commandMap.get(basename);
+ const registration = { argPattern, action };
+ if (existing) {
+ existing.push(registration);
+ } else {
+ this.commandMap.set(basename, [registration]);
+ }
+ }
+
+ private invalid = (culprit?: string) => {
+ console.log(red(typeof this.onInvalid === "string" ? this.onInvalid : this.onInvalid(culprit)));
+ this.busy = false;
+ }
+
+ private considerInput = async (line: string) => {
+ if (this.busy) {
+ console.log(red("Busy"));
+ return;
+ }
+ this.busy = true;
+ line = line.trim();
+ if (this.isCaseSensitive) {
+ line = line.toLowerCase();
+ }
+ const [command, ...args] = line.split(/\s+/g);
+ if (!command) {
+ return this.invalid();
+ }
+ const registered = this.commandMap.get(command);
+ if (registered) {
+ const { length } = args;
+ const candidates = registered.filter(({ argPattern: { length: count } }) => count === length);
+ for (const { argPattern, action } of candidates) {
+ const parsed: string[] = [];
+ let matched = false;
+ if (length) {
+ for (let i = 0; i < length; i++) {
+ let matches: RegExpExecArray | null;
+ if ((matches = argPattern[i].exec(args[i])) === null) {
+ break;
+ }
+ parsed.push(matches[0]);
+ }
+ matched = true;
+ }
+ if (!length || matched) {
+ await action(parsed[Symbol.iterator]());
+ this.busy = false;
+ return;
+ }
+ }
+ }
+ this.invalid(command);
+ }
+
+} \ No newline at end of file
diff --git a/src/server/session_manager/logs/current_daemon_pid.log b/src/server/session_manager/logs/current_daemon_pid.log
new file mode 100644
index 000000000..557e3d7c3
--- /dev/null
+++ b/src/server/session_manager/logs/current_daemon_pid.log
@@ -0,0 +1 @@
+26860
diff --git a/src/server/session_manager/logs/current_server_pid.log b/src/server/session_manager/logs/current_server_pid.log
new file mode 100644
index 000000000..85fdb7ae0
--- /dev/null
+++ b/src/server/session_manager/logs/current_server_pid.log
@@ -0,0 +1 @@
+54649 created @ 2019-12-14T08:04:42.391Z
diff --git a/src/server/session_manager/logs/current_session_manager_pid.log b/src/server/session_manager/logs/current_session_manager_pid.log
new file mode 100644
index 000000000..75c23b35a
--- /dev/null
+++ b/src/server/session_manager/logs/current_session_manager_pid.log
@@ -0,0 +1 @@
+54643
diff --git a/src/server/session_manager/session_manager.ts b/src/server/session_manager/session_manager.ts
new file mode 100644
index 000000000..d8b2f6e74
--- /dev/null
+++ b/src/server/session_manager/session_manager.ts
@@ -0,0 +1,199 @@
+import * as request from "request-promise";
+import { log_execution, pathFromRoot } from "../ActionUtilities";
+import { red, yellow, cyan, green, Color } from "colors";
+import * as nodemailer from "nodemailer";
+import { MailOptions } from "nodemailer/lib/json-transport";
+import { writeFileSync, existsSync, mkdirSync } from "fs";
+import { resolve } from 'path';
+import { ChildProcess, exec, execSync } from "child_process";
+import InputManager from "./input_manager";
+import { identifier, logPath, crashPath, onWindows, pid, ports, heartbeat, recipient, latency, SessionState } from "./config";
+const killport = require("kill-port");
+
+process.on('SIGINT', endPrevious);
+let state: SessionState = SessionState.STARTING;
+const is = (...reference: SessionState[]) => reference.includes(state);
+const set = (reference: SessionState) => state = reference;
+
+const { registerCommand } = new InputManager({ identifier });
+
+registerCommand("restart", [], async () => {
+ set(SessionState.MANUALLY_RESTARTING);
+ identifiedLog(cyan("Initializing manual restart..."));
+ await endPrevious();
+});
+
+registerCommand("exit", [], exit);
+
+async function exit() {
+ set(SessionState.EXITING);
+ identifiedLog(cyan("Initializing session end"));
+ await endPrevious();
+ identifiedLog("Cleanup complete. Exiting session...\n");
+ execSync(killAllCommand());
+}
+
+registerCommand("update", [], async () => {
+ set(SessionState.UPDATING);
+ identifiedLog(cyan("Initializing server update from version control..."));
+ await endPrevious();
+ await new Promise<void>(resolve => {
+ exec(updateCommand(), error => {
+ if (error) {
+ identifiedLog(red(error.message));
+ }
+ resolve();
+ });
+ });
+ await exit();
+});
+
+registerCommand("state", [], () => identifiedLog(state));
+
+if (!existsSync(logPath)) {
+ mkdirSync(logPath);
+}
+if (!existsSync(crashPath)) {
+ mkdirSync(crashPath);
+}
+
+function addLogEntry(message: string, color: Color) {
+ const formatted = color(`${message} ${timestamp()}.`);
+ identifiedLog(formatted);
+ // appendFileSync(resolve(crashPath, `./session_crashes_${new Date().toISOString()}.log`), `${formatted}\n`);
+}
+
+function identifiedLog(message?: any, ...optionalParams: any[]) {
+ console.log(identifier, message, ...optionalParams);
+}
+
+if (!["win32", "darwin"].includes(process.platform)) {
+ identifiedLog(red("Invalid operating system: this script is supported only on Mac and Windows."));
+ process.exit(1);
+}
+
+const windowsPrepend = (command: string) => `"C:\\Program Files\\Git\\git-bash.exe" -c "${command}"`;
+const macPrepend = (command: string) => `osascript -e 'tell app "Terminal"\ndo script "cd ${pathFromRoot()} && ${command}"\nend tell'`;
+
+function updateCommand() {
+ const command = "git pull && npm install";
+ if (onWindows) {
+ return windowsPrepend(command);
+ }
+ return macPrepend(command);
+}
+
+function startServerCommand() {
+ const command = "npm run start-release";
+ if (onWindows) {
+ return windowsPrepend(command);
+ }
+ return macPrepend(command);
+}
+
+function killAllCommand() {
+ if (onWindows) {
+ return "taskkill /f /im node.exe";
+ }
+ return "killall -9 node";
+}
+
+identifiedLog("Initializing session...");
+
+writeLocalPidLog("session_manager", pid);
+
+function writeLocalPidLog(filename: string, contents: any) {
+ const path = `./logs/current_${filename}_pid.log`;
+ identifiedLog(cyan(`${contents} written to ${path}`));
+ writeFileSync(resolve(__dirname, path), `${contents}\n`);
+}
+
+function timestamp() {
+ return `@ ${new Date().toISOString()}`;
+}
+
+async function endPrevious() {
+ identifiedLog(yellow("Cleaning up previous connections..."));
+ current_backup?.kill("SIGKILL");
+ await Promise.all(ports.map(port => {
+ const task = killport(port, 'tcp');
+ return task.catch((error: any) => identifiedLog(red(error)));
+ }));
+ identifiedLog(yellow("Done. Any failures will be printed in red immediately above."));
+}
+
+let current_backup: ChildProcess | undefined = undefined;
+
+async function checkHeartbeat() {
+ const listening = is(SessionState.LISTENING);
+ let error: any;
+ try {
+ listening && process.stdout.write(`${identifier} 👂 `);
+ await request.get(heartbeat);
+ listening && console.log('⇠ 💚');
+ if (!listening) {
+ addLogEntry(is(SessionState.INITIALIZED) ? "Server successfully started" : "Backup server successfully restarted", green);
+ set(SessionState.LISTENING);
+ }
+ } catch (e) {
+ listening && console.log("⇠ 💔\n");
+ error = e;
+ } finally {
+ if (error && !is(SessionState.AUTOMATICALLY_RESTARTING, SessionState.INITIALIZED, SessionState.UPDATING)) {
+ if (is(SessionState.STARTING)) {
+ set(SessionState.INITIALIZED);
+ } else if (is(SessionState.MANUALLY_RESTARTING)) {
+ set(SessionState.AUTOMATICALLY_RESTARTING);
+ } else {
+ set(SessionState.AUTOMATICALLY_RESTARTING);
+ addLogEntry("Detected a server crash", red);
+ identifiedLog(red(error.message));
+ await endPrevious();
+ await log_execution({
+ startMessage: identifier + " Sending crash notification email",
+ endMessage: ({ error, result }) => {
+ const success = error === null && result === true;
+ return identifier + ` ${(success ? `Notification successfully sent to` : `Failed to notify`)} ${recipient} ${timestamp()}`;
+ },
+ action: async () => notify(error || "Hmm, no error to report..."),
+ color: cyan
+ });
+ identifiedLog(green("Initiating server restart..."));
+ }
+ current_backup = exec(startServerCommand(), err => identifiedLog(err?.message || is(SessionState.INITIALIZED) ? "Spawned initial server." : "Previous server process exited."));
+ writeLocalPidLog("server", `${(current_backup?.pid ?? -2) + 1} created ${timestamp()}`);
+ }
+ setTimeout(checkHeartbeat, 1000 * latency);
+ }
+}
+
+function emailText(error: any) {
+ return [
+ `Hey ${recipient.split("@")[0]},`,
+ "You, as a Dash Administrator, are being notified of a server crash event. Here's what we know:",
+ `Location: ${heartbeat}\nError: ${error}`,
+ "The server should already be restarting itself, but if you're concerned, use the Remote Desktop Connection to monitor progress."
+ ].join("\n\n");
+}
+
+async function notify(error: any) {
+ const smtpTransport = nodemailer.createTransport({
+ service: 'Gmail',
+ auth: {
+ user: 'brownptcdash@gmail.com',
+ pass: 'browngfx1'
+ }
+ });
+ const mailOptions = {
+ to: recipient,
+ from: 'brownptcdash@gmail.com',
+ subject: 'Dash Server Crash',
+ text: emailText(error)
+ } as MailOptions;
+ return new Promise<boolean>(resolve => {
+ smtpTransport.sendMail(mailOptions, (dispatchError: Error | null) => resolve(dispatchError === null));
+ });
+}
+
+identifiedLog(yellow(`After initialization, will poll server heartbeat repeatedly...\n`));
+checkHeartbeat(); \ No newline at end of file