KODO 4.2 - RACE condition issue

Hi All,
Recently we have migrated our application (DEM ap0467) to Weblogic 10.3 on 20 FEB 2010. Since then we are observing that there is a race condition occurring in the code where it is interacting with the database.
We use KODO for interacting with the database & this version of weblogic supports KODO 4.2, earlier to this we were using KODO 4.0.1. After upgrading KODO to become compatible with new version of Weblogic we have seen this acute problem in working of our application.
Whenever new trade comes in our application one process picks the data, inserts and commits it in database & publishes the message on internal queue, another MDB picks this msg from this queue & fires select query on the DB but this time it doesn't find the data from database & throws an exception giving error "... Not found in Database" but when we check the database, the data remains present there.
So our primary analysis says that the KODO is not flushing data to the database on time & it tries to keep this data in memory only & so in the next step the other process doesn't find the data in DB.
We tried using different properties of KODO to flush data to the DB as soon as it gets change such as
kodo.FlushBeforeQueries
but its not working.
So could you please give some pointers who know this issue or could help on KODO from oracle support ?

Try closing the entityManagerFactory itself before publishing the message. This will force Kodo to flush all data.
This is not the permanent solution since closing and opening the entityManagerFactory with each request is expensive But this will ensure the that its Kodo issue.

Similar Messages

  • 8.1.2 "Could not launch" message: race condition at startup

    (apologies for the cross-post; someone suggested that I post this in the Unix forum, so here it is -- I suppose it would have made sense to do this in the first place, I mustn't have been concentrating :-)
    Hi,
    I've recently upgraded our Sun Ray servers to Adobe Reader 8.1.2, and now every so often when browsing to a pdf document, Firefox says
    "Could not launch Adobe Reader 8.1.2. Please make sure it exists in your PATH [...]"
    This seems to be caused by a race condition at startup. The browser plugin runs "/bin/acroread -version", which simply echoes the version number and exits. When it's working, this happens:
    25436: write(1, " 8 . 1 . 2\n", 6) = 6
    25348/1: read(56, " 8 . 1 . 2\n", 20) = 6
    25436: _exit(0)
    25348/1: close(56) = 0
    i.e. the string is written by the script and immediately read by the browser.
    However, occasionally this happens:
    23119: write(1, " 8 . 1 . 2\n", 6) = 6
    23119: _exit(0)
    23008/1: Received signal #18, SIGCLD, in read() [caught]
    23008/1: siginfo: SIGCLD CLD_EXITED pid=23119 status=0x0000
    23008/1: read(58, 0xFFBFB5C0, 20) Err#4 EINTR
    i.e. the read() call is interrupted by the SIGCLD generated by the exiting /bin/acroread process.
    I've inserted a "sleep 5" after line 11 of the /bin/acroread script to try to alleviate this, but I haven't tested it fully.

    Hello Ian,
    Thanks for reporting this. We will try to address this issue in the next release as you have stated a valid race condition issue (though it's difficult to reproduce).
    Gaurav

  • How to prevent race conditions in a web application?

    Consider an e-commerce site, where Alice and Bob are both editing the product listings. Alice is improving descriptions, while Bob is updating prices. They start editing the Acme Wonder Widget at the same time. Bob finishes first and saves the product with
    the new price. Alice takes a bit longer to update the description, and when she finishes, she saves the product with her new description. Unfortunately, she also overwrites the price with the old price, which was not intended.
    In my experience, these issues are extremely common in web apps. Some software (e.g. wiki software) does have protection against this - usually the second save fails with "the page was updated while you were editing". But most web sites do not
    have this protection.
    It's worth noting that the controller methods are thread-safe in themselves. Usually they use database transactions, which make them safe in the sense that if Alice and Bob try to save at the precise same moment, it won't cause corruption. The race condition
    arises from Alice or Bob having stale data in their browser.
    How can we prevent such race conditions? In particular, I'd like to know:
    What techniques can be used? e.g. tracking the time of last change. What are the pros and cons of each.
    What is a helpful user experience?
    What frameworks have this protection built in?

    Hi,
    >> Consider an e-commerce site, where Alice and Bob are both editing the product listings. Alice is improving descriptions, while Bob is updating
    prices. They start editing the Acme Wonder Widget at the same time. Bob finishes first and saves the product with the new price. Alice takes a bit longer to update the description, and when she finishes, she saves the product with her new description. Unfortunately,
    she also overwrites the price with the old price, which was not intended.
    This is a classic question that you can find in any developing exam :-)
    there are several options according the behavior that fit your needs, and several points that need to be taken into consideration.
    1.  Using locking in the application side, you can make sure that two people do not open the same product for editing. this is in most cases the best option.
    * I am not talking about
    thread-safe but the implementation is almost the same. The locking can be done using singleton class and have a static boolean element. Every time a user want to edit we check this value as first action. If the value is false then we lock the and
    change it to true -> do what ever we need -> change the value to false -> unlock.
    Behavior: First person that try to edit lock the product and the second get a message that this product is unders editing. In this case you do not open connection to database and your application prevent any problem.
    2. Using "read your writes", as mentioned
    Behavior: this mean that several people can open the same product for editing, and only when they try to send it to server they get a message telling them that they have waist their
    time and someone else already change the product information. At this point they have two option: (1) overwrite what the other person did, (2) start from the beginning.
    This is the way most WIKI websites work.
    3. Using real-time web functionality like SignalR, WebSocket, or any streaming for example. In this case you can send the person that work on the edit a message like "this product have already been edit" and stop give him the extra time to
    think what you want to do. You will need to use one of the above option maybe, but since the user get the information in real time he have time to chose.
    4. Using "Change before Write" or "read before edit": The idea is to have a column that point if the row is in use. the type of this column should be same as the user unique column type. Before the user start you check the value
    of this column. If it is 0 then you change it to the user unique value (for example user_id), If the value was not 0 then you know that someone else is editing the product. In this case the locking is managed in the database. make sure that you work with transactions
    while reading the value and changing it! you can change the default from share lock to X lock as well during this action, if you really want.
    There are several other option, if those do not fits your needs
      Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

  • Array Of Clusters Not Initializing or Possible Race Conditions

    Hi all,
    I've been working on a fairly complex project for work, and I haven't worked with Labview before. Unfortunately nobody in my office really has experience with it so I'm on my own. I've mostly got the project working, and it might be a little cumbersome, but if it works that's fine.
    Essentially it's a temperature control device and I made it so it's expandable, thus the clusters and arrays everywhere.
    My question is this. I've got an array of clusters indicating the status of all the plates in the system. When I start up the VI for the first time they do not initialize. They just stay grey, but when I stop it and start it once, it will work every time. I think this is kind of strange behavior. I've heard of race conditions and while I've tried to make sure t hat's not happening, it might be without me noticing.
    I've tried putting an initialize array block in the first call while loop and that doesn't do anything, and if I remove the initializer from the shift register in the top while loop that stops them being initalized altogether.
    I guess I was hoping someone might have an idea what's causing it, or could possible give my code the once over. The main bulk of it is in the very top of the code, but there are a lot of smaller events taking care of GUI type stuff.
    I've included all source code. It might be a little much but I didn't want to start pulling it apart if I don't know what's happening.
    Thanks in advance.
    Chris.
    Solved!
    Go to Solution.
    Attachments:
    Error During Cycle Controls.zip ‏3107 KB
    Stop Cycle Controls.zip ‏2115 KB
    Stop Cycle Controls.zip ‏4975 KB

    Chris Johnson wrote:
    So just to confirm, I can have one event structure with say 10 events happening? In this case could an event happen simultaneously with another? I thought I read something about each event having it's own event structure and while loop to make sure this works out.
    Each event case must complete before it can handle the next event, but many events will complete so quickly that this is not an issue (such as your "pause chart" button).  In general you should have only one event loop.  If you expect an event to take a long time to process, use a queue to hand that task off to another dedicated-purpose loop, so that the event structure can go back to waiting.  This is one example of the producer-consumer structure often mentioned on this forum: the producer is the loop containing the event structure, and it queues (produces) items to process.  A separate loop dequeues (consumes) those items and handles them appropriately.
    As GerdW mentioned, you have race conditions all over the place.  You'll never know whether the Plate Info Cluster Array is properly updated because it's being written and read simultaneously in so many places.  I'm assuming that is also where you're seeing the issue that inspired the post, and, in fact, one of those race conditions could explain what you're seeing.
    Chris Johnson wrote:
    Also, again, to confirm what I think I already know. When the event completes it outputs whatever data you output from the structure and then you can place it in a shift register. Where does this go until the next event takes place?
    I don't understand what you're asking.  Where does what go until the next event?  If by this you mean the data in the shift register - it stays in the shift register, accessible at the corresponding terminal on the left side of the loop.

  • Race conditions with UI thread

    Hi community,
    the update to LabVIEW 2014 has caused sveral of my vis to act up - vis that I had coded with race conditions with the UI thread that I was not aware of.
    Maybe they didn't exist previously, maybe I was just ignorant.
    Here is a where I first noticed something was wrong. It has a workaround inside:
    http://forums.ni.com/t5/LabVIEW/How-to-make-sure-plots-in-xy-graph-are-present/td-p/3033109
    Thanks again Norbert for your help with that.
    Now problems are showing up in other places too and it might be the tip of an iceberg. I'm a little afraid right now. It's not just xy graphs. The latest example:
    I have a sub-vi whose frontpanel I open with an invoke node inside that sub-vi. Afterwards, in the caller I register for events of frontpanel objects of the sub-vi. This fails now - apparently the fp of the sub-vi isn't open yet although the sub-vi has finished executing (yes, I use dataflow to ensure register for event is done only after the sub-vi has finished). This has a striking resemblance to my issue in the previous thread. It seems that vis can now be "finished" executing while stuff that was supposed to happen inside the sub-vi is still executing in the UI thread.
    I had not expected this.
    Is this intended behaviour?
    Is this new to LabVIEW 2014?
    Can someone please shed some light on this behavior change (if indeed it is one)?
    Can someone please advise me on a general solution/workaround for the host of problems this is causing me?
    Best regards
    Florian

    Norbert,
    I'm currently unable to reproduce the issue in my code regardless of cpu core affinity (you gotta hate random errors).
    I have attached an example that shows a simplified version of the code that has previously produced the error.
    This example might be flawed since it hasn't produced the error yet.
    The issue would show when the button "open window" is pressed, if it did at all.
    Also there is stuff in there that I just implemented in an attempt to keep the UI thread busy.
    For the core of the issue please disregard the bottom while loop in caller.vi
    I'll keep trying.
    Best regards
    Florian
    Attachments:
    subvi event registration.llb ‏56 KB

  • [SOLVED} systemd, netcfg, interface aliases and race conditions

    Not using NetworkManager - base Arch Linux with standard netcfg
    The situation (coming from an old SysV-init guy who's pretty new to systemd):
    I have an application that has a dependency on a specific interface alias.  To be more specific:
    1) eth0 comes up as a DHCP interface (but the address is static on the DHCP server side) and assigns the base IP, which we'll call 192.168.1.2
    2) network.target is satisfied since the interface is up
       3a) netcfg POST_UP executes on the interface, assigning IP address 192.168.1.3 with label eth0:0 to eth0
       3b) The application service (with an After of network.target) starts, attempting to bind a port listener on address 192.168.1.3
    Therein lies the rub.  3a and 3b happen in parallel, creating a race condition.  If the alias happens to be assigned before the application starts, all is well.  If the application initializes before the alias, it dies an ugly death, failing to bind to a non-existent address.  It's a coin toss which one "wins".
    My solution thus far has been to add a ExecStartPre stanza to the application's service calling "/usr/bin/sleep 5", pretty much guaranteeing that the alias will be defined before the application's ExecStart.  This is so ugly and inelegant it's embarassing.
    Two questions:
    - Is there a cleaner way to approach this - perhaps some way to indicate to systemd that eth0:0 must exist prior to starting the application (along the lines of a mythical AfterInterface element ?  I'd considered creating a 0-byte file in /tmp in POST_UP and having my application service check for existence, but it seems that if it doesn't exist, systemd will just skip launching the service, not delay its launch.  I cannot create the alias as part of ExecStartPre for the application, since this interface alias is actually used by multiple applications/services.
    - Would migrating to netctl alleviate this at all (to be more specific, does netctl have a more coherent definition of interface aliasing than hand-creating them via POST_UP, and if so, are the aliases defined by netctl prior to satisfying network.target)?
    Thanks much for any insight,
    Rodney
    Last edited by rhester72 (2013-05-03 16:46:47)

    I can...but my understanding of why the AL wiki recommends assigning aliases in POST_UP is to ensure they are consistently assigned if the interface should be brought offline and back online.  I'm not sure if this is an issue in practice, however - since the same contention would exist on the simplest-possible construct (i.e. what happens to all the services that have network listeners if eth0 just goes away for a while and comes back?).
    Rodney

  • I'm usually asked in interviews what r common RAC related issues do u face

    I don't know much because generally what I face are general DB issues and at the max i see some
    rac related wait events 2 way or 3 ways grants .
    Can somebody plz give me some idea what kind of RAC related issues people face in 10g or 11g RAC
    Thanks
    Gagan

    Global Cache Wait Events
    gc current/cr request: These wait events are relevant only while a gc request for a cr or current buffer is in progress. They act as placeholders until the request completes.
    gc [current/cr] [2/3]-way: A current or cr block is requested and received after two or three network hops. The request is processed immediately: the block is not busy or congested.
    gc [current/cr] block busy: A current or cr block is requested and received, but is not sent immediately by LMS because some special condition that delayed the sending was found.
    gc [current/cr] grant 2-way: A current or cr block is requested and a grant message received. The grant is given without any significant delays. If the block is not in its local cache, a current or cr grant is followed by a disk read on the requesting instance.
    gc current grant busy: A current block is requested and a grant message received. The busy hint implies that the request is blocked because others are ahead of it or it cannot be handled immediately.Oracle RAC need Gigabit Ethernet for Interconnect(don't use cross cable), create index to reduce Global Cache Wait Events.
    Can somebody plz give me some idea what kind of RAC related issues people face in 10g or 11g RACWhat did you know?

  • WebLogic JMS client frozen during JMS connection stopping (race condition)

    Hello,
    Our application is using the WebLogic 10.3.1 JMS client generated with wlfullclient5.jar.
    We have sometimes a race condition when the WebLogic server is stopped.
    In about 10% of the cases where the server is stopped, the client application is frozen in the "stop" call (see stack trace #1 below).
    Our understanding is that each JMS API call by the application is translated by a request-response message on the TCP connection to the JMS server. The JMS library sends the request and then wait for the response. From our observations, it looks like there is no local timeout in the JMS library. This means that if the WebLogic server is being stopped just after receiving the "stop" request, it will never send the "stop" response, which means that the application will be stuck forever.
    The same problem also occurs when using JMS bridges between 2 JMS servers (see stack trace #2 below).
    How can we activate a local timeout for all JNDI/JMS calls ?
    Regards,
    metatech
    "AppThread" prio=3 tid=0x0000000100117800 nid=0x2 in Object.wait() [0xffffffff7befe000]
    java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at weblogic.messaging.dispatcher.DispatcherWrapperState.triggerPeerGoneAndWait(DispatcherWrapperState.java:607)
    - locked <0xffffffff7509aee8> (a weblogic.messaging.dispatcher.DispatcherWrapperState)
    at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSyncTran(DispatcherWrapperState.java:349)
    at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSyncNoTran(DispatcherWrapperState.java:386)
    at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSync(DispatcherWrapperState.java:252)
    at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSync(DispatcherAdapter.java:43)
    at weblogic.jms.client.JMSConnection.stop(JMSConnection.java:758)
    - locked <0xffffffff7509a640> (a weblogic.jms.client.JMSConnection)
    at weblogic.jms.client.WLConnectionImpl.stop(WLConnectionImpl.java:722)
    at AppSession.closeJMSSession(ConnectorSession.java:499)
    "[ACTIVE] ExecuteThread: '12' for queue: 'weblogic.kernel.Default (self-tuning)'" waiting for lock weblogic.jms.client.JMSXASession@1d363e4 WAITING
    java.lang.Object.wait(Native Method)
    java.lang.Object.wait(Object.java:485)
    weblogic.jms.client.JMSSession.waitForState(JMSSession.java:4778)
    weblogic.jms.client.JMSSession.stop(JMSSession.java:1310)
    weblogic.jms.client.JMSConnection.stop(JMSConnection.java:773)
    weblogic.jms.client.WLConnectionImpl.stop(WLConnectionImpl.java:722)
    weblogic.jms.adapter.JMSBaseConnection.closeInternal(JMSBaseConnection.java:570)
    weblogic.jms.adapter.JMSBaseConnection.access$000(JMSBaseConnection.java:85)
    weblogic.jms.adapter.JMSBaseConnection$2.run(JMSBaseConnection.java:552)

    Hi Tom,
    Thanks for looking at the issue.
    I tried to post the full thread dump as an attachment, but it is not allowed by the forum, so you find it hereunder.
    Regards,
    metatech
    =================
    2010-05-28 12:33:19
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (14.2-b01 mixed mode):
    "Attach Listener" daemon prio=3 tid=0x0000000100c5b800 nid=0x24 waiting on condition [0x0000000000000000]
    java.lang.Thread.State: RUNNABLE
    "ExecuteThread: '0' for queue: 'JmsAsyncQueue'" daemon prio=3 tid=0x0000000100759800 nid=0x23 in Object.wait() [0xffffffff643ff000]
    java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at java.lang.Object.wait(Object.java:485)
         at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:91)
         - locked <0xffffffff6f4ed828> (a weblogic.kernel.ServerExecuteThread)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:115)
    "Timer-0" daemon prio=3 tid=0x000000010078c800 nid=0x21 in Object.wait() [0xffffffff647ff000]
    java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         - waiting on <0xffffffff6f4ee2c0> (a java.util.TaskQueue)
         at java.lang.Object.wait(Object.java:485)
         at java.util.TimerThread.mainLoop(Timer.java:483)
         - locked <0xffffffff6f4ee2c0> (a java.util.TaskQueue)
         at java.util.TimerThread.run(Timer.java:462)
    "weblogic.timers.TimerThread" daemon prio=3 tid=0x00000001008e0000 nid=0x20 in Object.wait() [0xffffffff649ff000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at weblogic.timers.internal.TimerThread$Thread.run(TimerThread.java:267)
         - locked <0xffffffff6f4e75d0> (a weblogic.timers.internal.TimerThread)
    "ExecuteThread: '3' for queue: 'default'" daemon prio=3 tid=0x0000000100709000 nid=0x1e waiting for monitor entry [0xffffffff65afe000]
    java.lang.Thread.State: BLOCKED (on object monitor)
         at weblogic.jms.client.JMSConnection.stateChangeListener(JMSConnection.java:1413)
         - waiting to lock <0xffffffff7509a640> (a weblogic.jms.client.JMSConnection)
         at weblogic.messaging.dispatcher.DispatcherWrapperState.run(DispatcherWrapperState.java:682)
         at weblogic.messaging.dispatcher.DispatcherWrapperState.timerExpired(DispatcherWrapperState.java:617)
         at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
         at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
    "ExecuteThread: '2' for queue: 'default'" daemon prio=3 tid=0x000000010055c800 nid=0x1d in Object.wait() [0xffffffff65cff000]
    java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at java.lang.Object.wait(Object.java:485)
         at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:91)
         - locked <0xffffffff6f427a80> (a weblogic.kernel.ServerExecuteThread)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:115)
    "ExecuteThread: '1' for queue: 'default'" daemon prio=3 tid=0x000000010055c000 nid=0x1c in Object.wait() [0xffffffff65eff000]
    java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at java.lang.Object.wait(Object.java:485)
         at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:91)
         - locked <0xffffffff6f427da0> (a weblogic.kernel.ServerExecuteThread)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:115)
    "ExecuteThread: '0' for queue: 'default'" daemon prio=3 tid=0x00000001006fa800 nid=0x1b in Object.wait() [0xffffffff660ff000]
    java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at java.lang.Object.wait(Object.java:485)
         at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:91)
         - locked <0xffffffff6f4280c0> (a weblogic.kernel.ServerExecuteThread)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:115)
    "StateHolder" daemon prio=3 tid=0x0000000100584800 nid=0x1a waiting on condition [0xffffffff66aff000]
    java.lang.Thread.State: TIMED_WAITING (sleeping)
         at java.lang.Thread.sleep(Native Method)
         at StateHolder.run(StateHolder.java:80)
         at java.lang.Thread.run(Thread.java:619)
    "Thread-1" daemon prio=3 tid=0x0000000100554000 nid=0x18 waiting on condition [0xffffffff66cff000]
    java.lang.Thread.State: TIMED_WAITING (sleeping)
         at java.lang.Thread.sleep(Native Method)
         at org.apache.log4j.helpers.FileWatchdog.run(FileWatchdog.java:104)
    "Low Memory Detector" daemon prio=3 tid=0x00000001003d3800 nid=0x16 runnable [0x0000000000000000]
    java.lang.Thread.State: RUNNABLE
    "CompilerThread1" daemon prio=3 tid=0x00000001003cf000 nid=0x15 waiting on condition [0x0000000000000000]
    java.lang.Thread.State: RUNNABLE
    "CompilerThread0" daemon prio=3 tid=0x00000001003cd800 nid=0x14 waiting on condition [0x0000000000000000]
    java.lang.Thread.State: RUNNABLE
    "Signal Dispatcher" daemon prio=3 tid=0x00000001003cb800 nid=0x13 runnable [0x0000000000000000]
    java.lang.Thread.State: RUNNABLE
    "Finalizer" daemon prio=3 tid=0x00000001003a4800 nid=0x12 in Object.wait() [0xffffffff680ff000]
    java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
         - locked <0xffffffff6f4c7670> (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
         at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
    "Reference Handler" daemon prio=3 tid=0x00000001003a3000 nid=0x11 in Object.wait() [0xffffffff682ff000]
    java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at java.lang.Object.wait(Object.java:485)
         at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
         - locked <0xffffffff6f401370> (a java.lang.ref.Reference$Lock)
    "Worker" prio=3 tid=0x0000000100117800 nid=0x2 in Object.wait() [0xffffffff7befe000]
    java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at java.lang.Object.wait(Object.java:485)
         at weblogic.messaging.dispatcher.DispatcherWrapperState.triggerPeerGoneAndWait(DispatcherWrapperState.java:607)
         - locked <0xffffffff7509aee8> (a weblogic.messaging.dispatcher.DispatcherWrapperState)
         at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSyncTran(DispatcherWrapperState.java:349)
         at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSyncNoTran(DispatcherWrapperState.java:386)
         at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSync(DispatcherWrapperState.java:252)
         at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSync(DispatcherAdapter.java:43)
         at weblogic.jms.client.JMSConnection.stop(JMSConnection.java:758)
         - locked <0xffffffff7509a640> (a weblogic.jms.client.JMSConnection)
         at weblogic.jms.client.WLConnectionImpl.stop(WLConnectionImpl.java:722)
         at ConnectorSession.closeJMSSession(ConnectorSession.java:499)
         at ConnectorSession.receiveRequest(ConnectorSession.java:617)
         at ConnectorSession.processRequest(ConnectorSession.java:341)
         at Worker.mainApplication(Worker.java:127)
         at Worker.mainMethod(Worker.java:298)
         at Worker.main(Worker.java:163)
    "VM Thread" prio=3 tid=0x000000010039c800 nid=0x10 runnable
    "GC task thread#0 (ParallelGC)" prio=3 tid=0x000000010011b000 nid=0x3 runnable
    "GC task thread#1 (ParallelGC)" prio=3 tid=0x0000000100121000 nid=0x4 runnable
    "GC task thread#2 (ParallelGC)" prio=3 tid=0x0000000100122800 nid=0x5 runnable
    "GC task thread#3 (ParallelGC)" prio=3 tid=0x0000000100126000 nid=0x6 runnable
    "GC task thread#4 (ParallelGC)" prio=3 tid=0x0000000100127800 nid=0x7 runnable
    "GC task thread#5 (ParallelGC)" prio=3 tid=0x0000000100129000 nid=0x8 runnable
    "GC task thread#6 (ParallelGC)" prio=3 tid=0x000000010012b000 nid=0x9 runnable
    "GC task thread#7 (ParallelGC)" prio=3 tid=0x000000010012c800 nid=0xa runnable
    "GC task thread#8 (ParallelGC)" prio=3 tid=0x000000010012e000 nid=0xb runnable
    "GC task thread#9 (ParallelGC)" prio=3 tid=0x000000010012f800 nid=0xc runnable
    "GC task thread#10 (ParallelGC)" prio=3 tid=0x0000000100131800 nid=0xd runnable
    "GC task thread#11 (ParallelGC)" prio=3 tid=0x0000000100133000 nid=0xe runnable
    "GC task thread#12 (ParallelGC)" prio=3 tid=0x0000000100134800 nid=0xf runnable
    "VM Periodic Task Thread" prio=3 tid=0x00000001003d5800 nid=0x17 waiting on condition
    JNI global references: 818

  • Race conditions - can you actually lose the data in memory?

    I've seen posts where a race condition can actually destroy the contents of a global memory. I understand about not getting the right information if your read just beats your write, but can it actually lose the data altogether? This would mean you have to semaphore every time you write to a global if you have something polling on it to guarantee the data doesn't get lost. I've never seen this in any example programs - its hard to believe!

    I think the idea is merely that when you write to a global (or any)
    variable the previous contents are overwritten. If you intended to read the
    global before the write but the write ends up happening first then you lose.
    "mikema111" wrote in message
    news:[email protected]..
    > I've seen posts where a race condition can actually destroy the
    > contents of a global memory. I understand about not getting the right
    > information if your read just beats your write, but can it actually
    > lose the data altogether? This would mean you have to semaphore every
    > time you write to a global if you have something polling on it to
    > guarantee the data doesn't get lost. I've never seen this in any
    > example programs - its hard to be
    lieve!

  • Custom Tag in race condition with OC4J v9.0.2.0.0...

    Hello all,
    (I tried deploying my application with OC4J 9.0.3 but none of my existing
    tags worked)
    I developed a OC4J web application implementing my own tag library extension
    and found out that there was occurring a race condition to the fact that two
    users (different sessions) where accessing the same
    tag at the same time. In the offending tag implementation I only have
    instance members and not static which could also cause a
    concurrent access problem.
    I found that OC4J was reusing concurrently the same
    Tag instance when it should not do that!!!
    public class pagesIteratorTag extends BodyTagSupport {
    // only instance class members...
    public void doInitBody() throws JspException {
    System.out.println("pageSetIteratorTag::doInitBody - Tag instance value: " + this.toString() + " for user: " + this.pageContext.getSession().getAttribute("j_username"));
    public int doAfterBody() throws JspException {           
    System.out.println("pageSetIteratorTag::doAfterBody - Tag instance value: " + this.toString() + " for user: " + this.pageContext.getSession().getAttribute("j_username"));
    Note the pagesIteratorTag@2e same instance is used when it should not
    1 because the tag instance should be protected from multiple concurrent
    access even though it can be pooled and reused if it is free.
    pageSetIteratorTag::doInitBody - Tag instance value: com.kdlabs.fogal.tagext.pagesIteratorTag@2e for user: Frank
    pageSetIteratorTag::doAfterBody - Tag instance value: com.kdlabs.fogal.tagext.pagesIteratorTag@2e for user: Frank
    pageSetIteratorTag::doInitBody - Tag instance value: com.kdlabs.fogal.tagext.pagesIteratorTag@2e for user: Giovanni
    pageSetIteratorTag::doAfterBody - Tag instance value: com.kdlabs.fogal.tagext.pagesIteratorTag@2e for user: Giovanni
    pageSetIteratorTag::doInitBody - Tag instance value: com.kdlabs.fogal.tagext.pagesIteratorTag@2e for user: Giovanni
    pageSetIteratorTag::doAfterBody - Tag instance value: com.kdlabs.fogal.tagext.pagesIteratorTag@2e for user: Giovanni
    Session for user Frank throws a null pointer exception because Giovanni's session
    started accessing the variable.
    Can anyone advise please?
    Best Regards,
    Giovanni

    First of all, you said none of your tags worked in 9.0.3. What happened? Did you do any debugging of the problem?
    Comparing the "toString()" output of your tag does not guarantee they are the same instance. That is just the output of "hashcode()", not the "pointer" to the object. The hashcode is generated from the contents of the object, not its "identity".
    I suggest you track the NPE in the debugger and get more information before you assume the container is at fault (which is still an outside possibility). SDK API Javadoc
    Object class:
    The general contract of hashCode is:
    1-. Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
    So, the toString() is properly returning the suffix of the object instance
    number unique for that instance and is then being reused by OC4J even though
    it is being accessed from another session thread, that must not happen and it
    is not compliant with the JSP spec.
    The other history is that when I implemented my custom tags OC4J was JSP 1.1 compliant
    and not 1.2, so after moving to 1.2 the scripting variables can be defined in XML and
    by subclassing TagInfo class, the last option doesn't work with OC4J 9.0.3, not good...
    Thanks for your help,
    I will keep trying to figure out what the problem migth be,
    Best Regards,
    Giovanni

  • Race condition?? javax.faces.el.PropertyNotFoundException: Error testing pr

    Hi All,
    I created a SelectOneChoice using data control (via a Session Facade) on a page. It works fine. (say includePage.jspx)
    Then I try to include this page into other pages say mainPage.jspx (after change the tag from view to subview in includePage.jspx). I need to do this include because multiple pages will include this page.
    Now when I try to run mainPage.jspx, I have the following exception:
    javax.faces.el.PropertyNotFoundException: Error testing property 'inputValue' >>>in bean of type nullThe bean in this exception message is referring to something defined in the includePage.jspx page def file, but I am running mainPage.jspx - so I am wondering if this is a sort of race condition, i.e when mainPage.jspx is ruuning, no variables inside includePage.jspx page def can be accessed.
    I searched the forum but did not have much luck. Any suggestions will be greatly appreciated!!!

    Hi,
    any binding used on a subview must be included in the binding of the main page. So your mainPage.jspx must include the binding for the listbox.
    In 10.1.3 there is no option to inherit the binding container content of an included page.
    Frank

  • What is dead locks with oracle and wht is race condition wrt oracle

    what is dead locks with oracle and wht is race condition wrt oracle

    > And do you know what a race condition is all about?
    It is a term used to indicate several processes attempting to use the same resource that is not capable of servicing all these at the same time. This could be due to the resource not being thread safe or implemented as a serialised resource.
    It is often easy to look up definitions on Google. In the Google search field, type "define:race condition".
    The following [url http://www.google.co.za/search?hl=en&q=define%3Arace+condition&btnG=Google+Search&meta=]web definitions page is displayed.

  • Problems w/ race conditions when using attachmovie

    Hello,
       I'm having a strange problem w/ race conditions when using attachmovie.
    I have a class linked to a movie clip that I'm attaching to the stage.   The class is
    fired off when the movie clip is attached but also other classes are getting loaded at the same time
    while the movie clips is attached.     Even though the other classes are called after the
    movieclip is attached, they are getting loaded faster and therefor the class linked to the attached movie clip
    cannot access their functions. 
    I'm looking for a listener that will fire off an event ONLY when the attached movieclip is fully loaded but I can't
    seem to find any examples of associating a listener to a attachmovie method.
    Any ideas?
    Thanks,
    Clem C

    flash is single threaded so nothing happens simultaneously.  what do you mean by, "other classes are getting loaded at the same timewhile the movie clips is attached"

  • Forms 6 CPU racing (not race condition)

    Hello Everybody,
    I am having a strange problem that I was not able to find anything about in the other posings. Hoping somebody can point me to some helpful info or posings.
    Here is what is going on:
    I have Oracle 8i installed on an Intel P4 testing platform along with Forms 6.0.5. The machine is equiped with enough memory and power that Forms and Oracle 8i should be able to run without any trouble (I have run this setup fine on less powerful machines).
    When I then run a Forms application in the new setup the Forms application starts up normally and appears to be running perfectly.
    However when I look at the Windows Task Manager the Forms application turns out to be racing the processor at 100% of capacity. Even some little tiny forms application with only one Canvas and 2 blocks still causes the CPU to race at 100% capacity - even when I am not running a query! It just sits there and revs the CPU.
    Even stranger when I put the input focus onto any other program (NotePad for instance) the CPU cycles die back to zero again. But when I again put the focus (using ALT-TAB or something) back onto the Forms application the CPU starts revving up again.
    Note that this is NOT a "race condition" because I am still able to use the computer and even the Forms application itself. However it is NOT normal for a little tiny Forms module to be able to take up 100% of CPU cycles even when the module is not doing anything.
    Anybody have any ideas what the problem could be?
    Thanks for any help.
    Chris

    Chris,
    if it doesn't hang the computer as it indicates then maybe the task manager does not show what's really consumed by Forms. Ig Forms 6.0 is the cause then I suggest to upgrade to Forms 6i as this is tested and bug fixed with newer OS and processors.
    Frank

  • How to solve this race condition

    Hi there,
    the following code was taken from an official Java Tutorial at http://java.sun.com/docs/books/tutorial/essential/threads/synchronization.html but it's bugy 'cause it's creating race conditions I cannot handle.
    // this is the consumer
    // it tries to get the content of cubbyhole
    // but as soon as "available" becomes "false"
    // the content can change
    public synchronized int get() {
            while (available == false) {
                try {
                    wait();
                } catch (InterruptedException e) { }
            available = false; // <-- the producer can access the cubbyhole
            notifyAll(); // the producer is being notified (wake up)
            return contents;
        }Imagine the scheduler interrupts the consumer just after the "notifyAll()" method (race condition). The producer can access the cubbyhole (available = false) and store a new value in it. Due to the fact that the cubbyhole is a reference the "return contents" command in the consumer will now return the new (overwritten) value. This code definitely won't work. The only way it works is to clone (!) the current "contents" in a separate variable BEFORE awaking the producer and enabling it to make changes.
    I had serious troubles in using the wait() methods and like to know your oppinions/experiences about that.
    Thx for reading.
    90210

    I'm not going to bother looking at that tutorial, but I'd venture to guess that you are making a false assumption. Since get() is synchronized, no other thread can acquire a lock to the object being synchronized on while this method is changing the value of 'available' to false. But without seeing the context of what those other threads might be doing, it's hard to tell if you really have a valid claim or not (that it's 'buggy'). But 99.99999% of the time, its your own mistake/misinformation/invalid analysis.

Maybe you are looking for

  • How to get the month value in a date?

    I am retrieving a Date from the database using the getDate() method! However, I want the value of the month in this obtained result, which i want to compare with an integer! I dont see any other option but to use the deprecated getMonth() method on t

  • Problem in OWB map for source change capture

    The problem is as follows:- Our OWB map between two different databases, captures change in data at source and populates them in target. It is a one to one map. The map is failing to process some rows from source database though it gives no:of errors

  • Outlook mail appearing as garbled text

    Recently we have shifted from gmail to outlook and what earlier worked with gmail now is appearing as garbled text in outlook. A mail notification is triggered from TACTIC ( a web framework ). It worked well earlier. Seems to be related with text enc

  • LRM -00109:could not open parameter file Oracle 10g in Solaris 10

    Hallo! I have just installed Oracle 10g in Solaris 10.When I logged into sqlplus / as sysdba if found that I was connected to an idle instance. When I tried to startup open the db, the following error appeared Connected to an idle instance. SQL> star

  • SIGN UPLOAD DEPENDING ON PURCHASING GROUP

    i need to up load sign based on the purchasing group in to a window so i am passing the purchasing group in a table which has per group and name and getting the name of bitmap file in variable V_name in sub routine and then i am creating a constant w