This is an automated email from the ASF dual-hosted git repository. dweiss pushed a commit to branch jira/solr-13105-toMerge in repository https://gitbox.apache.org/repos/asf/solr.git
commit 40bb396bbc443fab9674df896559224798d731a6 Author: Eric Pugh <[email protected]> AuthorDate: Mon Jan 11 14:58:11 2021 -0500 SOLR-15010 Try to use jattach for threaddump if jstack is missing (#2192) * introduce jattach check if jstack is missing. jattach ships in the Solr docker image instead of jstack. * get the full path to the jattach command Co-authored-by: Christine Poerschke <[email protected]> --- solr/CHANGES.txt | 6 ++++-- solr/bin/solr | 12 ++++++++---- solr/docker/README.md | 10 +++++----- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 0f499e9..a62ca52 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -227,7 +227,7 @@ Improvements * SOLR-14965: metrics: Adds two metrics to the SolrCloud Overseer: solr_metrics_overseer_stateUpdateQueueSize and solr_metrics_overseer_collectionWorkQueueSize with corresponding entries in the the Prometheus exporter's default/stock configuration. (Saatchi Bhalla, Megan Carey, Andrzej Białecki, David Smiley) - + * SOLR-14827: Refactor schema loading to not use XPath (noble) * SOLR-14987: Reuse HttpSolrClient per node vs. one per Solr core when using CloudSolrStream (Timothy Potter) @@ -259,7 +259,7 @@ Optimizations Partial updates to nested documents and Realtime Get of child documents is now more reliable. (David Smiley, Thomas Wöckinger) -* SOLR-15036: Automatically wrap a facet expression with a select / rollup / sort / plist when using a +* SOLR-15036: Automatically wrap a facet expression with a select / rollup / sort / plist when using a collection alias with multiple collections and count|sum|min|max|avg metrics. (Timothy Potter) Bug Fixes @@ -348,6 +348,8 @@ Other Changes * SOLR-14999: New option for specifying the advertised Solr Port (hostPort). Still defaults to "jetty.port". (Houston Putman) +* SOLR-15010: Thread dump using jattach if available and jstack is missing. (Eric Pugh) + ================== 8.7.0 ================== Consult the lucene/CHANGES.txt file for additional, low level, changes in this release. diff --git a/solr/bin/solr b/solr/bin/solr index 24b1a4f..f6c723a 100755 --- a/solr/bin/solr +++ b/solr/bin/solr @@ -110,9 +110,10 @@ elif [ -n "$JAVA_HOME" ]; then JAVA="$java/java" if [ -x "$java/jstack" ]; then JSTACK="$java/jstack" + elif [ -x "$(command -v jattach)" ]; then + JATTACH="$(command -v jattach)" else - echo >&2 "The currently defined JAVA_HOME ($JAVA_HOME) refers to a location" - echo >&2 "where java was found but jstack was not found. Continuing." + echo >&2 "neither jattach nor jstack in $JAVA_HOME could be found, so no thread dumps are possible. Continuing." fi break fi @@ -429,7 +430,7 @@ function print_usage() { echo "" echo " -c <collection> Collection to run healthcheck against." echo "" - echo " -z <zkHost> Zookeeper connection string; unnecessary if ZK_HOST is defined in solr.in.sh;" + echo " -z <zkHost> Zookeeper connection string; unnecessary if ZK_HOST is defined in solr.in.sh;" echo " otherwise, default is localhost:9983" echo "" echo " -V Enable more verbose output" @@ -831,7 +832,7 @@ function run_package() { # tries to gracefully stop Solr using the Jetty # stop command and if that fails, then uses kill -9 -# (will attempt to jstack before killing) +# (will attempt to thread dump before killing) function stop_solr() { DIR="$1" @@ -871,6 +872,9 @@ function stop_solr() { if [ "$JSTACK" != "" ]; then echo -e "Solr process $SOLR_PID is still running; jstacking it now." $JSTACK $SOLR_PID + elif [ "$JATTACH" != "" ]; then + echo -e "Solr process $SOLR_PID is still running; jattach threaddumping it now." + $JATTACH $SOLR_PID threaddump fi echo -e "Solr process $SOLR_PID is still running; forcefully killing it now." kill -9 $SOLR_PID diff --git a/solr/docker/README.md b/solr/docker/README.md index 3356419..583e8b0 100644 --- a/solr/docker/README.md +++ b/solr/docker/README.md @@ -226,8 +226,8 @@ Other ways of extending the image are to create custom Docker images that inheri The `jcmd`, `jmap` `jstack` tools can be useful for debugging Solr inside the container. These tools are not included with the JRE, but this image includes the [jattach](https://github.com/apangin/jattach) utility which lets you do much of the same. Usage: jattach <pid> <cmd> [args ...] - - Commands: + + Commands: load : load agent library properties : print system properties agentProperties : print agent properties @@ -238,8 +238,8 @@ The `jcmd`, `jmap` `jstack` tools can be useful for debugging Solr inside the co setflag : modify manageable VM flag printflag : print VM flag jcmd : execute jcmd command - -Example comands to do a thread dump and get heap info for PID 10: + +Example commands to do a thread dump and get heap info for PID 10: jattach 10 threaddump jattach 10 jcmd GC.heap_info @@ -272,4 +272,4 @@ This repository is available on , and the official build is on the [Docker Hub]( # History -This project was started in 2015 by [Martijn Koster](https://github.com/makuk66) in the [docker-solr](https://github.com/docker-solr/docker-solr) repository. In 2019 maintainership and copyright was transferred to the Apache Lucene/Solr project, and in 2020 the project was migrated to live within the Solr project. Many thanks to Martijn for all your contributions over the years! \ No newline at end of file +This project was started in 2015 by [Martijn Koster](https://github.com/makuk66) in the [docker-solr](https://github.com/docker-solr/docker-solr) repository. In 2019 maintainership and copyright was transferred to the Apache Lucene/Solr project, and in 2020 the project was migrated to live within the Solr project. Many thanks to Martijn for all your contributions over the years!
