Skip navigation
2012

As you probably noticed, jboss.org JIRA instance running at http://issues.jboss.org have been upgraded today to JIRA 5.1.4 and GreenHopper 6.0.3

 

This minor JIRA update patches few problems as you can see in Release Notes. Probably most noticeable for common user is better handling of text selection in fields on issue detail page, which do not force inline editing anymore.

 

GreenHopper has been updated from 6.0 to 6.0.3 which seems as minor upgrade too. But beside bunch of bugfixes it brings much more new feature than expected, as you can see in https://confluence.atlassian.com/display/GH/GreenHopper+6.0.2+Release+Notes and https://confluence.atlassian.com/display/GH/GreenHopper+6.0.3+Release+Notes. Main enhancements and changes:

  • Multiple active sprints
  • Ability to rename future sprints
  • Burndown Report shows what didn't get done
  • Customisable Issue Detail View
  • Visual indicators for distinct types of board.
  • Easier management of Remaining Estimate

 

Enjoy

Hi,

 

we are happy to announce upgrade of JBoss Community Search service http://search.jboss.org/.

 

Indexing More Mail Lists

 

We are starting indexing more community mailing lists, in particular we added CDI, Bean Validation, JBoss Forge, PicketLink, JBoss Developer Framework and JBoss-RPM mail lists.

 

Respective filters were added to the Project filter:

project-filter.png

Adding OpenSearch Support

OpenSearch is a collection of technologies that allow publishing of search results in a format suitable for syndication and aggregation. For example many web browsers have built-in support for OpenSearch.

 

Ricardo Martinelli Oliveira approached our team with the idea to implement it for JBoss Community search and he provided first implementation. We took his idea a step further and developed a solid OpenSearch support including extensions like search suggestions and autodiscovery that will make sure it adapts to any changes we make in the underlying implementation going forward (so once you install it, it will not stop working when we rename the URL endpoint).

 

The following is how you can make use of OpenSearch in Firefox, Google Chrome and Safari browsers. For video demo see below:

Firefox

Firefox recognises OpenSearch plugins and gives you a chance to add them into your plugin list with a few clicks. It also supports search suggestions.

 

  • When you visit search.jboss.org Firefox will recognise OpenSearch plugin and if it hasn't been already installed you can install it by clicking on a magnifier symbol in search field. Then select And JBoss Community.
  • To make use of the plugin place your cursor into the search field, select JBoss Community and start typing. Note that you can get search suggestions at this point.
  • More: Learn to Manage Your Search Engines in Firefox.

Google Chrome

Google Chrome recognises and adds OpenSearch plugins automatically on the fly. So, as soon as you visit search.jboss.org for the first time, you can easily make use of the plugin. Google Chrome also supports search suggestions.

 

  • Visit search.jboss.org to make sure the OpenSearch plugin has been installed.
  • To make use of the plugin start typing in the web browser address bar search.jboss.org and at some point the browser will tell you that you can "Press tab to search JBoss Community".
  • Press tab. Now you can insert your query. Note that Google Chrome gives you search suggestions at this point.
  • More: Manage search engines in Google Chrome.

Safari

Safari browser is one of a few browsers that do not support OpenSearch out of the box. However, there is a nice Safari plugin called OpenSearchForSafari that adds support for it.

 

  • First you need to install the plugin.
  • Then visit search.jboss.org, note that the plugin signals a new OpenSearch plugin has been detected on this page and can be added to the list of your plugins. Just click the icon or use ⌥⌘O (Option-Command-O) and add the "JBoss Community" plugin.
  • Once you have the plugin added you can search in JBoss Community easily. Unfortunately, the OpenSearchForSafari plugin does not allow for sorting of individual plugins so each time you issue a new search you have to select appropriate plugin from the list.
  • Unfortunately, OpenSearchForSafari does not support search suggestions.

 

 

The following video shows you how to install and use OpenSearch for search.jboss.org in Firefox, Google Chrome and Safari browsers respectively:

 


http://www.jboss.org uses a plugin, that displas the last tweets from #jbossdeveloper. Very nice and useful plugin. However Jaikirian Pai suggested, that it would be nice, if the displayed Twitter account name was clickable and led to the user's profile. It was good idea. However it took some time to find out how to do that. Twitter has some documentation, but the features they describe do not include this (well at least it is well hidden and so I was unable to find it there).

 

So I thought this article might help you, if you want to do the same thing. If you know the user's account number, you can use following link:

 

http://twitter.com/account/redirect_by_id?id=<account number>

 

I.e. my profile is http://twitter.com/account/redirect_by_id?id=612507302

 

It is really just that easy, if you know the link.

 

