Friday, July 31, 2009

Experimental alerting via Twitter in Jopr (and RHQ)


Something for the weekend :-)

I have just committed support for sending alert notifications via Twitter into Jopr and RHQ.

Bild 12.png


The code currently lives in an experimental branch in the RHQ code base.

The twitter notification can be enabled in the usual place in the alert UI

Bild 11.png


while the twitter account is set in the System preferences

Bild 13.png


This code is still experimental, but works for me :-)

And then there is the Twitter plugin (and here), that allows you to watch twitter feeds from within Jopr.

Please provide feedback.

Wednesday, July 29, 2009

Jopr Twitter plugin renamed



Two days ago I have commited a Jopr plugin to monitor Twitter feeds

Due to popular demand (and also because 'twit' has some negative connotation in some slang forms of English) I have renamed the Jopr TwitStats plugin to Twitter plugin.
This also means that the location of the source has moved to
modules/plugins/twitter within the RHQ svn repository.

Monday, July 27, 2009

Jopr meets Twitter -- new plugin to monitor Twitter



As you surely know, I am also active on Twitter as pilhuhn. So I have sat down and started to write a TwitStat plugin for Jopr and RHQ just to show the possibilities of the Jopr platform, that it is not exclusively about managing JBoss products (as some people say) and to show more example code.

Currently the TwitStats plugin lets you:


  • Post your own tweets

    Bild 4.png


  • Monitor the number of tweets


    • Your friends timeline

    • Public users timelines

    • Search for stuff

    • Bild 5.png


      Interesting detail is that the Event dots (green ones) show the post date of a tweet, while the blue monitor dots (number of tweets since last poll) show that number at the time of polling.


  • Show the monitored tweets as events in the Events Subsystem:

    Bild 3.png




I have built the plugin around the Twitter4J library, which helps a lot in getting things done.

There are still some open issues:

  • OAuth support is missing

  • Calls to get tweets are synchronous and block the plugin for too long - those need to converted into async calls



You can find the source code in RHQ svn in modules/plugins/twitstats.

Please provide feedback - either in the RHQ Jira, in the Forums or on Irc

Monday, July 13, 2009

Jopr Java1 sessions available

The mini theatre sessions about Jopr are now online at YouTube. This is a four part series of videos. Greg Hinkle, lead of the Jopr, RHQ and JBoss ON projects is presenting:

Part1: http://www.youtube.com/watch?v=5X0kXk16sEw (shown below)




Part 2: http://www.youtube.com/watch?v=6VGXc7__OCg


Part 3: http://www.youtube.com/watch?v=whc5UH197qY


Part 4: http://www.youtube.com/watch?v=FqpyLWtJyBw


Tuesday, July 07, 2009

Resources for plugin development for Jopr, RHQ and the JBossAS admin-console

I have been asked a few times in the last weeks about writing plugins for Jopr, RHQ and JBoss ON. People were interested, but still were not completely sure what to do.

So the first thing to know is that a plugin written for Jopr will also run in JBossON2 and (most probably *) in the new admin-console of JBoss AS 5.1

So I've complied a short list of resources to go through for starting development of a plugin



Also Jopr Developers are online on IRC at irc://irc.freenode.net in #jopr


Contact me if you think that stuff is missing







*) You should of course always check it before delivering your plugin, but in most cases it should just work.

Infinispan presentation at JUG-Stuttgart next Thu

Manik Surtani will talk about Inifispan at the Java User Group Stuttgart.

Check out the following link for details and to register for the event.

http://jugs.org/veranstaltung-2009-07-16.html.

Dzone did a nice interview with Manik, that you can checkout here.

Friday, June 26, 2009

Small Jazoon sum-up




So, I have been at Jazoon for the last few days. I arrived on tuesday at noon - just missing the keynote by James Gosling - I have heard that it was not that good from the content, but I would have liked to see it nevertheless. Then I attended some sessions and had lunch (a "Bratwurst" - sausage, every attendee only one piece). There was a talk about "IPhone hacking for java programmers" - I was expecting to hear about e.g this x-compile effort, but the session really just presented the Apple tools and Objective C. Not that I did not find this interesting and the talk was also well presented, but it just was not what I was expecting.

In the afternoon I went with Bela for a run and then basically went with the other JBoss guys for dinner.

On Wednesday I had my own presentation, which did not that well as I wished - the 50 mins time constraint irritated me totally resulting in me being done too early. But at least I created enough interest to have people come to me later and asking about how to write plugins :)

Rickard Öberg was supposed to give a talk, but did not show up. Everyone said that he was perhaps captured by the CIA :-)

