Favourite Filters Issue Count Performance problems in large instances (Jira)

As described in this Atlassian ticket there may be performance problems using Favourite Filters gadget in large Jira instances.

In our Jira instance (>2m issues, >10k users) these favfilters?showCounts=true requests where very expensive to CPU load.

In Atlassian ticket there is workaround provided how to turn off this feature in proxy level, but what to do if no proxy is used in front of Jira?

In our case we used Tuckey UrlRewriteFilter which is built in Jira by default. Open /jira_install_dir/atlassian-jira/WEB-INF/urlrewrite.xml and add this code before closing </urlrewrite> tag:

<rule enabled="true">
    <name>Disables Favourite Filters Issue Count</name>
    <condition type="parameter" name="showCounts" operator="equal">true</condition>
    <from>^/rest/gadget/1.0/favfilters</from>
    <to type="permanent-redirect">/rest/gadget/1.0/favfilters?showCounts=false</to>
</rule>

After Jira restart users will see “UNDEFINED” result if they turn on Issue Count functionality.

Paštaisīts digitālais fotorāmis, versija 2.0

Iepriekš jau biju aprakstījis, kā uzmeistaroju digitālo fotorāmi. Tā kā pašam nepatika izskats, kā arī gļuki un lēndarbība, kas saistīta ar RPi Zero W veiktspēju, tapa digitālā fotorāmja otrā versija.

IKEA papīra rāmis tika aizvietots ar paštaisītu koka konstrukciju. Koks nobeicēts ar lineļļu. RPi Zero W aizvietoju ar jaudīgāku single-board datoriņu – RPi Pi 2 Model B. Laika taupības nolūkos izmantoju chilipie-kiosk operētājsistēmu, kas jau saknē nodrošina visu man nepieciešamo.

OpenWeatherMap funkciju aizvācu, jo informācija bija pārāk neprecīza.

Paštaisīts digitālais fotorāmis

Beidzot pabeidzu veidot paštaisīto fotorāmi. Izejvielas:

  • Raspberry Pi Zero W
  • Pirms 4 gadiem no portatīvā datora  izravēts 14” LCD ekrāns
  • Pirms 4 gadiem no AliExpress sūtīts LCD Controller Board
  • LCD strāvas barošanas bloks
  • Strāvas Step Down modulis, lai atdalītu un nobarotu Raspberry ar strāvu, kas domāta LCD
  • Aukstas gaismas LED virtene
  • Slēdzis LCD un LED virtenes izslēgšanai
  • IKEA fotorāmis
  • Montāžas līme un stiprinājumi

Rāmja aizmugurē neiespringu uz skaistu izkārtojumu un tīrību, jo, pieliekot pie sienas, tas nav redzams.

Uz Raspberry Pi uzstādīts Raspbian Lite OS un iestatīts kioska režīms – pie katras piestartēšanas tiek atvērts Chromium pārlūks ar iepriekš iestatītu mājaslapu. Lokālajā tīklā uz citas iekārtas darbojas Openmediavault, kas papildus pamatdarbam hostē arī mājaslapu fotorāmim.

Mājaslapa ir vienkāršs uz Uikit front-end framework veidots bilžu slaidšovs.  Papildus tiek ielādēts: Google kalendārs izmantojot FullCalendar, informācija par laika apstākļiem no OpenWeatherMap un foto uzņemšanas datums ar PHP exif_read_data funkciju. Visa tekstuālā papildus informācija tiek pārlādēta reizi stundā ar Javascript setInterval. Pats Raspberry ar Crontab tiek pārstartēts katru nakti, lai izvairītos no atmiņas problēmām Chromium cache dēļ.

Tā kā mājaslapa stāv uz lokālā NAS, tad bilžu papildināšana ir tik vienkārša, kā Adobe Lightroom programmā uzspiest pogu Export to Fotorāmis.

Pašlaik mazjaudīgais Zero bez problēmām sagremo slaidšovu ar ~300 fotoattēliem.

How to disable the PDF Preview feature in JIRA 7

  • Copy locally and extract Jira bundled plugin jira-fileviewer-plugin-7.2.1.jar located at ./atlassian-jira/WEB-INF/atlassian-bundled-plugins
  • In extracted folder open file-service.js and delete (or wrap in comment) following lines:
if (!featureManager.isFeatureEnabled("jira.fileviewer.disable.pdf")) {
    selectors.document.push("a[file-preview-type=document]");
}
addDocumentSelector: function addDocumentSelector(sel) {
    pushSingleOrArray(selectors.document, sel);
}
  • Remove same lines from minified file-service-min.js.  You can use JS prettify and minify tools to do this.
  • Save files. Put folder content in ZIP. Rename file to jira-fileviewer-plugin-7.2.1.jar, copy to server and restart Jira.

Script to restart JIRA automatically (Jira)

I have modified Atlassian script to support following features:

  • Cleanup for leftover files – .jira-home.lock, catalina.pid
  • catalina.out log backup
  • Check for running process and force kill JIRA if it won’t stop on time
#!/bin/sh -e
# JIRA startup script
# Description: For JIRA 7.2.7

# Define some variables
# Name of app ( JIRA, Confluence, etc )
APP=jira
# Name of the user to run as
USER=root
# Location of application's bin directory
BASE=/u01/jira/Prod_7.2.7
export JIRAHOME=$BASE
# Location of application's home directory
JHOME=/u01/jira/Prod_7.2.7_home
export JIRA_HOME=$JHOME
# Location of Java JDK
export JAVA_HOME=/usr/java/default

case "$1" in
  # Start command
  start)
    echo "Starting $APP"
    lockfile="$JHOME/.jira-home.lock"
    [ -e $lockfile ] && rm $lockfile

    pidfile="$BASE/work/catalina.pid"
    [ -e $pidfile ] && rm $pidfile

    logfile="$BASE/logs/catalina.out"
    [ -e $logfile ] && mv $BASE/logs/catalina.out "$BASE/logs/catalina-`date +%F`.out"

    /bin/su -m $USER -c "cd $BASE/bin && $BASE/bin/start-jira.sh &> /dev/null"
    ;;
  # Stop command
  stop)

    blah=""
    temp=`ps aux|grep java|grep jira|grep -v grep|awk '{print $2}'`
    pidfile="$BASE/work/catalina.pid"

    if [ "$temp" == "$blah" ]
    then
       echo 'JIRA is not running'
       exit 0
    fi

    echo 'Shutting down JIRA'
    /bin/su -m $USER -c "$BASE/bin/stop-jira.sh &> /dev/null"

    echo 'Sleeping 30 seconds, because sleeping is good...'
    sleep 30 

    temp=`ps aux|grep java|grep jira|grep -v grep|awk '{print $2}'`

    echo 'Now checking if JIRA is still running...'

    if [ "$temp" != "$blah" ]
    then
       echo 'Force killing JIRA now...'
       /bin/su -m $USER -c "$BASE/bin/catalina.sh stop -force $num >/dev/null 2>&1"
       echo 'Killed'
       exit 0
    else
       echo 'JIRA is already down'
       exit 0
    fi

    echo "...done"
    exit 0
    ;;
   # Restart command
   restart)
        $0 stop
        sleep 60
        $0 start
        ;;
  *)
    echo "Usage: jira {start|restart|stop}"
    exit 1
    ;;
esac

exit 0