Quite often, you may would have come across scenarios where you would want to prepare a trace of your own program and understand what is the execution flow of a particular function in your C program. In this example I will show you how exactly you can do that using DTrace.
Here is a simple C Program which implements two functions (add and sub).
#include <stdio.h>
int add(int a, int b);
int sub(int a, int b);
int main()
{
int a;
int b;
int c;
printf("\nEnter A and B: "
scanf("%d%d", &a, &b);
c = add(a, b);
printf ("\n Val - %d", c);
}
int add(int a, int b)
{
return (sub(a, b));
}
int sub(int a, int b)
{
int c = a - b;
return (c);
}
Now I would like to trace the function add in this program and see what functions, in turn, are invoked when add is executed.
DTrace Code:
pid$1:test:$2:entry
{
self->trace = 1;
}
pid$1::$2:return
/self->trace/
{
self->trace = 0;
}
pid$1:::entry,
pid$1:::return
/self->trace/
{
}
I will my binary test (using -o flag) and I will be exacuting this
binary by ./test. In another terminal, I will execute this DTrace
script, which uses the pid provider.
Notice the probe description, the module part of it carries the name of
my program binary (this way only those function calls made in the
context of my program will be traced. If you leave the module part
blank in the probe description, all function calls (including system
calls) will be included in the trace).
kumar@sunsolaris:~/Desktop$ cc -o test myc.c
Now let us run the DTrace script in another terminal window:
kumar@sunsolaris:~/Desktop$ dtrace -F -s myfunc.d `pgrep test` add
And here is the output:
As you can see, the script tells me that add function calls sub. Just imagine your C application having 1000 functions, and the simplicity that you can bring to the whole debugging process if you can understand the flow with this ease.
TC シンポジウムのパネルディスカッション、無事に終わりました。来てくださったみなさん、ありがとうございました。たぶん会場に来てくださったみなさんには、「オープンソースソフトウェア (当日は Free/Libre Open Source Software, FLOSS と呼んでいました)」という概念は新しいのではないかな?と思って、「オープンってなに?」と「日本の FLOSS プロジェクトの実際」について話しました。河野さんとエラリーさんは、それぞれ「ベンダーロックインという懸念」「OmegaT プロジェクトとは?」といったトピックについて話してくれました。ストーリーとしては、「ベンダーロックインでいいんですか?」→「オープンという選択肢もあるよ」→「例として OmegaT ってね...」→「企業発の FLOSS プロジェクトの例と、参加方法」→「TAUS で言語資源を共有しようという動きも...」→「もっと FLOSS に関わろう」という感じ。
最後に少しだけ、ディスカッションコーナーがあって、どうやって関わっていくのがいいのか?ということを話し合いました。パネルディスカッションって、初めての経験でドキドキした~。打ち合わせもいっぱいして、どういうメッセージを会場に来てくれた方に送りたいか、それぞれのトピックの関連性をどうやって深めていくか、「激論」しましたよ~。準備をがんばった分、当日はとても楽しかった。Open Source Conference (OSC) では、ひとりで準備してひとりでプレゼンして... だったので、チームでプレゼンするのは新鮮でワクワクしました。チームプレーってやっぱり好きだわ。
進行は山形インテックの中村さん。中村さんってユニークな方ですよね。ふだんはユーモアいっぱいでおっとりした雰囲気なんですが、プレゼンになると、強い熱意がビシビシと伝わってくる熱いトークを展開されます。横で聞いていて、熱かったです。
企画してくださったのは、中村さんとアヴァシスのみなさん。誘ってくださってありがとうございました。欲張って言えば、FLOSS とプロ翻訳者との関係や機械翻訳との連携などについても話したかったのですが、それは次の機会に。
Shortly after I posted about Hudson Adoption and CloudBees this morning, Kohsuke used Indeed to compare job trends for several CI tools. Specifically he compared "X Engineer Jobs" for Hudson, Cruise Control, Bamboo and TeamCity.
See the results for yourself: live query and cached result from a few minutes ago. Thanks to KK for the tweet.
SJS AS 9.1 U2 (GF v2 U2) patch 19 is a commercial (Restricted) patch (see Overview of GFv2) available as part of Oracle's Commercial Support for GlassFish. This release is also patch 13 of GlassFish 2.1 and patch 7 of GlassFish 2.1.1. It was released on Aug 19th, 2010 (File-based).
Release Overview
Description
SJS AS 9.1 U2 (GFv2 U2) - Patch 19 - File and Package-Based Patch for Solaris SPARC, Solaris x86, Linux, Windows and AIX.
GlassFish 2.1 - Patch 13 - File and Package-Based Patch for Solaris SPARC, Solaris x86, Linux, Windows and AIX.
GlassFish 2.1.1 - Patch 7 - File and Package-Based Patch for Solaris SPARC, Solaris x86, Linux, Windows and AIX.
Patch Ids
This release comes in 3 different variants:
Package-based patches with HADB (NOT yet available)
• Solaris SPARC -
[128640-21]
• Solarix i586 -
[128641-21]
• Linux RPM -
[128642-21]
File-based patches with HADB
• Solaris SPARC -
[128643-21]
• Solaris i586 -
[128644-21]
• Linux -
[128645-21]
• Windows -
[128646-21]
File based patches without HADB
• Solaris SPARC -
[128647-21]
• Solaris i586 -
[128648-21]
• Linux -
[128649-21]
• Windows -
[128650-21]
• AIX -
[137916-20]
Update Date
August 19th, 2010 (File-Based)
Comment
Commercial (for-fee) release with regular bug fixes.
This is patch 19 for SJS AS 9.1 U2;
it is also patch 13 for GlassFish v2.1
and patch 7 for GlassFish v2.1.1.
It contains the fixes from the previous patches plus fixes
for 51 unique defects.
Status
CURRENT
Bugs Fixed in this Patch:
•
[6957945] - ORB using the wrong stream format version of 2 and should be 1.
•
[6938445] - SMF service manifest created by asadmin create-service is not "production" quality or robust
•
[6944049] - asadmin monitor command has no time output against the monitoring data.
•
[6947624] - Need to set JMX/RMI hostname for the nodeagent when binding JMX port to non-default interface
•
[6947923] - JSF JSP taglib validation does not work correctly (when --precompilejsp=true used)
•
[6949413] - UserTransaction throws NPE in SOAPHandler of EJB Web Service [copy of Glassfish issue tracker# 11673
•
[6952585] - Request to backport Orb defect 6372405 into the GlassFish ORB.
•
[6955353] - Integrate new JSF 1.2.14
•
[6955785] - Admin GUI throws ClientSniffer NullPointerException at StringTokenizer.<init>
•
[6955865] - GlassFish/SailFin should be able to cope with customer's use of GMS API for config management
•
[6960986] - GF requires restart if external LDAP connection configured as external JNDI resource got closed
•
[6961231] - monitor-interval-in-seconds is not being read by LB
•
[6961337] - Regression in defect 6877519 - it didn't supply a 64-bit version of the shared library as requested
•
[6961366] - Update synchronization description files to ignore core and hs_err_pid files in the DAS config dir
•
[6961983] - GlassFish Performance Advisor memory leak detector fails to respond to growth of tenured generation
•
[6963696] - Loadbalancer plugin doesn't display the custom error-url="...." page when context-root="/"
•
[6964183] - Need fix for V2.1.1 LB plugin on WS7u8 to avoid crash of web server on SuSE Linux
•
[6966241] - Integrate new LB in V2.1.1-patch-07
•
[6966244] - UDDI version shows 3.0 which has to be UDDI 2.0
•
[6966807] - Need to do group memberships for non-certificate realms
•
[6967113] - Integrate new ORB
•
[6967460] - Exception on SSL service process causes listner threads hang eventually SSL service stops responding
•
[6967876] - Integrate new Woodstock
•
[6968554] - Integrate new version of MQ 4.4_20100525
•
[6969012] - Build and stage New LB for GF v2.1.1 P07
•
[6969015] - Build and stage New ORB bits for GF v2.1.1 P07
•
[6970487] - context needs to be closed before re-creating a new one
•
[6970519] - flaw in web content for new load-balance option with regards to verification check
•
[6970871] - Build and integrate new NSS3.12.7 for GF2.1.1 P07
•
[6970874] - Build and stage new appserv-native bits for GF 2.1.1 p07
•
[6856838] - Jdbc transaction auto-commit when application server is shutting down.
•
[6880207] - add code into LoggingPrintStream to implement flush() so that it does not BLOCK (SGES v2.1)
•
[6937791] - Unable to add JVM option to Profiler in SGCS admin GUI
•
[6945530] - Integrate new JAX-RPC (Metro) into v2.1.1
•
[6946682] - Enabling/disabling an application on a cluster gives an ArrayIndexOutOfBoundsException
•
[6947171] - When setting up a Profiler name containing a blank space, the response page is the Exception report
•
[6947568] - Require configurable want|need support for client-auth
•
[6950297] - glassfish log viewer does not provide access to rotated logs
•
[6950648] - startInstance method call flow changed which breaks backword compatibility
•
[6951381] - Grizzly's SSLOutputWriter assumption is always that Thread.currentThread() is type SSLWorkerThread
•
[6951384] - JPA Master-detail persistence - when adding the detail, you get TWO inserts
•
[6953183] - domain.xml file size zeroed out
•
[6953207] - NodeAgents creating too many unnecessary threads
•
[6953751] - When setting up a Profiler name containing a special char, the response page is the Exception report
•
[6954345] - Integrate metro 1.1.13 into v2.1.1
•
[6954354] - Fix regression for 6793693
•
[6955866] - Build, stage and integrate new NSS 3.12.6 jars
•
[6957316] - Stage new grizzly bits for Glassfish v2.1.1 P06
•
[6957777] - com.sun.enterprise.server.logging.max_history_files is not working at all
•
[6959368] - java.lang.OutOfMemory when deploying and undeploying ear's multiple times
•
[6960133] - Version changes and README updates for P06
Additional Notes:
see the patch description for further details.
The adoption of Hudson continues in many (or should I say all?) fronts. At some point it seemed to be mostly just Sun, but now it is Oracle and a whole cast of other companies and groups.
Today's addition to these movement is CloudBees a startup whose team includes a bunch of old friends, including Sacha, VivekP and BobB. As Bob and Sacha explain, CloudBees comes with two services DEV@cloud (SAAS for developers) and RUN@cloud (PAAS for production). The first piece - today's announcement - is about DEV@cloud, which is all around HaaS - Hudson As A Service. Very nice!
Welcome aboard, CloudBees - you can follow them at @CloudBees. Added And here is KK's welcome.
Hudson momentum is strong and wide. And does not show any significant negative impact from the Oracle acquisition of Sun, nor from Kohsuke's departure to his own start-up. If anything, the wider number of participants has energized the community (see Hudson-Labs) and seems to have solidified the role of Hudson as the leading CI product. Doing a quick recap...
Andrew just wrote a note reporting on the (anonymous) data collected from Hudson via the Update Center (you can opt-out, see his post). The result shows a growing number of connected installations (~23K, see image at left), plus whatever is behind firewalls.
Coincidentally, John has started a new (2010) poll on Build and CI tools, and Hudson currently shows >65% (although this is a self-selected poll, which has methodological issues, it is hard to argue with 65%).
There are many other signs of increased adoption. Some of the non-Oracle companies are MikeCI, CollabNet (here and here), Sonatype (here), and JFrog (here). Hudson is also strong at Oracle - its internal use has continued to grow both at "Sun legacy" and at "Oracle classic", and Winston Prakash very recently joined the Hudson@Oracle team and has already started contributing as part of the Development Tool Offering at Oracle.
And Kohsuke continues to be fully engaged, now with his InfraDNA hat, where he was recently joined by Kedar.
As Sacha signs off... Onward!
PS - Add comments with links to other companies I missed and I'll rev the post. Now, or whenever you move out of stealth mode...
In the evening, Hermien and Chris turned up again, this time at a JUG event in a bar (is there a better place for a JUG event?), organized primarily by Mark Clarke (the extremely versatile organizer of the courses I am delivering in South Africa) from Jumping Bean. Here are some nice pics to evoke the feeling of the evening. (All you need to do is pretend there's semi-loud pumping disco type music in the background and you'll be very close to where we were in reality.)
Chris in action:
Hermien (author of On the NetBeans Platform Build System) in action:
Earlier in the day, during his presentation during the course, Chris announced the release of PinkMatter's Ribbon bar library for the NetBeans Platform. (Based on the work by Kirill and Gunnar and others, but this time independent of look and feel.)
And today the first day of the two day advanced training started. Of the original 16 in the basic course, 5 students remained in the advanced course, during which we're porting Robert Kelsey's AMSWin to the NetBeans Platform!
The same training is being held in Stellenbosch next week... and Chris will be there too to talk about Maltego, artificial intelligence, three-letter companies, and the NetBeans Platform. You can still join in!
After an update to one of our Linux test machines, stack overflow detection stopped working in Maxine on Linux. We employ the same mechanism as HotSpot of placing a yellow guard page at the end of the stack. That is, the lowest addressed page of the application accessible part of the stack is mprotected with PROT_NONE. This is in addition (and adjacent) to the red guard page placed by the thread library itself. On entry to every compiled Java method, a stacking banging instruction sequence loads at a fixed negative offset from the stack pointer. For example, on x64 the sequence is:
mov r11, [rsp - 0x3000] If this address falls within the yellow guard page, an OS trap occurs. Control passes to the signal handler registered by the VM which will translate this as a stack overflow and throw a StackOverflowError. However, as a result of the aforementioned update, we were no longer seeing an OS trap when the yellow guard page was accessed on Linux. Something was changing the protection bits for the guard page. With a little help from gdb and strace, I discovered that when the VM loaded the libjava.so library from the JDK, dlopen triggered a call to a rather self-documenting function named __make_stacks_executable. What was this?! This function (source here) iterates over the list of current threads and calls mprotect on the entire stack of each thread with the flags PROT_READ | PROT_WRITE | PROT_EXEC. Of course, this removed the yellow guard page and hence the reason for the failure of stack overflow detection.
So, why did the linker decide to take this action? It turns out that it's all to do with the GNU_STACK ELF header, nicely described here and here. The Maxine launcher (maxvm) and shared library (libjvm.so) are compiled with the default stack-protection value for the GNU_STACK header which is RW (read/write). This means the thread library (pthreads) ensures all thread stacks are initially created with PROT_READ | PROT_WRITE protection flags. Now when the linker loads a shared library that does not have a GNU_STACK header (e.g. a legacy library compiled before gcc added this header by default) or has a GNU_STACK header whose value is RWX, then it calls (via a call-back registered by pthreads I think) the aforementioned __make_stacks_executable function. After this point, all currently active threads no longer have a yellow guard page on their stack. As I discovered, most of the shared libraries in the Linux JDK (build 1.6.0_20-b02) do not have a GNU_STACK header and hence indicate to the linker that they require executable stacks.
So, what's the solution for Maxine to handle this? A bit of experimentation revealed that if I added the default GNU_STACK header (with the execstack command) to all the shared libraries in the JDK, the Maxine VM stack overflow detection worked again. However, I'm not sure that this is safe in general as I don't know if HotSpot places executable code on the stack (much like gcc does to implement trampolines for local functions). The solution we've adopted for Maxine is to use the -z execstack option when linking the VM launcher. This basically makes the launcher equivalent to the JDK shared libraries with respect to controlling pthread's use of executable stacks (except that it's done with a non-default value of the GNU_STACK header, not its absence). I'd be curious to know what version of gcc is used to build the JDK for Linux as I'm not aware of a flag to omit this header in the current version of gcc. One (unfortunate) implication of this linker behaviour is that HotSpot (and Maxine) binaries & libraries must always specify executable stacks if they are to continue supporting loading of 3rd party libraries (part of JNI). Either that or invent another way to implement stack overflow detection that does not involve protecting pages on the stack.
On Thursday, August 26. We are hosting a webcast that will take you through the solution and talk about why we believe this will simplify Access Management. Please join us as F5 and Oracle product experts explain this simple solution.
Title: Live Webcast: Streamline Access Management with F5 & Oracle
When: Thursday, August 26, 2010, 10:00 a.m. PT or 1:00 p.m. ET
Where: Register for this live webcast here: Streamline Access Management with F5 & Oracle
On Thursday, August 26. We are hosting a webcast that will take you through the solution and talk about why we believe this will simplify Access Management. Please join us as F5 and Oracle product experts explain this simple solution.
Title: Live Webcast: Streamline Access Management with F5 & Oracle
When: Thursday, August 26, 2010, 10:00 a.m. PT or 1:00 p.m. ET
Where: Register for this live webcast here: Streamline Access Management with F5 & Oracle
GlassFish (JavaEE) is still going and going and going.........strong !!!
I have been working in this Java Application Server area for so long.
GlassFish is one of the greatest Open Source JavaEE compatible Server that I love to work with.
We will see more in this year GlassFish 2010 Community Event and Party at JavaONE for the community FREE.
http://wikis.sun.com/display/GlassFish/GlassFish+2010+Community+Event+and+Party
And you should also register to come and join us at this Oracle JavaONE 2010.
Recently I had a nice experience configuring failover with Solaris MPxIO (Multipathing), Oracle ASM (Automatic Storage Management) and Oracle's Sun Storage 6180 array. In this configuration failover was completely transparent to the Oracle database.
MPxIO is part of the Solaris 10 distribution. Multipathing provides redundant paths and eliminates a single point of failure by failing over to an alternate path automatically when one of the paths fails. Oracle ASM was used for volume manager to manage Oracle database files and it works very well with Multipathing. The Sun Storage 6180 array configuration had two controllers and each controller was connected to a different adapter on the host for redundant path. Multipathing generates a pseudo device and by providing Oracle ASM a pseudo device name at ASM diskgroup creation it makes failover transparent to the Oracle database.
HW/SW Configuration
Sun SPARC Enterprise M9000, 2x 8Gb FC HBA 1xSun Storage 6180 array, 16x 300G 15K RPM disks, two controllers, Firmware 07.60.18.13 Solaris 10, Oracle 11g with Oracle ASM MPxIO enabledWhen one of the paths fails (e.g. Cable, adapter, controller) system messages in /var/adm/messages file show the following sequence of events.
The following shows the steps and examples to set up MPxIO and Oracle ASM. At the bottom of the page it shows system messages from failover.
Sun Storage 6180 array
First you need to configure two paths physically. In this case, one controller was connected to one of the HBAs on the host and the other controller was connected to the other HBA.
Host
Solaris 'stmsboot -e' command enables MPxIO. It will prompt you to reboot the host.
#stmsboot -L
non-STMS device name STMS device name ------------------------------------------------------------------ /dev/rdsk/c6t0d0 /dev/rdsk/c29t60080E5000184350000003614C5EBE23d0 /dev/rdsk/c6t0d2 /dev/rdsk/c29t60080E5000184350000003654C5EBE44d0 /dev/rdsk/c6t0d1 /dev/rdsk/c29t60080E50001845C6000003524C5EBE2Ed0 /dev/rdsk/c6t0d3 /dev/rdsk/c29t60080E50001845C6000003564C5EBE4Cd0 /dev/rdsk/c9t4d0 /dev/rdsk/c29t60080E5000184350000003614C5EBE23d0 /dev/rdsk/c9t4d2 /dev/rdsk/c29t60080E5000184350000003654C5EBE44d0 /dev/rdsk/c9t4d1 /dev/rdsk/c29t60080E50001845C6000003524C5EBE2Ed0 /dev/rdsk/c9t4d3 /dev/rdsk/c29t60080E50001845C6000003564C5EBE4Cd0 Notice c6t0 and c9t4 point to the same STMS device name (e.g. c6t0d0 and c9t4d0 point to c29t60080E5000184350000003614C5EBE23d0).Oracle ASM
Create a ASM diskgroup by providing MPxIO pseudo device names.
Initialize disks by doing 'dd if=/dev/zero of=/dev/rdsk/c29t60080E50001843500 00003614C5EBE23d0s0 bs=1204k count=10.
System messages from failover
When one of the paths fails at the array side 'sscs list -a array_name fcport ' shows one of the ports is down.
And /var/adm/messages file reports:
Aug 10 11:17:33 host1 emlxs: [ID 349649 kern.info] [ 5.0314]emlxs0: NOTICE: 710: Link down. Aug 10 11:19:03 host1 fctl: [ID 517869 kern.warning] WARNING: fp(2)::OFFLINE timeout Aug 10 11:19:22 host1 scsi: [ID 243001 kern.info] /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fcp2): Aug 10 11:19:22 host1 offlining lun=3 (trace=0), target=ef (trace=2800004) Aug 10 11:19:22 host1 scsi: [ID 243001 kern.info] /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fcp2): Aug 10 11:19:22 host1 offlining lun=2 (trace=0), target=ef (trace=2800004) Aug 10 11:19:22 host1 scsi: [ID 243001 kern.info] /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fcp2): Aug 10 11:19:22 host1 offlining lun=1 (trace=0), target=ef (trace=2800004) Aug 10 11:19:22 host1 scsi: [ID 243001 kern.info] /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fcp2): Aug 10 11:19:22 host1 offlining lun=0 (trace=0), target=ef (trace=2800004) Aug 10 11:19:22 host1 genunix: [ID 408114 kern.info] /pci@6,600000/SUNW,emlxs@0/fp@0,0/ssd@w2014 0080e51845c6,1f (ssd0) offline Aug 10 11:19:22 host1 genunix: [ID 834635 kern.info] /scsi_vhci/ssd@g60080e50001845c6000003564c5 ebe4c (ssd165) multipath status: degraded, path /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fp2) to targe t address: w20140080e51845c6,3 is offline Load balancing: round-robin Aug 10 11:19:22 host1 genunix: [ID 834635 kern.info] /scsi_vhci/ssd@g60080e5000184350000003654c5 ebe44 (ssd166) multipath status: degraded, path /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fp2) to targe t address: w20140080e51845c6,2 is offline Load balancing: round-robin Aug 10 11:19:22 host1 genunix: [ID 834635 kern.info] /scsi_vhci/ssd@g60080e50001845c6000003524c5 ebe2e (ssd167) multipath status: degraded, path /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fp2) to targe t address: w20140080e51845c6,1 is offline Load balancing: round-robin Aug 10 11:19:22 host1 genunix: [ID 834635 kern.info] /scsi_vhci/ssd@g60080e5000184350000003614c5 ebe23 (ssd168) multipath status: degraded, path /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fp2) to targe t address: w20140080e51845c6,0 is offline Load balancing: round-robin Aug 10 11:19:22 host1 scsi: [ID 243001 kern.info] /scsi_vhci (scsi_vhci0): Aug 10 11:19:22 host1 Initiating failover for device ssd (GUID 60080e5000184350000003614c5ebe 23) Aug 10 11:19:23 host1 scsi: [ID 243001 kern.info] /scsi_vhci (scsi_vhci0): Aug 10 11:19:23 host1 Failover operation completed successfully for device ssd (GUID 60080e50 00184350000003614c5ebe23): failed over from primary to secondary Aug 10 11:23:10 host1 emlxs: [ID 349649 kern.info] [ 5.0536]emlxs0: NOTICE: 720: Link up. (8Gb, loop, initiator) Aug 10 11:23:10 host1 genunix: [ID 936769 kern.info] ssd0 is /pci@6,600000/SUNW,emlxs@0/fp@0,0/s sd@w20140080e51845c6,1f Aug 10 11:23:11 host1 genunix: [ID 408114 kern.info] /pci@6,600000/SUNW,emlxs@0/fp@0,0/ssd@w2014 0080e51845c6,1f (ssd0) online Aug 10 11:23:11 host1 genunix: [ID 834635 kern.info] /scsi_vhci/ssd@g60080e50001845c6000003564c5 ebe4c (ssd165) multipath status: optimal, path /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fp2) to target address: w20140080e51845c6,3 is standby Load balancing: round-robin Aug 10 11:23:11 host1 genunix: [ID 834635 kern.info] /scsi_vhci/ssd@g60080e5000184350000003654c5 ebe44 (ssd166) multipath status: optimal, path /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fp2) to target address: w20140080e51845c6,2 is online Load balancing: round-robin Aug 10 11:23:11 host1 genunix: [ID 834635 kern.info] /scsi_vhci/ssd@g60080e50001845c6000003524c5 ebe2e (ssd167) multipath status: optimal, path /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fp2) to target address: w20140080e51845c6,1 is standby Load balancing: round-robin Aug 10 11:23:11 host1 genunix: [ID 834635 kern.info] /scsi_vhci/ssd@g60080e5000184350000003614c5 ebe23 (ssd168) multipath status: optimal, path /pci@6,600000/SUNW,emlxs@0/fp@0,0 (fp2) to target address: w20140080e51845c6,0 is standby Load balancing: round-robin Aug 10 11:23:11 host1 scsi: [ID 243001 kern.info] /scsi_vhci (scsi_vhci0): Aug 10 11:23:11 host1 Initiating failover for device ssd (GUID 60080e5000184350000003614c5ebe 23) Aug 10 11:23:13 host1 Failover operation completed successfully for device ssd (GUID 60080e50 00184350000003614c5ebe23): failed over from secondary to primary Aug 10 11:23:13 host1 scsi: [ID 243001 kern.info] /scsi_vhci (scsi_vhci0): Aug 10 11:23:13 host1 Auto failback operation succeeded for device ssd (GUID 60080e5000184350 000003614c5ebe23) That's it. Try this for yourself.
The nominations for the 8th annual JCP Program Awards have closed and it is time for the JCP Executive Committee (EC) Members to cast their votes. This year we have combined the awards into a total of three categories. The winners will be announced during the Wednesday evening event during JavaOne, which will be held this year on 22 September at the Intercontinental Hotel (more details on the event to follow later). I've listed the nominees as well as their nomination justifications below. Congratulations to the nominees!
JCP Member of the Year
---------------------------------------
- Aplix. For leadership in the Java ME space.
- Stephen Colebourne. Not only with JSR 310, but also in other areas, especially language improvements or Dynamic Languages on the JVM he continues his aim to help Java grow and mature.
- Bob Lee/Google. Mainly for JSR 330.
- Red Hat Middleware. For adapting JSR 330 into JSR 299. Despite a relatively tiny piece of software (JSR 330), it is a first step towards creating standards together with other companies instead of just following their own agenda ;-).
Outstanding Spec Lead
-----------------------------------
- Emmanuel Bernard (Red Hat), JSR 303, Bean Validation. Emmanuel ran one of the most open specifications in the JCP history, maintaining a public specification document, public forum discussions, public issue tracker and an Apache-licensed TCK and RI. He also demonstrated unparalleled collaboration with other JSR groups. But his most notable contribution was his first, reviving a staled specification and taking over leadership from another party. *
- Gavin King (Red Hat), JSR 299, Contexts and Dependency Injection for the Java EE Platform. The role of a Spec Lead is not an easy one, but this specification took the challenge to a whole new level. What started out as an effort to integrate the JSF and EJB technologies became a specification that would stimulate a commitment to collaboration across the EE platform. *
- Dave Kim (SK Telecom), JSR 327, Dynamic Contents Delivery Service API for Java ME.
- Ronald Tögl, JSR 321, Trusted Computing API for Java. With his passion and continuous effort he not only brought JSR 321 to EDR stage despite a more than challenging time. He also inspired companies to adopt the JSR and implement against it already.
Most Innovative JSR
-------------------------------
- JSR 309, Media Server Control API .
- JSR 299, Contexts and Dependency Injection for the Java EE platform. Critics have foreshadowed the death of the Java language, claiming that there is little more than can be done to evolve it and therefore needs to be replaced. There have been similar claims that Java EE is becoming a legacy platform because it's not flexible enough to be extended. JSR 299 silenced these viewpoints.*
- JSR 331, Constraint Programming. This JSR represents the real innovation in SE/EE since the 300 number of JSRs started; where almost every other JSR especially in SE/EE is just an upgrade to existing technologies.
- JSR 327, Dynamic Contents Delivery Service API for Java ME.
JCP Program Award Descriptions:
----------------------------------------------------
- JCP Member Of The Year - This award recognizes the corporate or
individual member (either Member or Participant) who has made the most significant positive impact on
the community in the past year. Leadership, investment in the community,
and innovation are some of the qualities that EC Members look for in
voting for this award.
- Most Innovative JSR - Innovation is key to the success of
the JCP program and helps ensure we remain a fresh and vibrant
community. This award recognizes the Spec Lead and Expert Group that
have introduced the most innovative new JSR for the Java community (Java SE, Java EE or Java ME) in
the past year.
- Outstanding Spec Lead - The role of Spec Lead is not
an easy one, and the person who takes that responsibility must be, among
other things, technically savvy, able to build consensus in spite of
diverse corporate goals, and focused on efficiency and execution. This
award recognizes the person who has brought together these qualities the
best in the past year, in leading a JSR for the Java community (Java SE, Java EE or Java ME).
* abbreviated for this entry.