The last session of the day was the final of the "rookies competition" - rookies were asked to submit a talk and the program committee selected three talks that got presented and jury selected the final winner. The talks were of mixed quality and I had the feeling that the 3rd guy was pushed by Sun to the last 3. Luckily at least Bela Ban gave the guys an honest feedback - otherwise the jury process would just have been a big joke.
On wednesday evening was the party with burgers for dinner (lunch was pizza). I had some nice talks with some nice guys.

Thursday was the last day for me. Again some sessions, then lunch (sausage again), more sessions and then some talking with Alexander Neumann from iX magazine. Ed Burns was giving a talk (as a backup for a cancelled one) about his new book (I later got a copy of it that he signed) - for me one of the better sessions in the conference.

On all of the three days, the conference network had issues - either it was impossible to get an IP address or some other issue occurred.

So Jazoon leaves a very mixed feeling for me - on one side I had very good face to face talks and fun with people I met and on the other hand I was not happy with many of the talks I attended, the food and the network.

For food and network I could imagine that just raising the conference price slightly and then getting better food for that would work (and buy some more (private) IP addresses too. But for the sessions it is very subjective, so that someone else who was in the exact same sessions than I was, may have found it super.

Tuesday, June 23, 2009

Üetliberg

Today, while being at Jazoon in Zürich, I took a run together with Bela from the Saalsporthalle (close to the conference venue) to the top of the Üetliberg.

Things went a bit strange, as at some point we switched on the most direct track to the hilltop. So in summary we did more than 400m of altitude. This included 'crawling' over tree roots on a very wet soil.

You can have a look at the track at GPSies.com.

Here is a snapshot from Trailrunner about my performance (grey shows the heigth):

Bild 6.png


In both cases start height and end height do not match, as my Forerunner took a long time to discover the satellites and only did so while we were already running. This also means the distance has probably slightly longer.

A very nice thing is that at the Saalsporthalle, it is possible to just go into a public cloak room with showers, to change to sporting clothes and to shower later. Outside is even a possibility to clean the running shoes.

Update

A nice fellow at the top of the Üetliberg took photos of Bela and me and sent them via email to me:

103MSDCF 465.jpg

At the right you can see a bit of the Zürichsee.


103MSDCF 466.jpg

Monday, June 22, 2009

Stuttgart-Lauf

Yesterday was Stuttgart-Lauf again. Unlike the other years (see here for last year) I did participate in the Half-marathon (21 km).

When practicing, I was able to run the distance in 2:08h, but on a very flat course, so I was thinking that 2:15h would be realistic for this more demanding course.

But then at km 17 it looked like I would be able to run the track within 2h, so I tried to and here is the result:

Bild 4.png


My first half-marathon in 1:59:04h - wow, I am happy.

While running I also crossed the 800km border since I started running last year (see e.g. here).

Monday, May 11, 2009

Announcing the Jopr podcast


It is a pleasure to announce the Jopr podcast, a source for news, interviews and technical content around Jopr.

The first two episodes are online:

0 - A short intro

1 - A walk through the Jopr source modules

You can follow the Podcast on its home page and also directly subscribe to it on iTunes.

If you like it, please rate it up on ITunes or provide Feedback via email to me.

Also if you are German, you may also want to have a look at the video from my presentation at rheinjug earlier this year.

Friday, May 08, 2009

Video from my rheinjug presentation about Jopr online

The nice folks from rheinjug finally made the video of my presentation available together with the slides in an integrated player.

Bild 2.png


You can directly view this at rheinjug.tv. At the top of the page is also a possibility to download the video.

Video and slides are in German.
Minutes from the talk are available too.

Thanks again, Georg and Michael.

Thursday, April 30, 2009

Jopr 2.2 released



You may have seen yesterday and the day before that JBoss Operations Network 2.2 has been released. And you probably also know that Jopr is the upstream project for JBoss ON.

So we are pleased to announce the availability of Jopr 2.2.






You can download Jopr 2.2 from Sourceforge.

Note that the distro does not have a separate agent download, but the agent is included in the server. Set up the server, log in and then in the top menu you will find Admin->Agents->Download

Otherwise have a look at the install docs in our wiki.

Joe Marques has a longer list of new features in his respective blog post.

Wednesday, April 29, 2009

JBoss ON 2.2 has been released

Greg Hinkle already wrote it: JBossON 2.2 has been released.
This has been a big release for us - with arounds six month of work.

Some of you may already had a peek at the Jopr 2.2 beta and my know about some of the new stuff.



Changes were (in addition to hundreds of small enhancements and bugfixes):

* UI - Completely updated (and mostly rewritten from Struts to JSF), AJAX based UI with tree views, search and common menu system
* Clusters - Cluster oriented tree views with group-wise configuration management and monitoring
* Security - Improved DynaGroups queries and new support for recursive compatible groups simplifies access control
* Monitoring - Configuration change detection, auditing and historical review
* Agent auto upgrade - Agents automatically update themselves when new servers are installed
* Subsystem views - Pages that e.g. show alert info over all existing resources
* Much better IE support
* Speed improvements
* Automatic recalculatin of DynaGroups
* Plugin skeleton generator


More information about JBossON 2.2 can be found at http://www.jboss.com/products/jbosson

Wednesday, April 22, 2009

I love the Standalone container in Jopr (updated)


I am just working on a plugin when I have some spare cycles (I will tell you which one in a few days :-)

To test the plugin I am using the Standalone Container where I have deployed my plugin, the JMX and the platform plugin.
So when I have compiled a new version of the plugin I just copy it over and start the standalone container:

snert:rhq-agent hrupp$ bin/standalone.sh

Listening for transport dt_socket at address: 8788



Starting the plugin container.

Loading plugins

...Loaded plugin: Platforms

...Loaded plugin: JMX

...Loaded plugin: MyNewOne



Ready.

[0]:0 >


This takes 3 seconds and then I am ready to discover resources:

[0]:0 > disc s

Discovery took: 2269ms

[Resource[id=-3, type=Secret, key=service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:1090/jmxconnector, name=Secret, parent=snert]]

[1]:0 >


Now I can test if my invokeOperation() method from the OperationFacet works:

[2]:-0 > set res -3

[3]:-3 > invoke getProperty name=test

[PropertySimple[id=0, name=result, value=null, override=null]]


So set the resource id to the resource I want to work with and then invoke the getProperty operation with parameter name and value test. The Operation then returned null, as the underlying resource does not know this specific value.

This all took around 10 seconds now for a round trip - you can't really do faster testing :-)

When I want to repeat those steps with an updated version of the plugin, I can save my work:

[4]:-3 > !w /tmp/foo

This creates a file and saves the commands given in it. The name of the file can later be given on the command line to just run the action as a script without any need to manually type in the commands.

There is currently one caveat: Resource ids will change in each startup so the "set" command in step 2 above will not work exactly like this.

[UPDATE]


I will work on adding variables to the find command in the standalone container which can then be passed to set -- if you want to help out contact me.


What you can do is to use $r as 2nd parameter to set after finding a single resource:

[5]:0 > find r *myFooBar*

-12: MyFooBar ( Resource[id=-3, ... )

[6]:0 > set r $r

[7]:-12 >



With this trick it is now possible to just run the container with the saved file as input again and again

$snert bin/standalone.sh /tmp/foo

Monday, April 20, 2009

RHQ and Jopr plugins: What about <T> ?

When writing a Plugin for RHQ, JBoss ON and Jopr (or for completeness: Embedded Jopr, you will run into Generic types for ResourceComponent and ResourceDiscoveryComponent. And I am sure you have often wondered what the T in ResourceComponent<T> should be.

The following diagram tries to help here. We have two ResourceTypes that from a Parent-Child relationship e.g. a Database and a DatabaseTable.

If you don't know what parent you will run in, you can just leave the generic bit away, as in ParentDiscovery and Parent in the diagram. This is usually the case for ResourceTypes of the Server category that live in their own plugin. One could also use the platform component as parent if its clear that the plugin will only run as a child of the platform, but never e.g. within another resource like a JBossAS.



InheritanceDiagram.png


Children of this server Parent will set the T to the parent component. This allows them to e.g. access the parent ResourceContext.

For examples of all this, check the Jopr source code, which contains many examples.

Friday, April 17, 2009

♫ I'm running in the rain ... ♫

Today it was raining, but I had the urge to go out for a run, so I went out nevertheless. Normally I am more a like a sissy in that area though.

But after around 1km I felt warm enough so that it did not feel uncomfortable anymore and later on it did not even feel bad being splashed by a car driving through a puddle. And this is how I looked when I was coming home:

DSC00039.JPG


But hey, it felt great !

And the best: my Adidas (Supernova) shoes stayed dry inside. No wet feet - I just love those.

( The very best was actually that my ankle did not hurt )

Jopr/RHQ plugin generator updated

The plugin generator has been updated for the plugin lifecycle listener. I have uploaded a new version to the description page on the RHQ wiki.
So you can grab the standalone jar file from there without the need to download the RHQ source and compile it from scratch -- which would not be hard actually:


$ cd $RHQ/modules/helpers/pluginGen

$ mvn install


You can find the resulting rhq-pluginGen*-jar-with-dependencies.jar in target/ then.

Sunday, April 05, 2009

List of Jopr / RHQ resources


Just as a FYI:

Mazz has, while answering a forums post made a nice list of resources
related to Jopr and RHQ.

Check out the post at the Jopr user forum.

Saturday, March 28, 2009

GSoC students where are you? Jopr wants you!



JBoss and Fedora are this year again participating in Google Summer of Code as mentoring organization.

We have set up a list of ideas at the JBoss Wiki.

For Jopr some ideas are:

  • Baselining that respects hourly and weekly variances to get better out-of-bounds conditions

  • Proactive alerting - alerting operators of bad conditions before they actually happen

  • Correlation of arbitrary input values to generate new results - often one input parameter is not enough to determine if a bad condition is in place

  • Multidimensional multimetric multidevice graphing of measurement values

  • Portal-UI for Jopr so that users can compose their own UI. This includes adding of other related consoles

Of course contributions are not limited to these ideas.

If you want to participate, be quick as deadline for submissions is on April 4th !

For more information have a look at the GSoC FAQ.

Friday, March 20, 2009

Working on a standalone PluginContainer wrapper

I have been working on a standalone plugin container wrapper for RHQ and Jopr which allows to call plugin functionality without the need for a fully running agent and server. Of course this only makes sense while developing a plugin.

This video shows how this may look like (swf format).

This stuff is not yet committed to subversion, but I guess I will do that in the next few days.

Please provide feeback.

Review of my talk @RheinJug with pictures

Yesterday I was talking at Rheinjug in Düsseldorf about RHQ, Jopr and JBoss ON.

To get to Düsseldorf, I took the ICE fast train which took 2:41h for 410km distance, which is the fastest way to travel between those cities. On this course, Deutsche Bahn is offering WiFi on board (unfortunately not for free), so you basically have Internet at 300km/h - nice. While being on the train I also started about implementing a Standalone PluginContainer wrapper that can be used when implementing a new plugin to test it; I will post about this separately.

After I arrived in Düsseldorf I first went to my Hotel, which is nicely located in the old town - only 5 mins by subway from the main station. after check in I walked around a little bit in the old town and went to the Rhein river. On the next picture you can see locals with one of their favorite occupations:




People were just standing outside a brewery and drinking Altbier. In summer that place is crowded.

Düsseldorf is supposed to have "die längste Theke der Welt" ( 'the longest bar counter of the world', which is not to be taken literally ) see also:


There are lots of other restaurants and bars in that area too, as you can see from this picture:


 



I took the tram to the Heinrich-Heine-University where the talk was taking place in an auditorium. The first people were already there and enjoying food and drinks sponsored by Red Hat Germany.













Michael Jastram from the JUG opening the evening by welcoming all of us and doing a little lottery - prizes were a Jetbrains license, a backpack and a copy of my EJB-3 book.

After this my colleague Joachim Schröder who is living close to Düsseldorf briefly introduced Red Hat before my talk started:




My talk was taped by the user group and should soon be available on the Rheinjug.tv web page



(Installation of the camera)

Around 40 people had found their way to the presentation at that time. The talk itself went well. As usual I was also talking about the thermometer chip monitoring that I implemented a while ago. And of course I did a live demo of the system which was well received. In the Q&A session we had some good questions from people who obviously have an administration background.











When this "official" part was over we relocated to a different part of the building and did some more socializing.







Joachim drove me to my hotel, where I arrived around midnight. While this he told me that he especially found the thermometer chip part very interesting, as he recently implemented some monitoring of his heating system with this exact chip and with some proprietary code. So he is now interested in replacing this with a Jopr based solution :)

This morning when I went back to the main station, I met Mete again, who was in the talk yesterday. He invited me for a coffee (thanks again) while I was waiting for my train and we had another good conversation.



Tuesday, March 17, 2009

RHQ tip of the day: Overseer API (updated)



Sometimes it is necessary in RHQ-plugins to load resources when the plugin is loaded and more important to unload those when the plugin is unloaded from the plugin container.

( As you can see from the comments, Mazz has renamed the Interface class, so I updated this article. )

Mazz has recently added the PluginOverseer PluginLifecycleListener interface for exactly this purpose (see e.g RHQ-1584).

To use the api, you need to do two things:

  • Implement the interface org.rhq.core.pluginapi.plugin.PluginLifecycleListener
  • Wire the implementation class in the plugin descriptor.


With the following entry in the plugin descriptor, rhq-plugin.xml


<plugin name="MyPlugin"

  package="org.rhq.plugins.myPlugin"

  pluginLifecycleListener="MyPluginOverseer" .../>


The code for this could look like this:



package org.rhq.plugins.myPlugin;

import org.rhq.core.pluginapi.plugin.PluginContext;

import org.rhq.core.pluginapi.plugin. PluginLifecycleListener;

 


public class MyPluginOverseer

  implements PluginLifecycleListener {


  Class clazz;

// called on plugin load

public void initialize( PluginContext context ) {

  ...

  clazz = Class.forName("org.acme.Driver");

  ...

}

// called on plugin unload

public void shutdown() {

  clazz = null;

  }

}


There are some real examples of the usage of this API, like e.g. in the Postgres-plugin.

As this API is added to RHQ, it applies to Jopr (trunk) and the upcoming release of JBoss ON as well.

I have also updated the plugin generator to support this new API - its version is now 1.2.1.


Monday, March 16, 2009

RHQ Tip of the day: XA issues with oracle ?

Are you running Jopr, RHQ or JBoss ON 2 with Oracle and see the following warnings in the servers logfiles:


 


 


14:05:51,406 WARN [loggerI18N] [com.arjuna.ats.internal.jta.recovery.xarecovery1] Local XARecoveryModule.xaRecovery got XA exception javax.transaction.xa.XAException, XAException.XAER_RMERR

Then you need to set up your Oracle user for XA mode:

GRANT SELECT ON sys.dba_pending_transactions TO rhqadmin;

GRANT SELECT ON sys.pending_trans$ TO rhqadmin;

GRANT SELECT ON sys.dba_2pc_pending TO rhqadmin;

GRANT EXECUTE ON sys.dbms_system TO rhqadmin;




This is also described in the Jopr installation page on the JBoss.org Wiki (and of course in the JBoss ON manual)

Saturday, March 14, 2009

Safari 4 has by far the fastest JavaScript engine on my MacBook

I did just run the Peacekeeper benchmark on my 2.5 years old MacBook (2GHz Core Duo CPU). And here are the results:



Bild 10.png

(Click to enlarge)


So Safari 4 beta is nearly 3.5 times faster than Safari 3.0 and more than 2 two times as fast as the third beta of upcoming Firefox 3.1.

Friday, March 13, 2009

Devoxx 08 slides are now online

The Devoxx team has made the slides of most university and tools in action talks available.

The ones for my talks are:


Enjoy! If you have question, contact me.

Talking at RheinJUG next week

I'll be talking at RheinJUG, Düsseldorf next Thursday, March 19th about Jopr, JBoss ON and RHQ.
Subject of the talk is:

"Server-Monitoring und -Management mit JBossON2"

RheinJUG created a cool announcement poster (original is on their web site, this is a scaled down png version of the original PDF):

024_poster3.png



You can find more details at the web site of RheinJUG.

I am pleased that Red Hat is providing free food and drinks for this event - many thanks for that.

Thursday, March 12, 2009

Review of my yesterday talk about Jopr at JUG-Ka

Going to Karlsruhe to talk to the local Java User Group was a little bit like going back in history - I used to live for over 10 years in Karlsruhe and did study computer sciences at the University. So I was giving the talk in an auditorium where I used to sit my self on the benches years ago.

I went to Karlsruhe by train, took the tram to the city center and then walked to the University and the CS building. When I arrived the first two members of the audience have been there. David who used to organize the event unfortunately got ill and was not able to attend.
After some waiting, the audience grew to more than 20 people.

Before I started my talk, there was a presentation about Jazoon by Christian Frey. Christian explained why it is worthwhile to attend Jazoon and left some vouchers for user group members.

IMG_3235.JPG

Christian Frei talking about Jazoon


Next was my talk, which went well. The audience was interested and from the questions, it was obvious that at least some of the members have management and monitoring experience. This also resulted in some good new ideas.

Of course I did a live demo of the latest Jopr 2.2 beta 1 release.

After the talk there was some Q&A and then (nearly) everyone went home quickly as it was already past 9pm.

IMG_3236.JPG

Part of the audience


Eckes took a picture of me ..

You will be able to download the slides from the Jug pages; or from here (PDF, 2 MB).

I ended up back home at 1am this morning ...

Sunday, March 08, 2009

Reconfigure Oracle-XE to a different port for jdbc

I wanted to reconfigure my Oracle-XE instance to run the tnslsnr on port 1522 instead of 1521. So as first try I went in and just changed the listener.ora and tnsnames.ora files. But after those changes, the system did not give away a beep when I e.g. called lsnrctrl status.

Solution to this was (on RHEL 5.3):

# mv /etc/sysconfig/oracle-xe /tmp/
# /etc/init.d/oracle-xe configure

The script asked some questions about ports (you can look them up in the copy in /tmp) and the db password etc. And then started the database with the new port.


Wednesday, March 04, 2009

Apple heard my prayers: new keyboard

I saw this first on this post: http://elliotth.blogspot.com/2009/03/apple-keyboard.html

Apple has introduced a new keyboard that has a cable and does not have the numeric keypad, making it much smaller than the already existing one with keypad. Actually as it does not need the battery casing, it is even smaller than the wireless one (see e.g. http://www.apple.com/keyboard/ ) and http://store.apple.com/de/product/MB869?mco=NDE4NDE5NQ for the new one in the German Apple store.

And you can immediately see that this is a real Apple product, as it is the same price as the one with keypad :-/

See also Apple Quietly Bumps 15" MacBook Pro Speed, 256GB SSD Option, and New Keyboard


Tuesday, March 03, 2009

Public beta of Jopr 2.2 released

The RHQ / Jopr team has released a first public beta of the upcoming Jopr 2.2 and thus RHQ 1.2 release.

This first public beta consist of a big list of changes that you can see in the respective JIRAs:



As I have written earlier, there is a page available that shows an overview of the UI features - but of course it is better to try them yourself.

Please provide feedback

We have two jira systems as development effort is split between the foundation RHQ Project and the Jopr Project that is specific to JBoss technology management.

Or post a message in the Jopr user forum.

You can grab this public beta from the SourceForge download page.

Install documentation is available in the JBoss.org wiki.

Note, that there is no longer a separate agent download. The agent is delivered with the server package and you can install it as I have described here.

Are you in Karlsruhe and want to know about Jopr, RHQ and JBossON ?

As written previously, I will talk next wednesday, March 11th at the Karlsruhe Java User Group about Jopr, RHQ and JBoss ON. This will of course also include new Jopr 2.2 features.

The talk will be in the CS building of University of Karlsruhe

Uni Karlsruhe, ATIS,

Am Fasanengarten 5, Geb. 50.34,

76131 Karlsruhe

(view address in Google Maps)

Multimediahörsal im UG (102)



See also https://www.xing.com/events/313859

Sunday, March 01, 2009

Jopr 2.2 UI preview

My colleague Mazz has made a UI preview page of the upcoming Jopr 2.2 (and thus RHQ 1.2) release. You can view it at https://www.jboss.org/community/docs/DOC-13381 .

Of course you can always build Jopr 2.2 from svn and have a look at things yourself.

We have incorporated a lot of changes in the UI:

  • Navigation tree on the left
  • Subsystems view
  • Summary view per resource
  • More streamlined UI
  • New Problem Resource / OOB view

As Jopr 2.2 is not yet released, this is all still work in progress and subject to changes.

Please give us feedback - e.g. via Jira or mail to jopr-dev @ lists.jboss.org. Or meet us in #jopr at irc.freenode.net


Thursday, February 26, 2009

Hibernate: QueryException: could not instantiate: (updated)

I was doing some queries today in EJB-QL on JBossAS (which uses Hibernate as persistence provider).
And for a query that was nicely working in the Jopr Gui, I got errors in the test suite:


javax.ejb.EJBTransactionRolledbackException: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not instantiate: com.acme.Foo
at ...... ( a lot ) ....
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not instantiate: com.acme.Foo


Ok nice - Hibernate can not instantiate my class because it can not instantiate my class. So what?

After looking some time at this and debugging around I found out that the issue was the following. But before I show you the code, let me assure that IntelliJ flagged it as valid and it did work in the UI.

But now the code:


SELECT new com.acme.FOO(res.name, res.id, ... , parent.name, parent.id)

FROM Resource res

LEFT OUTER JOIN res.parentResource parent

...

WHERE ...


The constructor of com.acme.Foo looked like this:


Foo(String res.name, int res.id, ... , String parentName, int parentId) {}


This is all valid,

but:

It can happen for Resources at the root of the hierarchy to not have a parent (when they are roots). And in this case, parent is null and Hibernate is looking for a constructor to pass NULL in as last argument, which does not fit for 'int'. Thus the failure to instantiate the class.

The correct constrctor looks like this:

Foo(String res.name, int res.id, ... , String parentName, Integer parentId) {}

(of course you need to update the respective property within Foo too).

Conclusion:
Just to get it straight: Hibernate is doing the right thing - it's only not easy to find out what is going wrong.




Tuesday, February 24, 2009

Cups error on Leopard: "Missing filter"

Today I was trying to print some files over the printer attached to my mac mini. All I got were pages with errors


ERROR: undefined
OFFENDING COMMAND: csq
I thought first the word processor is sending crap, but after some investigation I found out that the issue is that the generic postscript printer driver is used and not the Laserjet one. Ok, went to preferences and changed the printer to use the Laserjet driver. But still no avail - now the printer even showed up as "not ready" :-(

Looking at /var/log/cups/error_log showed the following:

E [24/Feb/2009:11:02:59 +0100] Unable to execute /Library/Printers/hp/filter/hpPostProcessing.bundle/Contents/MacOS/hpPostProcessing: Operation not permitted
E [24/Feb/2009:11:02:59 +0100] [Job 50] Unable to start filter "/Library/Printers/hp/filter/hpPostProcessing.bundle/Contents/MacOS/hpPostProcessing" - Operation not permitted.

Looking at the two files showed that the x-Bit was missing from them. chmod +x solved this and now the printer is up and running nicely :-)


Thursday, February 19, 2009

Postgres/Hibernate sql fun - NOT

This probably isn't really a postgres, but a more general issue, but then ...

I was writing some stuff in EJB-QL and all I got from Postgres was

ERROR: could not identify an ordering operator for type record
SQLState:42883

This sucks of course :)
After some trial and error I found the following in my query:

group by resource4_.NAME , ... , (measuremen1_.TIME, measuremen1_.ID)

Removing the parens ('(',')') finally made the query run successfully.

Now you may ask, what was the input that led to this? Well, here is is:

SELECT new Foo(a.id, b.id, ..., bla.id, bla.time)
FROM .... , org.acme.Bla bla
GROUP by a.id, b.id, bla

So the query translated the bla in the GROUP BY to (bla,id, bla.time) - including the parens. Explicitly listing bla.id, bla.time in the GROUP BY clause solved this.
This is no fun, as the EJB-QL Query got correctly translated and postgres does not give any hint, what part of this longish SQL it does not like.


MacDeveloper

Are you interested in testing Mac software? You can do so at MacDeveloper.net. I met this site when reporting issues with Trailrunner and the TR autor pointed me to this site, where he has just opened an account.
Meanwhile MD is getting traction and new projects are popping up every week.

And - your time is honored: when you find an issue that is accepted by the developer, you will get points for this. If you have enough points, you will get a rebate on the license or even a license for free -- this depends on the developers and each individual project.


Tuesday, February 03, 2009

Upcoming speaking engagements in March '09

I have been invited by two German Java user groups to talk about RHQ, Jopr and JBoss ON. The talks will be as following:



Both talks are special to me: As I studied in Karlsruhe, I will be talking in the same lecture auditorium in which I used to sit and listen to Professors talks some years ago. The user group in Düsseldorf will record the session and make it available on the web later on.

I am looking forward meeting as many as possible of you.

Monday, February 02, 2009

New OOB subsystem in RHQ

RHQ had since its inception the concept of Out-of-bounds (OOB) metrics. Consider the following diagram:

oob_example


Here we have measurement values denoted by the green and red vertical bars (actually those are aggregates over several values as e.g. seen in the 1h tables). In addition to the values we have a band of 'good' or 'allowed' values (e.g. the typical variation of disk space used).

The measurement values marked in red have outliers outside of the band and thus trigger OOB conditions.

In previous RHQ versions, we were computing the OOB violations against the live data coming into the system, which was expensive on large scale systems. And if you had a violation every minute, the counter was showing you 3600 violations a day - but it did not tell you if those were severe conditions or just tiny little ones.

For the upcoming version of RHQ (or in svn HEAD) we revamped the system in a way that it calculates the OOB conditions from the hourly data table, that already has an aggregation of data from the last hour. Instead of recording the count of OOBs, we are now computing a factor. This is just a number that tells you how severe the violations are. A higher number means more severe. This could come from a one time big violation or from many smaller ones.

The new subsystem view will show you a table about the known OOB violators sorted by severity. You can then go to the individual metrics big charts and if you want also manually set a larger band. Resetting the band will automatically clean out the now obsolete OOBs, as will the automatic recalculation of baselines.

If you want to know more, have a look at the design page and the documentation jira entry.

Tuesday, January 13, 2009

Small review of my yesterdays talk at JBUG Munich (updated with pictures)

I've been invited for some time by Serge Pagop to talk at the JBoss User Group Munich. Yesterday was the big day then.

Munich is not that far from Stuttgart, but the train connection is still slow because part of the tracks are built over 100 years ago, so that the fast train can nevertheless only run 60km/h in some places.

When I arrived in Munich I first met with Heiko Braun from the jBPM team to have lunch together and to talk about Jopr and RHQ and to give him a hands on introduction.

We also took a photo for all of you that don't believe that we are not the same person:

Foto 16.jpg

Heiko (left) and Heiko (right)


Afterwards I worked from his office for some time and then went to the meeting venue (the linked page offers a link to the slides).

Attendance was around 15 people of which there were 4 people from Red Hat Munich. It was nice to meet them too and I think they were happy to get information about RHQ, Jopr and JBoss ON directly from the source.

My talk went on for 1,5 hours - I was showing some slides and also the live system, as well as introduced into plugin-writing (again, slides with all the links etc. should be available soon from the JBug web site).

After talk we had some Q&A and then went into the other room to conclude the meeting with Pizza.

My train back left in Munich on time and I arrived back in Stuttgart at 1:20am this morning. There is no more tram going at that time, so I decided to take a Taxi. Unfortunately I did not have enough cash with me, so I asked about credit card acceptance. "Yes, no problem". But as the driver heard that I don't want to travel a big distance, he indicated me to leave his taxi again "I don't accept credit cards for such a small distance". So I had a 25mins walk from the train station to my home (Germany is no Service Oriented Country).

Here are some impressions from the event:

P1000356.jpg

Serge and I

P1000357.jpg

Part of the audience

P1000361.jpg

Me talking

P1000364.jpg

Socializing after the talk

Sunday, January 11, 2009

Tremendous speedup for NSMetadataQuery

In QNote I am using a NSMetadataQuery to allow the user to search for notes. Even with a notes database of a trivial size, it took ages to find notes (it is basically faster to open a terminal and issue a grep command ). And this even when
I have already restricted the searchScope to the directory with the notes in them.

Today I was experimenting with Spotlight again (is there really good documentation for it out there?).

When I add the type of the data I am expecting (plain text), the search gets real quick - exactly as expected. So the code now looks like this:


// Predicate expression for the search string
NSString *predicateFormat = @"kMDItemTextContent like[cd] %@";

// Predicate expression for
NSString *textType = @"kMDItemContentType == 'public.plain-text'";

// If there is something to search for ..
if (_searchKey != nil )
{
// Create the predicate for the key
NSPredicate *p = [NSPredicate predicateWithFormat:predicateFormat,
[_searchKey stringByAppendingString:@"*"]];

// And one for the type
NSPredicate * subPredicate = [NSPredicate predicateWithFormat:
textType];

// Combine the two
p = [NSCompoundPredicate andPredicateWithSubpredicates:
[NSArray arrayWithObjects:p, subPredicate, nil]];

// And set on the query
[_query setPredicate:p];


This simple addition of kMDItemContentType == 'public.plain-text' provides the speedup.
It is unfortunately not clear to me why, as I don't have any other files of other types in the searchScope.

Next thing for me to investigate is not why this spinning thingy (they are called async arrows :) does not stop spinning when spotlight does no longer return results. Perhaps I need to programatically set this and can't rely on the cocoa bindings here - does anyone know?

JBug-Munich talk 12.1.09

Ok, this is sort of a very short notice..,

I'll talk about Jopr,RHQ and JBoss ON at the JBoss User Group Munich on Jan 12th. The talk wil start at 7pm.

Check out www.jbug-munich.org for more info.

Friday, January 09, 2009

Warranty, repairs, downtime etc.

So, as I was twittering I had an issue with my mac mini at home and especially with its connected Raid in a Taurus case.

The internal hard disk of the mini seems to have died and the raid behaved strangely too. Ok, I got myself a new internal hard disk for the mini and restored it from a Time Machine backup. No really big deal (wasn't too easy, as the installer does not want to directly install from the backup when the data on the backup is more than the internal HD size and it does not let you ignore parts of the data).

But then I had to find out that (very probably) the power supply (one of those external bricks) is broken. When I put a volt meter on the 12V line, I see the voltage dropping to < 11V when the drives want to start, so the drives don't spin up.

I had bought the Taurus enclosure at a local dealer and went there last monday. They were not able to do anything about it, but to sent it to their central office. Today I was calling them about the status and the lady on the phone told me that the box was sent to the central office on wednesday (Tue was a bank holiday here in Stuttgart) and that they did not yet have it in the systems in the central office. She told me that they will probably take it into the system today and starting on it on monday.

If I extrapolate this, I will hopefully the box back monday in a week resulting in 2 weeks of downtime just from the dealer service side.

This is extremely annoying.

When I think back - if I did not go to the local dealer "competent, service, ..." but would have ordered somewhere on the internet, I would probably have saved money when buying and wouldn't have a longer downtime now.

How are your experiences? How do you handle this? I am a prosumer here - this is no way to order a 1 day pickup-return service. Also I can't really afford a several k€ raid array. Actually that raid is just an example of the underlying issue: buying from a local dealer in the hope of getting service - or buying just at the lowest cost (and possibly throwing the stuff away to buy new one).