Dladm and SC 3.2 ?

Can I use dladm to aggregate several public Ethernet ports on SC 3.2 NFS HA nodes ?

Yes. SC3.2 support was added a month or two ago.
Tim
---

Similar Messages

  • Dladm and lacp

    Hi,
    i installed the e1000g driver on my t2000. now i want to use linkaggregation with dladm. I setup 1 aggregate with 2 interfaces, each interface is physically connected to another switch (2 cisco 6500 trunked).
    The setup of the trunking with dladm was straight forward, but now i get this message in the log:
    WARNING: IP: Hardware address '00:12:1e:15:67:8e' trying to be our address 10.0.0.130!
    I didn't set up any LACP configuration now, because i couldn't find any suggestions on how to configure it. Can somebody tell what would be the best setup on the server (active or passive) and what has to be configured on the switches (active, passive, on).
    Thanks

    Hi,
    i installed the e1000g driver on my t2000. now i want
    to use linkaggregation with dladm. I setup 1
    aggregate with 2 interfaces, each interface is
    physically connected to another switch (2 cisco 6500
    trunked).
    The setup of the trunking with dladm was straight
    forward, but now i get this message in the log:
    WARNING: IP: Hardware address '00:12:1e:15:67:8e'
    trying to be our address 10.0.0.130!That means the switch doesn't recognize or isn't configured to handle the trunk. Packets from one side of the aggregate are being forwarded by the switch back to the other link on the machine.
    See:
    http://www.opensolaris.org/jive/message.jspa?messageID=78156
    Darren

  • Is it possible to use wi-fi networks without NWAM in Solaris 11 Express?

    Hello,
    I have disabled NWAM in Solaris 11 Express and now I'm trying to set up a wi-fi connection with dladm and ipadm only.
    I reached a point where all seems well configured and I can even ping my on dhcp leased address.
    But I can't ping the default gateway, for example.
    I get something such as "Network unreachable".
    This is in spite of "netstat -rn" shows a reasonable route.
    Thanks in advance,
    Carlos.

    When I have it disabled I'm not being able to ping other addresses but my own.
    I don't know if I'm doing something wrong or if nwam is doing something else under the hood when it's enabled.
    Regards,
    Carlos.

  • Monitoring and Maintaining NICs....... OS command options......

    Hello all. A very general question here.
    I'm trying to investigate a number of options that are available (standard OS commands) to perform query and maintenance on network interface cards. I'm aware of the likes of ifconfig, netstat, kstat and ndd but am interested to hear about any others that allow attribute analysis of the NICs.
    Attributes of particular interest are speed, negotiation duplex settings. I'm aware that the above commands can return these values.... but ..... as I said, it's just a little research project that i'm working on.
    Many thanks.

    Solaris 10 has the "dladm show-dev" that will give link status, speed and duplex. Looks like "nicstatus" on bigadmin is now updated to use dladm: http://www.sun.com/bigadmin/scripts/submittedScripts/nicstatus.txt
    For the very specific outputs on interfaces (errors, drops, etc., etc.) kstat (or ndd for some of the older interfaces like hme) is still the gold standard, so to speak. Be careful, b/c those counters can flip over many times since boot time (the only way to clear kstat counters) on a busy networked system.

  • Solaris Express Zone install error with SUNWiiimr and SUNWcnetr

    Hi all,
    I got these errors when installing a new zone on a Solaris Express 1/08 (5.11) on a x64 box:
    Installation of these packages generated errors: SUNWiiimr
    Installation of these packages generated warnings: SUNWcnetr
    The zone creation log shows:
    *** package -SUNWiiimr- failed to install with fatal errors:
    /export/zones/newzone/root/var/sadm/pkg/SUNWiiimr/install/postin stall: /export/zones/newzone/root/lib/postrun: not found
    /export/zones/newzone/root/var/sadm/pkg/SUNWiiimr/install/postinstall: /export/zones/newzone/root/lib/postrun: not found
    pkgadd: ERROR: postinstall script did not complete successfully
    Installation of -SUNWiiimr- on zone -newzone- failed.
    *** package -SUNWcnetr- installed with warnings:
    pkgadd: ERROR: unable to create package object -/export/zones/newzone/root/etc/dladm-.
    owner name -dladm- not found in passwd table(s)
    ERROR: attribute verification of -/export/zones/newzone/root/etc/dladm/aggregation.conf- failed
    owner name -dladm- not found in passwd table(s)
    ERROR: attribute verification of -/export/zones/newzone/root/etc/dladm/linkprop.conf- failed
    owner name -dladm- not found in passwd table(s)
    ERROR: attribute verification of -/export/zones/newzone/root/etc/dladm/secobj.conf- failed
    owner name -dladm- not found in passwd table(s)
    Installation of -SUNWcnetr- on zone -newzone- partially failed.
    -newzone- was configured to be a whole root zone. Are there any ways to solve these installation errors?
    Thanks in advance.

    This problem seems some strange - this time with Solaris 10u4, from 10 containers installed on a brand new X2200 (2x cpu) only one do not output those errors, but just this one cannot install the dsee or proxy. This time the errors were from:
    Installation of <SUNWxwplr> on zone <dsee-proxy> partially failed.
    Installation of <SUNWdtdmr> on zone <dsee-proxy> partially failed.
    Installation of <SUNWmconr> on zone <dsee-proxy> partially failed.
    Installation of <SUNWrmwbr> on zone <dsee-proxy> partially failed.
    Installation of <SUNWlvmr> on zone <dsee-proxy> partially failed.
    Installation of <SUNWzebrar> on zone <dsee-proxy> partially failed.
    So the machine was, too, just installed. After several hours, anoter atempt to install a zone, this time just this one, returned no errors - and the dsee installed without any complains. All configurations were for whole root zones. Used was Solaris 10u4 with the most recent patch cluster applied.

  • How to set full duplex and speed on vnet interface

    Dear All,
    currently I have this issue
    # dladm show-dev
    vnet0           link: up        speed: 0     Mbps       duplex: unknown
    vnet1           link: up        speed: 0     Mbps       duplex: unknown
    How to set it to full duplex and full speed?
    thank in advance

    hi Reido,
    lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000
    vnet0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
            inet 192.168.0.5 netmask ffffff00 broadcast 192.168.2.255
            groupname db_ipmp
            ether 0:14:4f:fa:38:f3
    vnet0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
            inet 0.0.0.0 netmask ff000000 broadcast 0.255.255.255
    vnet1: flags=69000842<BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,STANDBY,INACTIVE> mtu 0 index 3
            inet 0.0.0.0 netmask 0
            groupname db_ipmp
            ether 0:14:4f:f9:4c:38
    Then
    root@SVR-UATDB01 # ndd /dev/vnet0 -set adv_1000fdx_cap 1
    operation failed: Invalid argument
    thank for you feedback

  • Best practices for IPMP and LDoms?

    Having read the Oracle VM Server for SPARC 2.0 Administration Guide, it seems to imply that it might be possible to configure IPMP in the control domain (i.e. between the virtual switch interfaces), eliminating the necessity to configure IPMP on each individual guest domain. Specifically, it says:
    Configuring and Using IPMP in the Service Domain
    IPMP can be configured in the service domain by configuring virtual switch interfaces into a group. The following diagram shows two virtual switch instances (vsw0 and vsw1) that are bound to two different physical devices. The two virtual switch interfaces can then be plumbed and configured into an IPMP group. In the event of a physical link failure, the virtual switch device that is bound to that physical device detects the link failure. Then, the virtual switch device sends notification of this link event to the IP layer in the service domain, which results in failover to the other virtual switch device in the IPMP group.
    Unfortunately, when I configure IPMP in this way -- that is, with vsw0 and vsw0 in an IPMP group -- it doesn't appear to do what I'm looking for. I can ping the service domain, but not the guest domains which rely on that virtual switch.
    So, this is my question: is it possible to configure IPMP in the service domain and eliminate the need to configure IPMP in the guest domain, and if so, how? Or is it always necessary to share both virtual switches with the guest domain and setup IPMP with the guest domain, as in the example in the documentation?
    Thanks,
    Patrick Narkinsky

    I'm not 100% sure, but I think that the documentation means that you can configure an IPMP group in the service domain for the vsw interfaces that are used by the service domain for its networking:
    The two virtual switch interfaces can then be plumbed and configured into an IPMP group. So for example there would be vsw0 and vsw1 that are plumbed and an IP address would be assigned to the group. This does not mean the vsws that you are using for guest domain traffic.
    If you would like to have a transparent multipathed networking (like MPxIO multipathing for SAN disks) for the virtual switches that provide networking for guest domains, I guess that you could use aggregates (see dladm command). The problem is or at least has been that the interfaces that are configured in aggregate must be connected to the same switch. Then there will be a SPOF. Not sure if modern network switch OS's have some kind of a capability to spread an aggregate (in Cisco world etherchannel) between two or more physical switches.
    So IMHO you have to configure the IPMP group in the guest domains.

  • Slow ZFS-share performance (both CIFS and NFS)

    Hello,
    After upgrading my OpenSolaris file server (newest version) to Solaris 11 Express, the read (and write)-performance on my CIFS and NFS-shares dropped from 40-60MB/s to a few kB/s. I upgraded the ZFS filesystems to the most recent version as well.
    dmsg and /var/log/syslog doesn't list anything abnormal as far as I can see.. I'm not running any scrubs on the zpools, and they are listed as online. top doesn't reveal any process utilizing the CPU more than 0.07%.
    The problem is probably not at the client side, as the clients are 100% untouched when it comes to configuration.
    Where should I start looking for errors (logs etc.)? Any recommended diagnostic tools?
    Best regards,
    KL

    Hi!
    Check Link speed.
    dladm show-dev
    Check for collisions and wrong network packets:
    netstat -ia
    netstat -ia 2 10 ( when file transfered)
    Check for lost packets :
    ping -s <IP client> ( whait more 1 min )
    Check for retransmit, latency for respond:
    snoop -P -td <IP client> ( when file transfered)
    Try replace network cable.
    Regards.

  • LDOM dladm does not show other interface.

    Create another vnet1 on LDOM (ldg0). But dladm does not show it. There are entries in path-to-inst for it and I was able plumb interface.
    bash-3.00# ifconfig -a
    lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
    inet 127.0.0.1 netmask ff000000
    vnet0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
    inet 10.2.100.77 netmask ffffff00 broadcast 10.2.100.255
    ether 0:14:4f:fb:32:a
    vnet1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
    inet 192.168.30.30 netmask ffffff00 broadcast 192.168.30.255
    ether 0:14:4f:fb:6c:99
    bash-3.00# dladm show-dev
    vnet0 link: unknown speed: 0 Mbps duplex: unknown
    bash-3.00#
    Yet dladm does not show device. What have I done wrong?
    Here the ldm binding info for just networking
    # ldm list-bindings primary (network only)
    VSW
    NAME MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE
    primary-vsw0 00:14:4f:fb:1d:38 e1000g0 0 switch@0 1 1 1500
    PEER MAC PVID VID MTU LINKPROP
    vnet0@ldg0 00:14:4f:fb:32:0a 1 1500
    vnet1@lqwest 00:14:4f:fb:b0:34 1 1500
    vnet2@ldg0 00:14:4f:fb:6c:99 1 1500
    # ldm list-bindings ldg0 (network only)
    NETWORK
    NAME SERVICE ID DEVICE MAC MODE PVID VID MTU LINKPROP
    vnet0 primary-vsw0@primary 0 network@0 00:14:4f:fb:32:0a 1 1500
    PEER MAC MODE PVID VID MTU LINKPROP
    primary-vsw0@primary 00:14:4f:fb:1d:38 1 1500
    vnet1@lqwest 00:14:4f:fb:b0:34 1 1500
    vnet2@ldg0 00:14:4f:fb:6c:99 1 1500
    NAME SERVICE ID DEVICE MAC MODE PVID VID MTU LINKPROP
    vnet2 primary-vsw0@primary 1 network@1 00:14:4f:fb:6c:99 1 1500
    PEER MAC MODE PVID VID MTU LINKPROP
    primary-vsw0@primary 00:14:4f:fb:1d:38 1 1500
    vnet0@ldg0 00:14:4f:fb:32:0a 1 1500
    vnet1@lqwest 00:14:4f:fb:b0:34 1 1500
    It appears to be working, but is this correct since dladm does not show the vnet1 interface?

    I had the same problem. SUN support recommends latest kernel patches. That solved my problem.

  • ISCSI and trunking

    Hi,
    I am setting up a test environment for evaluating iSCSI and we would like to know if Sun Trunking 1.3 and iSCSI under Solaris 10 is supported, we would also like to implement jumbo frames as well.
    Has anyone tried this kind of configuration?
    Thank you in advance for any information!
    Chris

    I think you should be using dladm rather than Sun
    Trunking with Solaris 10.
    Also, you don't say, but if you're planning to use
    Solaris iSCSI targets, then they don't exist in
    Solaris 10 yet, you need OpenSolaris for target
    support at the moment.Thanks for your reply.
    The iSCSI target was a NetApp appliance. We actually
    did find that Sun Trunking 1.3 works fine with
    Solaris 10 as well as jumbo frames.
    We used Sun's quad (ce) gigabit Ethernet adapter and
    trunked two ports on the host end.
    Thanks again.
    I'll have to look into dladmMain. update 2 of Solaris 10 has native iSCSI initiator.
    Works great on 3PAR's storage array.
    M

  • Etherchannel and link aggregation

    Hi!
    I'm a bit confused now, Sun Trunking supports Cisco Etherchannel, but link aggregation doesn't (if I understand correctly, a with the results of my quick tests).
    Sun Trunking seems to be supporting a certain set of drivers and link aggregation another set.
    Right now I've got a T2000 with 4 X e1000g and 4 X nxge, does anyone knows, if I can use these interfaces with Cisco Etherchannel, or do I absolutely need to use LACP with link aggregation??? The problem is that the network guys don't want us to use LACP (for whatever reason they have)...
    Thank you very much.
    Martin

    I don't know any cisco term referring to "pure" etherchannel, so I don't know how to answer that. Both LACP and PAgP are link management protocols that cisco can use. I'm supposing that you're asking if the cards will work with PAgP management, but I'm not sure.
    This FAQ:
    http://www.sun.com/products/networking/ethernet/suntrunking/faq.xml
    suggests that I've been incorrect about 802.3ad being a "new" thing and that SunTrunking 1.3 also uses it.
    The SunTrunking 1.3 docs here:
    http://docs.sun.com/source/817-3374-11/index.html
    in chapter 1 (Overview) list six cards. I don't think yours are any of them, so SunTrunking is out.
    Because LACP "only" manages the link configuration rather than driving the data, it seems to me that both the link-aggregation and cisco sides could work without LACP being present, but the management of the links might be wonky.
    So without LACP, the links have to be configured manually, but I don't yet see anything that states that the two sides will not communicate if that is done.
    Further, the 'dladm' man page says that one valid lacp mode on the Solaris is "off", so it must have some functionality without LACP. I would imagine that will required some sort of manual link configuration on the cisco side. (The solaris side is not going to do PAgP).
    See also:
    http://www.kabewm.com/2007/02/22/solaris-10-lacp-trunking-w-cisco-6509/
    When the www.opensolaris.org boards come back up, I would recommend posting this question in the "networking" discussion group.
    Darren

  • VLAN on T2000 w. Sol 10 01/06 and X4151A card.

    The onboard E1000G works fine, it's only when I added the X4151A card that I have this issue.
    I installed the card and a fresh install of Sol 10 01/06
    I setup the vlan "80" as device ce80000 on device ce0
    # ifconfig -a
    lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL > mtu 8232 index 1
    inet 127.0.0.1 netmask ff000000
    ce80000: flags=201000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,CoS> mtu 1500 index 2
    inet 10.10.80.112 netmask ffffff00 broadcast 10.10.80.255
    ether 0:14:4f:1e:9e:99
    I can ping to/from the box, but I can't telnet to/from it.
    When I started "snoop" in NON-PROMISC mode suddenly everything worked. I could establish telnet connections to and from the box. When i quit snoop all of them died.
    The VLAN config on the switch is fine, I unplugged the MMF cables from a working sun box (with a syskonnect card) and plugged them into the X4151A.
    There is no firewall setting.
    The IPs are valid.
    When I set the switch to use non-trunking and juse configure ce0 with the ip I was using for ce80000 it works fine.
    netstat shows no packets.. UNLESS snoop is running (again it's running in NON-PROMISCUOUS MODE)
    I'm lost..
    What have I done wrong?
    # dladm show-link
    ipge0 type: legacy mtu: 1500 device: ipge0
    ipge1 type: legacy mtu: 1500 device: ipge1
    ce0 type: legacy mtu: 1500 device: ce0
    ipge2 type: legacy mtu: 1500 device: ipge2
    ipge3 type: legacy mtu: 1500 device: ipge3
    oddly the vlan isn't listed there even though all documentation i've read says it should list vlans.
    There is no configuration file for the card, and after looking through the manual I don't see any need for me to create one because the VLANs are a seperate thing.

    Just a quick update:
    I spoke to sun support and was told to apply the following patch. It solved all my problems
    http://sunsolve.sun.com/private-cgi/bounce.pl?url=/search/do cument.do?assetkey=1-21-118777-04-1

  • A problem with Threads and loops.

    Hi, I have some code that needs to be constantly running, like while(true)
          //code here
    }However, the code just checks to see if the user has input anything (and then if the user has, it goes to do some other stuff) so I don't need it constantly running and hogging up 98% of the CPU. So I made my class (which has the method that needs to be looped, call it ClassA) implement Runnable. Then I just added the method which needed to be looped into the public void run()
    I have another class which creates an instance of the above class (call it ClassB), and the main(String[] args) is in there.
    public static void main(String[] args)
              ClassA test = new ClassA();
              Thread thread = new Thread(test.getInstanceOfClassA());
              thread.start();
              while(true)
                           //I do not know what to put here
                   try
                        thread.sleep(100);
                   catch(InterruptedException iex)
         }However, the thread only calls run() once,(duh...) but I can't think of away to get it to run - sleep - run -sleep forever. Can someone help me?

    Hi, I have some code that needs to be constantly
    running, like while(true)
    //code here
    }However, the code just checks to see if the user has
    input anything (and then if the user has, it goes to
    do some other stuff) so I don't need it constantly
    running and hogging up 98% of the CPU. Where does the user input come from. Are you reading from an InputStream? If so, then your loop will be blocked anyway when reading from the InputStream until data is available. During that time, the loop will not consume processor cycles.
    public static void main(String[] args)
              ClassA test = new ClassA();
    Thread thread = new Thread(test.getInstanceOfClassA());I have never seen this idiom. If ClassA instanceof Runnable, you simply write new Thread(test).
              thread.start();
              while(true)
    //I do not know what to put
    do not know what to put here
                   try
                        thread.sleep(100);
                   catch(InterruptedException iex)
         }However, the thread only calls run() once,(duh...)Yeah, why would you want to call it more than once given that you have an infinite loop in ClassA.run()?
    Harald.
    Java Text Crunching: http://www.ebi.ac.uk/Rebholz-srv/whatizit/software

  • A problem with Threads and MMapi

    I am tring to execute a class based on Game canvas.
    The problem begin when I try to Play both a MIDI tone and to run an infinit Thread loop.
    The MIDI tone "Stammers".
    How to over come the problem?
    Thanks in advance
    Kobi
    See Code example below:
    import java.io.IOException;
    import java.io.InputStream;
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    import javax.microedition.lcdui.game.GameCanvas;
    import javax.microedition.media.Manager;
    import javax.microedition.media.MediaException;
    import javax.microedition.media.Player;
    public class MainScreenCanvas extends GameCanvas implements Runnable {
         private MainMIDlet parent;
         private boolean mTrucking = false;
         Image imgBackgound = null;
         int imgBackgoundX = 0, imgBackgoundY = 0;
         Player player;
         public MainScreenCanvas(MainMIDlet parent)
              super(true);
              this.parent = parent;
              try
                   imgBackgound = Image.createImage("/images/area03_bkg0.png");
                   imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
                   imgBackgoundY = this.getHeight() - imgBackgound.getHeight();
              catch(Exception e)
                   System.out.println(e.getMessage());
          * starts thread
         public void start()
              mTrucking = true;
              Thread t = new Thread(this);
              t.start();
          * stops thread
         public void stop()
              mTrucking = false;
         public void play()
              try
                   InputStream is = getClass().getResourceAsStream("/sounds/scale.mid");
                   player = Manager.createPlayer(is, "audio/midi");
                   player.setLoopCount(-1);
                   player.prefetch();
                   player.start();
              catch(Exception e)
                   System.out.println(e.getMessage());
         public void run()
              Graphics g = getGraphics();
              play();
              while (true)
                   tick();
                   input();
                   render(g);
          * responsible for object movements
         private void tick()
          * response to key input
         private void input()
              int keyStates = getKeyStates();
              if ((keyStates & LEFT_PRESSED) != 0)
                   imgBackgoundX++;
                   if (imgBackgoundX > 0)
                        imgBackgoundX = 0;
              if ((keyStates & RIGHT_PRESSED) != 0)
                   imgBackgoundX--;
                   if (imgBackgoundX < this.getWidth() - imgBackgound.getWidth())
                        imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
          * Responsible for the drawing
          * @param g
         private void render(Graphics g)
              g.drawImage(imgBackgound, imgBackgoundX, imgBackgoundY, Graphics.TOP | Graphics.LEFT);
              this.flushGraphics();
    }

    You can also try to provide a greater Priority to your player thread so that it gains the CPU time when ever it needs it and don't harm the playback.
    However a loop in a Thread and that to an infinite loop is one kind of very bad programming, 'cuz the loop eats up most of your CPU time which in turn adds up more delays of the execution of other tasks (just as in your case it is the playback). By witting codes bit efficiently and planning out the architectural execution flow of the app before start writing the code helps solve these kind of issues.
    You can go through [this simple tutorial|http://oreilly.com/catalog/expjava/excerpt/index.html] about Basics of Java and Threads to know more about threads.
    Regds,
    SD
    N.B. And yes there are more articles and tutorials available but much of them targets the Java SE / EE, but if you want to read them here is [another great one straight from SUN|http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html] .
    Edited by: find_suvro@SDN on 7 Nov, 2008 12:00 PM

  • Problem with Threads and a static variable

    I have a problem with the code below. I am yet to make sure that I understand the problem. Correct me if I am wrong please.
    Code functionality:
    A timer calls SetState every second. It sets the state and sets boolean variable "changed" to true. Then notifies a main process thread to check if the state changed to send a message.
    The problem as far I understand is:
    Assume the timer Thread calls SetState twice before the main process Thread runs. As a result, "changed" is set to true twice. However, since the main process is blocked twice during the two calls to SetState, when it runs it would have the two SetState timer threads blocked on its synchronized body. It will pass the first one, send the message and set "changed" to false since it was true. Now, it will pass the second thread, but here is the problem, "changed" is already set to false. As a result, it won't send the message even though it is supposed to.
    Would you please let me know if my understanding is correct? If so, what would you propose to resolve the problem? Should I call wait some other or should I notify in a different way?
    Thanks,
    B.D.
    Code:
    private static volatile boolean bChanged = false;
    private static Thread objMainProcess;
       protected static void Init(){
            objMainProcess = new Thread() {
                public void run() {
                    while( objMainProcess == Thread.currentThread() ) {
                       GetState();
            objMainProcess.setDaemon( true );
            objMainProcess.start();
        public static void initStatusTimer(){
            if(objTimer == null)
                 objTimer = new javax.swing.Timer( 1000, new java.awt.event.ActionListener(){
                    public void actionPerformed( java.awt.event.ActionEvent evt){
                              SetState();
        private static void SetState(){
            if( objMainProcess == null ) return;
            synchronized( objMainProcess ) {
                bChanged = true;
                try{
                    objMainProcess.notify();
                }catch( IllegalMonitorStateException e ) {}
        private static boolean GetState() {
            if( objMainProcess == null ) return false;
            synchronized( objMainProcess ) {
                if( bChanged) {
                    SendMessage();
                    bChanged = false;
                    return true;
                try {
                    objMainProcess.wait();
                }catch( InterruptedException e ) {}
                return false;
        }

    Thanks DrClap for your reply. Everything you said is right. It is not easy to make them alternate since SetState() could be called from different places where the state could be anything else but a status message. Like a GREETING message for example. It is a handshaking message but not a status message.
    Again as you said, There is a reason I can't call sendMessage() inside setState().
    The only way I was able to do it is by having a counter of the number of notifies that have been called. Every time notify() is called a counter is incremented. Now instead of just checking if "changed" flag is true, I also check if notify counter is greater than zero. If both true, I send the message. If "changed" flag is false, I check again if the notify counter is greater than zero, I send the message. This way it works, but it is kind of a patch than a good design fix. I am yet to find a good solution.
    Thanks,
    B.D.

Maybe you are looking for

  • Song Title Tags Messed Up

    I should note first that I have my music organized manually into folders for different genres (classic rock, rap, etc.) I have also deselected the "Keep itunes music folder organized" and "Copy files into itunes music folder when adding to library" o

  • Uifonts.ali/barcode font aliasing on Solaris

    Hello folks.. I'm running Oracle Reports 10g on a Solaris box. I am needing to print barcodes on PDF reports I generate. I have installed a TrueType font on my Windows box called Code39Azalea.ttf and did the same thing on the Solaris box. On the Sola

  • Linking to stylesheet using templates

    I have a site that looks just the way I want on my local machine. It uses a stylesheet and a template for the entire site. However, when I upload the entire site, the link to the stylesheet changes and is ineffective. So on my local machine, the styl

  • Problem exportation with cs4

    hello, sorry for my bad english the problem : when i  export my video ,   adobe encoder is open , ok but the source is in a bad location   :  c/user/ etc .... and program say " impossible   read the source..." i want change  it  but i don't find para

  • Activation problem: Adobe DRM Error System: 8 State: 4 Class: 65 Code: 59 Message: VE error 59

    Hi, I bought a book yesterday and I was able to open it in my vista machine. I have a second computer and I can't open my book there. I get this error: Adobe DRM Error System: 8 State: 4 Class: 65 Code: 59 Message: VE error 59 --- end --- I already d