And how to get the account number? Well there are many ways. If you are in Java,  twitter4j can be pretty handy. But this is another story, that depends on what you have at your disposal. Or if you just want yours, you can use this web page http://www.idfromuser.com. Remember to use @ before your name.

http://www.jboss.org runs mainly on Magnolia CMS. It is a web application, that runs on JBoss application server. Eng-ops (= the team responsible for maintaining infrastructure) reported, that logging does not work properly (the bug), because the logs are larger and larger and they are becomming huge. Jozef, the former colleague of mine, updated the configuration of the application server. We use log4j so the whole thing did not appear to be complicated. But the reality is sometimes quite interesting and so this issue remained unsolved for quite a long time.

 

Prequel - console.log is too long

 

First information I got was, that console.log is too long and everything from Java is logged into it. What I found in jboss-log4j.xml was very interesting:

 

   <!-- ============================== -->

   <!-- Append messages to the console -->

   <!-- ============================== -->

 

  <!-- appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">

      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

      <param name="Target" value="System.out"/>

      <param name="Threshold" value="INFO"/>

 

      <layout class="org.apache.log4j.PatternLayout">

         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>

      </layout>

   </appender -->

............................. 

 

  <!-- ======================= -->

   <!-- Setup the Root category -->

   <!-- ======================= -->

 

   <root>

      <!-- appender-ref ref="CONSOLE"/ -->

      <appender-ref ref="FILE"/>

   </root>

 

I knew little about log4j at start, but I knew what <!-- and --> does in xml. Just comment! So what the hell.... I asked Eng-ops to delete the old console.log file and to restart JBoss AS. The console.log was recreated and contained just a few lines of code. I also tried to raise some errors from applicaton, that might appear in this log (big thanks to Google for changing the API for getting Google analytics for giving me the error I needed). The error did not appear in the console.log, but in the log, that belonged to the specific web application responsible for rendering the web page instead. Nice! I asked again and was told, that the problem is actually server.log, not console.log. Aehmmm.....

 

The real fun - server.log too long

 

The configuration of the logger appeared to be valid:

 

  <!-- A time/date based rolling appender -->

   <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">

      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

      <param name="File" value="${jboss.server.log.dir}/server.log"/>

      <param name="Append" value="true"/>

      <param name="Threshold" value="INFO"/>

 

      <!-- Rollover at midnight each day -->

      <param name="DatePattern" value="'.'yyyy-MM-dd"/>

 

      <layout class="org.apache.log4j.PatternLayout">

         <!-- The default pattern: Date Priority [Category] Message\n -->

         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

      </layout>

   </appender>

 

I copy pasted  it on my local machine and it worked very well. When a new day came, the server.log was renamed to server.log.<date> and the logging to server.log started from the current day. Exactly as it should have been. But alas! You could see something like that on the staging:

......

2012-08-30 17:32:51,130 INFO  [info.magnolia.cms.beans.config.PropertiesInitializer] Loading configuration at .................

2012-08-31 11:19:35,610 INFO  [com.arjuna.ats.jbossatx.jta.TransactionManagerService] JBossTS Transaction Service (JTA version) - JBoss Inc.

......

 

So no roll over at all. What could possibly be wrong? Why on one machine it does work and on the other does not? A different version of log4j? Perhaps. A different locale and thus date-time format? Also possible. Thanks God log4j is the open source and thus the source code is available for everyone. I.e. here. If you check the code, you can find, that the content of the log is irrelevant. The only thing that matters is the modification date and time of the log file. It still does not answer why the roll over does not happen.

Unless you check the way, how the JBoss is started. We use a script for it, that has something like that inside:

 

   for logfile in boot.log cluster.log console.log server.log; do

        if [ -f /var/log/$NAME/$JBOSSCONF/$logfile ]; then

            if [ "$JBOSSUS" != "RUNASIS" ]; then

                $SU $JBOSSUS -s /bin/sh -c "touch /var/log/$NAME/$JBOSSCONF/$logfile >/dev/null 2>&1"

                if [ ! $? -eq 0 ]; then

                    failure $"${NAME} startup"

                    echo -n -e "\nLogfile /var/log/$NAME/$JBOSSCONF/$logfile exists but not writable by $JBOSSUS."

                    echo -n -e "\n"

                    return 4

                fi

            else

                if [ ! -w /var/log/$NAME/$JBOSSCONF/$logfile ]; then

                    failure $"${NAME} startup"

                    echo -n -e "\nLogfile /var/log/$NAME/$JBOSSCONF/$logfile exists but not writable."

                    echo -n -e "\n"

                    return 4

                fi

            fi

        fi

    done

 

 

And this is it. Touch changes the time, whe the server starts. And because there are logs to be written just when the application server starts, the date of the log file is always the current date and the roll over  never happen.