diff options
author | bob <bcz@cs.brown.edu> | 2019-12-16 10:40:45 -0500 |
---|---|---|
committer | bob <bcz@cs.brown.edu> | 2019-12-16 10:40:45 -0500 |
commit | 9c3acfbd6ad518cd1afcc05a521480d93c07f13a (patch) | |
tree | a6c6bbbfc2250e7c6d1f1d4b9757e55128597edf | |
parent | 7584c5bed0de45f2f656fb289ff67463fb1958ef (diff) | |
parent | 001cea83f6c57914e0e76a75a94f3e06e542a419 (diff) |
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
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 |