List Concurrent Modification Exception

The following codes throws the java.util.ConcurrentModificationException
public static void main(String[] args) {
        List<Integer> list1 = new LinkedList<Integer>();
        ListIterator head = list1.listIterator();
        list1.add(1);
        while(head.hasNext()) {
            System.out.println(head.next());
    }But if I put list1.add(1) before
   ListIterator head = list1.listIterator();, then it runs fine.
I've googled the exception and get the idea that it is caused by 2 threads accessing the list. Where are the 2 threads?
Edited by: pinkyDeveloper on Feb 17, 2009 3:00 PM

nothing to do with threads and everything to do with changing the list after getting the iterator and then iterating with the iterator. Don't do this unless you change the list through the iterator. You might want to read the API on LinkedList which states:
The iterators returned by this class's iterator and listIterator methods are fail-fast: if the list is structurally modified at any time after the iterator is created, in any way except through the iterator's own remove or add methods, the iterator will throw a ConcurrentModificationException.
Edited by: Encephalopathic on Feb 17, 2009 3:13 PM

Similar Messages

  • [svn] 1043: Bug: LCDS-184 - Concurrent modification exception thrown during remote subscription management

    Revision: 1043
    Author: [email protected]
    Date: 2008-03-31 15:22:13 -0700 (Mon, 31 Mar 2008)
    Log Message:
    Bug: LCDS-184 - Concurrent modification exception thrown during remote subscription management
    QA: Yes
    Doc: No
    Details:
    Make the 'subscriptions' set in MessageClient/RemoteMessageClient concurrent modification safe.
    Ticket Links:
    http://bugs.adobe.com/jira/browse/LCDS-184
    Modified Paths:
    blazeds/branches/3.0.x/modules/core/src/java/flex/messaging/services/messaging/RemoteMess ageClient.java

  • [svn] 1044: Bug: LCDS-184 - Concurrent modification exception thrown during remote subscription management

    Revision: 1044
    Author: [email protected]
    Date: 2008-03-31 15:23:07 -0700 (Mon, 31 Mar 2008)
    Log Message:
    Bug: LCDS-184 - Concurrent modification exception thrown during remote subscription management
    QA: Yes
    Doc: No
    Details:
    Make the 'subscriptions' set in MessageClient/RemoteMessageClient concurrent modification safe.
    Ticket Links:
    http://bugs.adobe.com/jira/browse/LCDS-184
    Modified Paths:
    blazeds/branches/3.0.x/modules/core/src/java/flex/messaging/MessageClient.java

  • Concurrent modification exception inside fully synchronized code

    Hello,
    We have a private list
    private LinkedList<ConnectionChannel> channels = new LinkedList<ConnectionChannel>();that is accessed by multiple threads. One is traversing the items and operating on them, while another thread is adding and removing items to the list. Each such access to the list is protected with
    synchronized(channels) {
    } scopes so that no simultanious access to this list is possible.
    We do however get Concurrent Modification excpetions on this list when we do performance tests with heavy load on the sun server + heavy load on the java server itself. I cannot understand this problem in any other way that this must be a problem with the virtual machine! I know you guys probably will object to this furiously, but I am 100% sure that there is no logical error in my code.
    We're running on jre 1.5..0_03. uname -a on my solaris host gives me:
    SunOS trinity 5.8 Generic_108528-27 sun4u sparc SUNW,Sun-Fire-480R.
    Best regards,
    Helge Fredriksen

    I'm very sure about this, yes. Here's all blocks where the list is used:
            synchronized (channels) {
                logger.info("Connecting observer channel from client at " + token.getSource());
                channels.add(new ConnectionChannel(token, globalObserver));
           synchronized (channels) {
                if (logger.isDebugEnabled()) {
                    logger.debug("Sending local event to processing in " + channels.size() + " parallel channel(s)");
                for (ConnectionChannel connectionChanel : channels) {
                    connectionChanel.send(event);
            synchronized (channels) {
                for (Iterator<ConnectionChannel> iterator = channels.iterator(); iterator.hasNext();) {
                    ConnectionChannel connectionChannel = iterator.next();
                    if (connectionChannel.getToken().getId().equals(token.getId())) {
                        iterator.remove();
                        logger.info("Removing connection channel to " + token.getSource());
                        return;
            }and
            synchronized (channels) {
                for (ConnectionChannel channel : channels) {
                    channel.flush(5000);
            }

  • Concurrent modification exception while iterating through list

    Hi,
    I have a list of objects. I use for each loop in java to iterate through that list of objects and display them.
    The problem is that while iterating other thread can add or remove some objects from that list, and I get ConcurrentModificationException.
    How can I handle this problem. How can I be sure that I am iteration through the updated list.
    Thank you

    Synchonize on the list before iterating through it, and make sure that other code also synchronizes on the list before adding to it or removing from it. Using a list implementation that simply synchronizes all the methods (e.g. Vector) will not do that, you have to do it yourself.

  • Concurrent modification exception. What is causing this?

    Here is my the pasrt of code causing the exception I have put a line comment ti indicate the line where it occurs. In addition I would like to know the cause of this eception as its a first for me.
    Here is the full exception ....
    Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
            at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:3
    72)
            at java.util.AbstractList$Itr.next(AbstractList.java:343)
            at Contact.modifyExisting(Contact.java:432)
            at Phonebook1.actionPerformed(Phonebook1.java:236)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:19
    95)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
    a:2318)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
    .java:387)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242
            at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
            at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(BasicR
    ootPaneUI.java:191)
            at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
            at javax.swing.JComponent.processKeyBinding(JComponent.java:2849)
            at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
            at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:2
    16)
            at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.
    java:2926)
            at javax.swing.JComponent.processKeyBindings(JComponent.java:2918)
            at javax.swing.JComponent.processKeyEvent(JComponent.java:2812)
            at java.awt.Component.processEvent(Component.java:5815)
            at java.awt.Container.processEvent(Container.java:2058)
            at java.awt.Component.dispatchEventImpl(Component.java:4410)
            at java.awt.Container.dispatchEventImpl(Container.java:2116)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.ja
    va:1848)
            at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboard
    FocusManager.java:697)
            at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeybo
    ardFocusManager.java:962)
            at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeybo
    ardFocusManager.java:834)
            at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFoc
    usManager.java:661)
            at java.awt.Component.dispatchEventImpl(Component.java:4282)
            at java.awt.Container.dispatchEventImpl(Container.java:2116)
            at java.awt.Window.dispatchEventImpl(Window.java:2429)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
    ad.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
    java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)and the code.......
    if(modifiedWork.length()>0)
                             try
                                  modifiedWorkNum = Integer.parseInt(modifiedWork);
                             } //////// THIS IS LINE 372
                             catch(Exception e)
                                  JOptionPane.showMessageDialog(null,"You may only enter numbers for a valid phone number to try again press the modify nutton again.","Error",JOptionPane.ERROR_MESSAGE);
                                  validModify = false;
                                  return;
                        }Thanks in advance...

    Would you mind looking at my modifyExisting method I apologise as it is long. I have icluded a line comment on line 432.
    public void modifyExisting()
         {// Start of modifyExisting()
              int count = 0;
              int count1 = 0;
              int count2 = 0;
              int modifiedCellNum, modifiedWorkNum, modifiedHomeNum = 0;
              boolean validModify = true;
              boolean found = false;
              String currentHome = "";
              String currentWork = "";
              String currentCell = "";
              if(phoneList.size() > 0)
                   String nameOfContactToEdit = JOptionPane.showInputDialog(null,"Please enter the name of the contact you wish to edit details for or press cancel to exit");
                   if(nameOfContactToEdit == null)
                        finish();
                   if(nameOfContactToEdit.trim().length()<= 0)
                        JOptionPane.showMessageDialog(null,"You have entered an invalid name. Please try again.","Error",JOptionPane.ERROR_MESSAGE);
                        modifyExisting();
                        validModify = false;
                        return;
                   String surnameOfContactToEdit = JOptionPane.showInputDialog(null,"Please enter the the surname for "+nameOfContactToEdit+" if one exists or press cancel to exit.");
                   if(surnameOfContactToEdit == null)
                        finish();
                   for(Person m: phoneList)
                        m = phoneList.get(count);
                        if((m.name).equals(nameOfContactToEdit.trim().toUpperCase())&&(m.surname).equals(surnameOfContactToEdit.trim().toUpperCase()))
                             currentHome = m.home;
                             currentWork = m.work;
                             currentCell = m.cell;
                             found = true;
                        count ++;
                   if(found == true)
                        String modifiedName = JOptionPane.showInputDialog("Please enter the new name for contact or press cancel to keep it as "+nameOfContactToEdit+".");
                        if(modifiedName == null)
                             modifiedName = nameOfContactToEdit;
                        if(modifiedName.trim().length()<= 0)
                             JOptionPane.showMessageDialog(null,"You have entered an invalid name. Please press the modify button to try again.","Error",JOptionPane.ERROR_MESSAGE);
                             return;
                        if(modifiedName.trim().length()>10)
                             JOptionPane.showMessageDialog(null,"You may not enter a new name longer than 10 characters long. Please try again.","Error",JOptionPane.ERROR_MESSAGE);
                             validModify = false;
                             modifyExisting();
                             return;
                        String modifiedSurname = JOptionPane.showInputDialog("Please enter the new surname for contact or press cancel to keep it as "+surnameOfContactToEdit+".");
                        if(modifiedSurname == null)
                             modifiedSurname = surnameOfContactToEdit;
                        if(modifiedSurname.trim().length()>10)
                             JOptionPane.showMessageDialog(null,"You may not enter a surname longer than 10 characters long. Please try again.","Error",JOptionPane.ERROR_MESSAGE);
                             validModify = false;
                             modifyExisting();
                             return;
                        String modifiedHome = JOptionPane.showInputDialog("Please enter a new home number for "+modifiedName+" or press cancel to keep it as is.");
                        if(modifiedHome == null)
                             modifiedHome = currentHome;
                        if(modifiedHome.length()>0)
                             try
                                  modifiedHomeNum = Integer.parseInt(modifiedHome);
                             catch(Exception e)
                                  JOptionPane.showMessageDialog(null,"You may only enter numbers for a valid phone number to try again press the modify nutton again.","Error",JOptionPane.ERROR_MESSAGE);
                                  validModify = false;
                                  return;
                        if(modifiedHome.length() > 10)
                             JOptionPane.showMessageDialog(null,"You may not enter a number longer than 10 characters long. Please press the modify button to try again.","Error",JOptionPane.ERROR_MESSAGE);
                             validModify = false;
                             return;
                        String modifiedWork = JOptionPane.showInputDialog("Please enter a new home number for "+modifiedName+" or press cancel to keep it as is.");
                        if(modifiedHome == null)
                             modifiedWork = currentWork;
                        if(modifiedWork.length()>0)
                             try
                                  modifiedWorkNum = Integer.parseInt(modifiedWork);
                             catch(Exception e)
                                  JOptionPane.showMessageDialog(null,"You may only enter numbers for a valid phone number to try again press the modify nutton again.","Error",JOptionPane.ERROR_MESSAGE);
                                  validModify = false;
                                  return;
                        if(modifiedWork.length() > 10)
                             JOptionPane.showMessageDialog(null,"You may not enter a number longer than 10 characters long. Please press the modify button to try again.","Error",JOptionPane.ERROR_MESSAGE);
                             validModify = false;
                             return;
                        String modifiedCell = JOptionPane.showInputDialog("Please enter a new home number for "+modifiedName+" or press cancel to keep it as is.");
                        if(modifiedCell == null)
                             modifiedCell = currentCell;
                        if(modifiedCell.length()>0)
                             try
                                  modifiedCellNum = Integer.parseInt(modifiedCell);
                             catch(Exception e)
                                  JOptionPane.showMessageDialog(null,"You may only enter numbers for a valid phone number to try again press the modify nutton again.","Error",JOptionPane.ERROR_MESSAGE);
                                  validModify = false;
                                  return;
                        if(modifiedCell.length() > 10)
                             JOptionPane.showMessageDialog(null,"You may not enter a number longer than 10 characters long. Please press the modify button to try again.","Error",JOptionPane.ERROR_MESSAGE);
                             validModify = false;
                             return;
                        if((modifiedHome.length() <= 0) && (modifiedWork.length() <= 0) && (modifiedCell.length() <= 0))
                             JOptionPane.showMessageDialog(null,"The contact must have at least one number to be included in the phonebook. Please press modify button to try again.","Error",JOptionPane.ERROR_MESSAGE);
                             validModify = false;
                             return;
                        for(Person z: phoneList)
                             z = phoneList.get(count1);
                             if((z.name).equals(modifiedName.trim().toUpperCase()) && (z.surname).equals(modifiedSurname.trim().toUpperCase()))
                                  JOptionPane.showMessageDialog(null,"You may not enter duplicate contacts. Please try again.","Error",JOptionPane.ERROR_MESSAGE);
                                  validModify = false;
                                  modifyExisting();
                                  return;
                             count1 ++;
                        if(validModify == true)
                             for(Person contactToMod: phoneList)/////////////////////////////////////////////////////// line 432
                                  contactToMod = phoneList.get(count2);
                                  if((contactToMod.name.equals(nameOfContactToEdit.trim().toUpperCase())) && (contactToMod.surname.equals(surnameOfContactToEdit.trim().toUpperCase())))
                                       try
                                            contactToMod.setName(modifiedName.trim().toUpperCase());
                                            contactToMod.setSurname(modifiedSurname.trim().toUpperCase());
                                            contactToMod.setHome(modifiedHome);
                                            contactToMod.setWork(modifiedWork);
                                            contactToMod.setCell(modifiedCell);
                                            phoneList.add(contactToMod);
                                            JOptionPane.showMessageDialog(null,"Updated contact succesfully.","Information",JOptionPane.INFORMATION_MESSAGE);
                                       catch(Exception e)
                                            JOptionPane.showMessageDialog(null,"The contact was not updated. If probelm persists please contact system administrator.","Error",JOptionPane.ERROR_MESSAGE);
                                  count2 ++;
                   else
                        JOptionPane.showMessageDialog(null,"No contact with that name and surname exists. Please press the modify button to try again.","Error",JOptionPane.ERROR_MESSAGE);
              else
                   JOptionPane.showMessageDialog(null,"The phone list is empty and there are no contacts to modify.","Information Message",JOptionPane.INFORMATION_MESSAGE);
         }// End of modifyExisting()Edited by: Yucca on May 6, 2008 8:12 PM

  • Concurrent Modification Exception

    im running 2 "for" loops on a TreeMap's keySet. But everytime I remove a mapping from the inner loop using iterators I get the CMException. Is there a way to remove a mapping in the inner loop without getting the Exception?

    Try Using two references to the same iterator. At the moment, it sounds like you are getting an iterator twice, once for each loop.

  • Implementing an event list, concurrent modification

    Hello,
    I've made a list into which I append events, and process them according to their ordering.
    The problem is that an event processing can cause another event to be appended to this same list. So I get ConcurrentModificationExceptions by the iterator of the list.
    Can somehow avoid the need to copy the event list before iterating over it??
    Any help is very welcomed
    Dimitris

    Can you just set a flag that blocks other events while the list is processing? i.e. on first insert... block events until insert and processing is done, then set it true so future events can be added?
    Rob

  • Concurrent Modifications

    Hello,
    Just a question about a piece of code.
    I have an EJB3 application with a simple Job object containing Configuration objects in an ArrayList.
    The job is managed by a stateful session bean used to add and remove configurations. Cascading for the configurations inside the job is set to CascadeType.ALL.
    Adding configurations works fine, but removing them is a standard way results in ConcurrentModificationExceptions.
    I solved this exception by using thread synchronization inside the removeConfiguration method.
    The workaround code is
    public void removeConfiguration(String configName)
    throws InvalidParameterException, EntityDoesNotExistException,
            OperationNotAllowedException, StorageException {
            if(job == null){
                throw new OperationNotAllowedException("No job was created or selected.");
            //Since removing elements from the list on configurations resulted
            //in a concurrent modification exception at runtime, we had to create
            //a deep clone of the array of configurations. After creating the deep
            //clone, the element to remove will be removed from the deep copy.
            //Both operations require non modification guarantee to the original
            //configuration list.
            //After updating the deep copy, the new list of configurations will
            //be stored in the job. During this operation no modification guarantee
            //is required for the deep copy.
            List<Configuration> configurations = new ArrayList<Configuration>();
            //Prevent modifications to the original list of configurations.
            synchronized(job.getConfigurations()){
                //Create the deep clone while locking the original configurations.
                for(Configuration config : job.getConfigurations()){
                    configurations.add((Configuration)config.clone());
                //Remove the object to be removed from the deep copy while locking
                //the original configurations.
                for(Configuration config : job.getConfigurations()){
                    if(config.getDescription().equals(configName)){
                        configurations.remove(config);
            //Lock the deep copy and write it to the created/selected job.
            //Prevent modifications to the deep copy.
            synchronized(configurations){
                job.setConfigurations(configurations);
    }The code above works as expected and does not cause any exceptions.
    The simplified code causing exceptions to be thrown:
    public void removeConfiguration(String configName)
    throws InvalidParameterException, EntityDoesNotExistException,
              OperationNotAllowedException, StorageException {
            if(job == null){
                throw new OperationNotAllowedException("No job was created or selected.");
            for(Configuration config : job.getConfigurations()){
                    if(config.getDescription().equals(configName)){
                        job.getConfigurations().remove(config);
    }Allthough the first snippet works fine, it seems a bit strange to me. Isn't it recommended not to use synchronization inside business method and leave this up to the container?
    Or is the solution just fine and not a problem at all. Code should be neat and not prone to errors or unexpected behaviour. This is my concern for the code above.
    Better solutions are always welcome and will be Duke rewarded off course!
    Thanks for your opinion. Regards,
    Kurt

    Hi,
    I replaced the synchronized code with the one below and everything works as expected.
    Thanks to both of you for the fast response and for your help.
    The new snippet looks a lot more solid to me.
    public void removeConfiguration(String configName)
    throws InvalidParameterException, OperationNotAllowedException {
            ParameterValidation.stringNotNullNotEmpty(configName, "removeConfiguration", "config name", LOG);
            if(job == null){
                throw new OperationNotAllowedException("No job was created or selected.");
            ListIterator<Configuration> lstConfiguration = job.getConfigurations().listIterator();
            while(lstConfiguration.hasNext()){
                Configuration config = lstConfiguration.next();
                if(config.getDescription().equals(configName)){
                    lstConfiguration.remove();
    }Regards,
    Kurt

  • Concurrent Modification of HashMap

    I have a data structure like below
    HashMap <String, HashMap<String, Object>>
    Basically its a hashmap within a hash map. Its a global data structure.
    I have a timerTask which at every interval iterates the inner hashMap and Modifies an attribute in the Object (Say Decrements an Integer attribute in the Object)
    This will be continuing.
    While the iteration is in progress inside the TimerTask, if i try to Modify the HashMap from outside via some other method call, I receive a concurrent Modification Exception.
    My Question is, How to over come this Problem of managing both the things concurrently?

    wizsen wrote:
    HashMap <String, HashMap<String, Object>>
    Basically its a hashmap within a hash map.That's a bad idea. You almost certainly will want to encapsulate it in one way or another. You probably want a custom class to hold that structure.
    Its a global data structure.What does that mean?
    My Question is, How to over come this Problem of managing both the things concurrently?Avoid accessing the data structure from two places at the same time. Possibly using synchronization.

  • Concurrent modification jdo exception

    Hi,
    When multiple ejb instances/threads are accessing the same persistence
    object I get this exception:
    javax.jdo.JDOUserException: An instance was concurrently modified in another
    transaction (optimistic lock #: 238).
    FailedObject:dk.pine.mediamanager.ejb.model.Application-58
    at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.flush(PersistenceManager
    Impl.java:577)
    at
    com.solarmetric.kodo.ee.EEPersistenceManager.beforeCompletion(EEPersistenceM
    anager.java:192)
    at org.jboss.tm.TxCapsule.doBeforeCompletion(TxCapsule.java:1394)
    at org.jboss.tm.TxCapsule.commit(TxCapsule.java:364)
    (full stack trace included as attachment)
    The only field accessed is a collection - objects are added to the
    collection from several bean instances.
    Is kodo not supposed to handle this?
    The optimistic property is set to default (true). I've tried setting it to
    false, but then the app server hangs or dead locks occur in the database.
    System configuration:
    jdk 1.4
    kodo 2.4.2
    jboss 3.0.4
    sql server 2000
    windows 2000
    Thanks
    Jesper
    begin 666 concurrent-kodo-exception.txt
    M,C P,RTP,RTS,2 Q-3HP-CHR."PU,C @5%)!0T4@6V]R9RYJ8F]S<RYT;2Y4
    M>$-A<'-U;&5=(&9A:6QE9"!B969O<F4@8V]M<&QE=&EO;@T*:F%V87@N:F1O
    M+DI$3U5S97)%>&-E<'1I;VXZ($5R<F]R<R!W97)E(&1E=&5C=&5D('=H96X@
    M9FQU<VAI;F<@=&\@=&AE(&1A=&$@<W1O<F4N("!)9B!U<VEN9R!O<'1I;6ES
    M=&EC('1R86YS86-T:6]N<RP@=&AI<R!C;W5L9"!I;F1I8V%T92!T:&%T(&QO
    M8VL@=FEO;&%T:6]N<R!W97)E(&1E=&5C=&5D+B @5&AE(")G971.97-T961%
    M>&-E<'1I;VYS(B!M971H;V0@;V8@=&AI<R!%>&-E<'1I;VX@=VEL;"!R971U
    M<FX@=&AE('-P96-I9FEC(&5R<F]R<RX-"DYE<W1E9%1H<F]W86)L97,Z#0IJ
    M879A>"YJ9&\N2D1/57-E<D5X8V5P=&EO;CH@06X@:6YS=&%N8V4@=V%S(&-O
    M;F-U<G)E;G1L>2!M;V1I9FEE9"!I;B!A;F]T:&5R('1R86YS86-T:6]N("AO
    M<'1I;6ES=&EC(&QO8VL@(SH@,C,X*2X-"D9A:6QE9$]B:F5C=#ID:RYP:6YE
    M+FUE9&EA;6%N86=E<BYE:F(N;6]D96PN07!P;&EC871I;VXM-3@-"B @("!A
    M="!C;VTN<V]L87)M971R:6,N:V]D;RYR=6YT:6UE+E!E<G-I<W1E;F-E36%N
    M86=E<DEM<&PN9FQU<V@H4&5R<VES=&5N8V5-86YA9V5R26UP;"YJ879A.C4W
    M-RD-"B @("!A="!C;VTN<V]L87)M971R:6,N:V]D;RYE92Y%15!E<G-I<W1E
    M;F-E36%N86=E<BYB969O<F5#;VUP;&5T:6]N*$5%4&5R<VES=&5N8V5-86YA
    M9V5R+FIA=F$Z,3DR*0T*(" @(&%T(&]R9RYJ8F]S<RYT;2Y4>$-A<'-U;&4N
    M9&]"969O<F5#;VUP;&5T:6]N*%1X0V%P<W5L92YJ879A.C$S.30I#0H@(" @
    M870@;W)G+FIB;W-S+G1M+E1X0V%P<W5L92YC;VUM:70H5'A#87!S=6QE+FIA
    M=F$Z,S8T*0T*(" @(&%T(&]R9RYJ8F]S<RYT;2Y4<F%N<V%C=&EO;DEM<&PN
    M8V]M;6ET*%1R86YS86-T:6]N26UP;"YJ879A.C<S*0T*(" @(&%T(&]R9RYJ
    M8F]S<RYE:F(N<&QU9VEN<RY4>$EN=&5R8V5P=&]R0TU4+G)U;E=I=&A4<F%N
    M<V%C=&EO;G,H5'A);G1E<F-E<'1O<D--5"YJ879A.C(P,2D-"B @("!A="!O
    M<F<N:F)O<W,N96IB+G!L=6=I;G,N5'A);G1E<F-E<'1O<D--5"YI;G9O:V4H
    M5'A);G1E<F-E<'1O<D--5"YJ879A.C8P*0T*(" @(&%T(&]R9RYJ8F]S<RYE
    M:F(N<&QU9VEN<RY396-U<FET>4EN=&5R8V5P=&]R+FEN=F]K92A396-U<FET
    M>4EN=&5R8V5P=&]R+FIA=F$Z,3,P*0T*(" @(&%T(&]R9RYJ8F]S<RYE:F(N
    M<&QU9VEN<RY,;V=);G1E<F-E<'1O<BYI;G9O:V4H3&]G26YT97)C97!T;W(N
    M:F%V83HR,#0I#0H@(" @870@;W)G+FIB;W-S+F5J8BY3=&%T96QE<W-397-S
    M:6]N0V]N=&%I;F5R+FEN=F]K92A3=&%T96QE<W-397-S:6]N0V]N=&%I;F5R
    M+FIA=F$Z,S$S*0T*(" @(&%T(&]R9RYJ8F]S<RYE:F(N0V]N=&%I;F5R+FEN
    M=F]K92A#;VYT86EN97(N:F%V83HW,3(I#0H@(" @870@;W)G+FIB;W-S+FUX
    M+G-E<G9E<BY-0F5A;E-E<G9E<DEM<&PN:6YV;VME*$U"96%N4V5R=F5R26UP
    M;"YJ879A.C4Q-RD-"B @("!A="!O<F<N:F)O<W,N:6YV;V-A=&EO;BYL;V-A
    M;"Y,;V-A;$EN=F]K97(N:6YV;VME*$QO8V%L26YV;VME<BYJ879A.CDX*0T*
    M(" @(&%T(&]R9RYJ8F]S<RYI;G9O8V%T:6]N+DEN=F]K97));G1E<F-E<'1O
    M<BYI;G9O:V4H26YV;VME<DEN=&5R8V5P=&]R+FIA=F$Z,3 R*0T*(" @(&%T
    M(&]R9RYJ8F]S<RYP<F]X>2Y4<F%N<V%C=&EO;DEN=&5R8V5P=&]R+FEN=F]K
    M92A4<F%N<V%C=&EO;DEN=&5R8V5P=&]R+FIA=F$Z-S<I#0H@(" @870@;W)G
    M+FIB;W-S+G!R;WAY+E-E8W5R:71Y26YT97)C97!T;W(N:6YV;VME*%-E8W5R
    M:71Y26YT97)C97!T;W(N:F%V83HX,"D-"B @("!A="!O<F<N:F)O<W,N<')O
    M>'DN96IB+E-T871E;&5S<U-E<W-I;VY);G1E<F-E<'1O<BYI;G9O:V4H4W1A
    M=&5L97-S4V5S<VEO;DEN=&5R8V5P=&]R+FIA=F$Z,3$Q*0T*(" @(&%T(&]R
    M9RYJ8F]S<RYP<F]X>2Y#;&EE;G1#;VYT86EN97(N:6YV;VME*$-L:65N=$-O
    M;G1A:6YE<BYJ879A.C<V*0T*(" @(&%T("10<F]X>34R+F-R96%T951E;7!L
    M871E*%5N:VYO=VX@4V]U<F-E*0T*(" @(&%T(&1K+G!I;F4N;65D:6%C<F5A
    M=&]R+G=E8BY496UP;&%T955P;&]A9$%C=&EO;BYE>&5C=71E*%1E;7!L871E
    M57!L;V%D06-T:6]N+FIA=F$Z.3 I#0H@(" @870@;W)G+F%P86-H92YS=')U
    M=',N86-T:6]N+E)E<75E<W10<F]C97-S;W(N<')O8V5S<T%C=&EO;E!E<F9O
    M<FTH4F5Q=65S=%!R;V-E<W-O<BYJ879A.C0S-RD-"B @("!A="!O<F<N87!A
    M8VAE+G-T<G5T<RYA8W1I;VXN4F5Q=65S=%!R;V-E<W-O<BYP<F]C97-S*%)E
    M<75E<W10<F]C97-S;W(N:F%V83HR-C0I#0H@(" @870@;W)G+F%P86-H92YS
    M=')U=',N86-T:6]N+D%C=&EO;E-E<G9L970N<')O8V5S<RA!8W1I;VY397)V
    M;&5T+FIA=F$Z,3$P.2D-"B @("!A="!O<F<N87!A8VAE+G-T<G5T<RYA8W1I
    M;VXN06-T:6]N4V5R=FQE="YD;U!O<W0H06-T:6]N4V5R=FQE="YJ879A.C0W
    M,"D-"B @("!A="!J879A>"YS97)V;&5T+FAT=' N2'1T<%-E<G9L970N<V5R
    M=FEC92A(='1P4V5R=FQE="YJ879A.C<V,"D-"B @("!A="!J879A>"YS97)V
    M;&5T+FAT=' N2'1T<%-E<G9L970N<V5R=FEC92A(='1P4V5R=FQE="YJ879A
    M.C@U,RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N07!P;&EC
    M871I;VY&:6QT97)#:&%I;BYI;G1E<FYA;$1O1FEL=&5R*$%P<&QI8V%T:6]N
    M1FEL=&5R0VAA:6XN:F%V83HR-#<I#0H@(" @870@;W)G+F%P86-H92YC871A
    M;&EN82YC;W)E+D%P<&QI8V%T:6]N1FEL=&5R0VAA:6XN9&]&:6QT97(H07!P
    M;&EC871I;VY&:6QT97)#:&%I;BYJ879A.C$Y,RD-"B @("!A="!D:RYP:6YE
    M+F-O<F4N=71I;"YW96(N5V5B1FEL=&5R+F1O1FEL=&5R*%=E8D9I;'1E<BYJ
    M879A.C4V*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y!<'!L
    M:6-A=&EO;D9I;'1E<D-H86EN+FEN=&5R;F%L1&]&:6QT97(H07!P;&EC871I
    M;VY&:6QT97)#:&%I;BYJ879A.C(Q,RD-"B @("!A="!O<F<N87!A8VAE+F-A
    M=&%L:6YA+F-O<F4N07!P;&EC871I;VY&:6QT97)#:&%I;BYD;T9I;'1E<BA!
    M<'!L:6-A=&EO;D9I;'1E<D-H86EN+FIA=F$Z,3DS*0T*(" @(&%T(&1K+G!I
    M;F4N8V]R92YU=&EL+G=E8BY3971#:&%R86-T97)%;F-O9&EN9T9I;'1E<BYD
    M;T9I;'1E<BA3971#:&%R86-T97)%;F-O9&EN9T9I;'1E<BYJ879A.C$Q,2D-
    M"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N07!P;&EC871I;VY&
    M:6QT97)#:&%I;BYI;G1E<FYA;$1O1FEL=&5R*$%P<&QI8V%T:6]N1FEL=&5R
    M0VAA:6XN:F%V83HR,3,I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC
    M;W)E+D%P<&QI8V%T:6]N1FEL=&5R0VAA:6XN9&]&:6QT97(H07!P;&EC871I
    M;VY&:6QT97)#:&%I;BYJ879A.C$Y,RD-"B @("!A="!O<F<N87!A8VAE+F-A
    M=&%L:6YA+F-O<F4N4W1A;F1A<F17<F%P<&5R5F%L=F4N:6YV;VME*%-T86YD
    M87)D5W)A<'!E<E9A;'9E+FIA=F$Z,C8P*0T*(" @(&%T(&]R9RYA<&%C:&4N
    M8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP96QI
    M;F5686QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA
    M=F$Z-C0S*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N
    M9&%R9%!I<&5L:6YE+FEN=F]K92A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-#@P
    M*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y#;VYT86EN97)"
    M87-E+FEN=F]K92A#;VYT86EN97)"87-E+FIA=F$Z.3DU*0T*(" @(&%T(&]R
    M9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9$-O;G1E>'1686QV92YI
    M;G9O:V4H4W1A;F1A<F1#;VYT97AT5F%L=F4N:F%V83HQ.3$I#0H@(" @870@
    M;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD87)D4&EP96QI;F4D4W1A
    M;F1A<F10:7!E;&EN959A;'9E0V]N=&5X="YI;G9O:V5.97AT*%-T86YD87)D
    M4&EP96QI;F4N:F%V83HV-#,I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN
    M82YA=71H96YT:6-A=&]R+D%U=&AE;G1I8V%T;W)"87-E+FEN=F]K92A!=71H
    M96YT:6-A=&]R0F%S92YJ879A.C4R-RD-"B @("!A="!O<F<N87!A8VAE+F-A
    M=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN9213=&%N9&%R9%!I<&5L:6YE
    M5F%L=F5#;VYT97AT+FEN=F]K94YE>'0H4W1A;F1A<F10:7!E;&EN92YJ879A
    M.C8T,2D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+G9A;'9E<RY#97)T
    M:69I8V%T97-686QV92YI;G9O:V4H0V5R=&EF:6-A=&5S5F%L=F4N:F%V83HR
    M-#8I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD87)D
    M4&EP96QI;F4D4W1A;F1A<F10:7!E;&EN959A;'9E0V]N=&5X="YI;G9O:V5.
    M97AT*%-T86YD87)D4&EP96QI;F4N:F%V83HV-#$I#0H@(" @870@;W)G+F%P
    M86-H92YC871A;&EN82YC;W)E+E-T86YD87)D4&EP96QI;F4N:6YV;VME*%-T
    M86YD87)D4&EP96QI;F4N:F%V83HT.# I#0H@(" @870@;W)G+F%P86-H92YC
    M871A;&EN82YC;W)E+D-O;G1A:6YE<D)A<V4N:6YV;VME*$-O;G1A:6YE<D)A
    M<V4N:F%V83HY.34I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E
    M+E-T86YD87)D0V]N=&5X="YI;G9O:V4H4W1A;F1A<F1#;VYT97AT+FIA=F$Z
    M,C,Y-BD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A
    M<F1(;W-T5F%L=F4N:6YV;VME*%-T86YD87)D2&]S=%9A;'9E+FIA=F$Z,3@P
    M*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I
    M<&5L:6YE)%-T86YD87)D4&EP96QI;F5686QV94-O;G1E>'0N:6YV;VME3F5X
    M="A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-C0S*0T*(" @(&%T(&]R9RYA<&%C
    M:&4N8V%T86QI;F$N=F%L=F5S+D5R<F]R1&ES<&%T8VAE<E9A;'9E+FEN=F]K
    M92A%<G)O<D1I<W!A=&-H97)686QV92YJ879A.C$W,"D-"B @("!A="!O<F<N
    M87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN9213=&%N9&%R
    M9%!I<&5L:6YE5F%L=F5#;VYT97AT+FEN=F]K94YE>'0H4W1A;F1A<F10:7!E
    M;&EN92YJ879A.C8T,2D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+G9A
    M;'9E<RY%<G)O<E)E<&]R=%9A;'9E+FEN=F]K92A%<G)O<E)E<&]R=%9A;'9E
    M+FIA=F$Z,3<R*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3
    M=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP96QI;F5686QV94-O;G1E>'0N
    M:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-C0Q*0T*(" @(&%T
    M(&]R9RYA<&%C:&4N8V%T86QI;F$N=F%L=F5S+D%C8V5S<TQO9U9A;'9E+FEN
    M=F]K92A!8V-E<W-,;V=686QV92YJ879A.C0V.2D-"B @("!A="!O<F<N87!A
    M8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN9213=&%N9&%R9%!I
    M<&5L:6YE5F%L=F5#;VYT97AT+FEN=F]K94YE>'0H4W1A;F1A<F10:7!E;&EN
    M92YJ879A.C8T,2D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N
    M4W1A;F1A<F10:7!E;&EN92YI;G9O:V4H4W1A;F1A<F10:7!E;&EN92YJ879A
    M.C0X,"D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N0V]N=&%I
    M;F5R0F%S92YI;G9O:V4H0V]N=&%I;F5R0F%S92YJ879A.CDY-2D-"B @("!A
    M="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F1%;F=I;F5686QV
    M92YI;G9O:V4H4W1A;F1A<F1%;F=I;F5686QV92YJ879A.C$W-"D-"B @("!A
    M="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN9213
    M=&%N9&%R9%!I<&5L:6YE5F%L=F5#;VYT97AT+FEN=F]K94YE>'0H4W1A;F1A
    M<F10:7!E;&EN92YJ879A.C8T,RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L
    M:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN92YI;G9O:V4H4W1A;F1A<F10:7!E
    M;&EN92YJ879A.C0X,"D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O
    M<F4N0V]N=&%I;F5R0F%S92YI;G9O:V4H0V]N=&%I;F5R0F%S92YJ879A.CDY
    M-2D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O;FYE8W1O<BYH='1P
    M+DAT='!0<F]C97-S;W(N<')O8V5S<RA(='1P4')O8V5S<V]R+FIA=F$Z,3 T
    M,"D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O;FYE8W1O<BYH='1P
    M+DAT='!0<F]C97-S;W(N<G5N*$AT='!0<F]C97-S;W(N:F%V83HQ,34Q*0T*
    M(" @(&%T(&IA=F$N;&%N9RY4:')E860N<G5N*%1H<F5A9"YJ879A.C4S-BD-
    M"DYE<W1E9%1H<F]W86)L97-3=&%C:U1R86-E.@T*:F%V87@N:F1O+DI$3U5S
    M97)%>&-E<'1I;VXZ($%N(&EN<W1A;F-E('=A<R!C;VYC=7)R96YT;'D@;6]D
    M:69I960@:6X@86YO=&AE<B!T<F%N<V%C=&EO;B H;W!T:6UI<W1I8R!L;V-K
    M(",Z(#(S."DN#0I&86EL961/8FIE8W0Z9&LN<&EN92YM961I86UA;F%G97(N
    M96IB+FUO9&5L+D%P<&QI8V%T:6]N+34X#0H@(" @870@8V]M+G-O;&%R;65T
    M<FEC+FMO9&\N:6UP;"YJ9&)C+F]R;6%P<&EN9RY#;&%S<TUA<'!I;F<D,2YA
    M9G1E<E5P9&%T92A#;&%S<TUA<'!I;F<N:F%V83HV,3$I#0H@(" @870@8V]M
    M+G-O;&%R;65T<FEC+FMO9&\N:6UP;"YJ9&)C+E-13$5X96-U=&EO;DUA;F%G
    M97));7!L+F5X96-U=&5);G1E<FYA;"A344Q%>&5C=71I;VY-86YA9V5R26UP
    M;"YJ879A.C0U-2D-"B @("!A="!C;VTN<V]L87)M971R:6,N:V]D;RYI;7!L
    M+FID8F,N4U%,17AE8W5T:6]N36%N86=E<DEM<&PN9FQU<V@H4U%,17AE8W5T
    M:6]N36%N86=E<DEM<&PN:F%V83HR-S(I#0H@(" @870@8V]M+G-O;&%R;65T
    M<FEC+FMO9&\N:6UP;"YJ9&)C+G)U;G1I;64N2D1"0U-T;W)E36%N86=E<BYF
    M;'5S:"A*1$)#4W1O<F5-86YA9V5R+FIA=F$Z-#$Q*0T*(" @(&%T(&-O;2YS
    M;VQA<FUE=')I8RYK;V1O+G)U;G1I;64N4&5R<VES=&5N8V5-86YA9V5R26UP
    M;"YF;'5S:"A097)S:7-T96YC94UA;F%G97));7!L+FIA=F$Z-3<U*0T*(" @
    M(&%T(&-O;2YS;VQA<FUE=')I8RYK;V1O+F5E+D5%4&5R<VES=&5N8V5-86YA
    M9V5R+F)E9F]R94-O;7!L971I;VXH145097)S:7-T96YC94UA;F%G97(N:F%V
    M83HQ.3(I#0H@(" @870@;W)G+FIB;W-S+G1M+E1X0V%P<W5L92YD;T)E9F]R
    M94-O;7!L971I;VXH5'A#87!S=6QE+FIA=F$Z,3,Y-"D-"B @("!A="!O<F<N
    M:F)O<W,N=&TN5'A#87!S=6QE+F-O;6UI="A4>$-A<'-U;&4N:F%V83HS-C0I
    M#0H@(" @870@;W)G+FIB;W-S+G1M+E1R86YS86-T:6]N26UP;"YC;VUM:70H
    M5')A;G-A8W1I;VY);7!L+FIA=F$Z-S,I#0H@(" @870@;W)G+FIB;W-S+F5J
    M8BYP;'5G:6YS+E1X26YT97)C97!T;W)#350N<G5N5VET:%1R86YS86-T:6]N
    M<RA4>$EN=&5R8V5P=&]R0TU4+FIA=F$Z,C Q*0T*(" @(&%T(&]R9RYJ8F]S
    M<RYE:F(N<&QU9VEN<RY4>$EN=&5R8V5P=&]R0TU4+FEN=F]K92A4>$EN=&5R
    M8V5P=&]R0TU4+FIA=F$Z-C I#0H@(" @870@;W)G+FIB;W-S+F5J8BYP;'5G
    M:6YS+E-E8W5R:71Y26YT97)C97!T;W(N:6YV;VME*%-E8W5R:71Y26YT97)C
    M97!T;W(N:F%V83HQ,S I#0H@(" @870@;W)G+FIB;W-S+F5J8BYP;'5G:6YS
    M+DQO9TEN=&5R8V5P=&]R+FEN=F]K92A,;V=);G1E<F-E<'1O<BYJ879A.C(P
    M-"D-"B @("!A="!O<F<N:F)O<W,N96IB+E-T871E;&5S<U-E<W-I;VY#;VYT
    M86EN97(N:6YV;VME*%-T871E;&5S<U-E<W-I;VY#;VYT86EN97(N:F%V83HS
    M,3,I#0H@(" @870@;W)G+FIB;W-S+F5J8BY#;VYT86EN97(N:6YV;VME*$-O
    M;G1A:6YE<BYJ879A.C<Q,BD-"B @("!A="!O<F<N:F)O<W,N;7@N<V5R=F5R
    M+DU"96%N4V5R=F5R26UP;"YI;G9O:V4H34)E86Y397)V97));7!L+FIA=F$Z
    M-3$W*0T*(" @(&%T(&]R9RYJ8F]S<RYI;G9O8V%T:6]N+FQO8V%L+DQO8V%L
    M26YV;VME<BYI;G9O:V4H3&]C86Q);G9O:V5R+FIA=F$Z.3@I#0H@(" @870@
    M;W)G+FIB;W-S+FEN=F]C871I;VXN26YV;VME<DEN=&5R8V5P=&]R+FEN=F]K
    M92A);G9O:V5R26YT97)C97!T;W(N:F%V83HQ,#(I#0H@(" @870@;W)G+FIB
    M;W-S+G!R;WAY+E1R86YS86-T:6]N26YT97)C97!T;W(N:6YV;VME*%1R86YS
    M86-T:6]N26YT97)C97!T;W(N:F%V83HW-RD-"B @("!A="!O<F<N:F)O<W,N
    M<')O>'DN4V5C=7)I='E);G1E<F-E<'1O<BYI;G9O:V4H4V5C=7)I='E);G1E
    M<F-E<'1O<BYJ879A.C@P*0T*(" @(&%T(&]R9RYJ8F]S<RYP<F]X>2YE:F(N
    M4W1A=&5L97-S4V5S<VEO;DEN=&5R8V5P=&]R+FEN=F]K92A3=&%T96QE<W-3
    M97-S:6]N26YT97)C97!T;W(N:F%V83HQ,3$I#0H@(" @870@;W)G+FIB;W-S
    M+G!R;WAY+D-L:65N=$-O;G1A:6YE<BYI;G9O:V4H0VQI96YT0V]N=&%I;F5R
    M+FIA=F$Z-S8I#0H@(" @870@)%!R;WAY-3(N8W)E871E5&5M<&QA=&4H56YK
    M;F]W;B!3;W5R8V4I#0H@(" @870@9&LN<&EN92YM961I86-R96%T;W(N=V5B
    M+E1E;7!L871E57!L;V%D06-T:6]N+F5X96-U=&4H5&5M<&QA=&55<&QO861!
    M8W1I;VXN:F%V83HY,"D-"B @("!A="!O<F<N87!A8VAE+G-T<G5T<RYA8W1I
    M;VXN4F5Q=65S=%!R;V-E<W-O<BYP<F]C97-S06-T:6]N4&5R9F]R;2A297%U
    M97-T4')O8V5S<V]R+FIA=F$Z-#,W*0T*(" @(&%T(&]R9RYA<&%C:&4N<W1R
    M=71S+F%C=&EO;BY297%U97-T4')O8V5S<V]R+G!R;V-E<W,H4F5Q=65S=%!R
    M;V-E<W-O<BYJ879A.C(V-"D-"B @("!A="!O<F<N87!A8VAE+G-T<G5T<RYA
    M8W1I;VXN06-T:6]N4V5R=FQE="YP<F]C97-S*$%C=&EO;E-E<G9L970N:F%V
    M83HQ,3 Y*0T*(" @(&%T(&]R9RYA<&%C:&4N<W1R=71S+F%C=&EO;BY!8W1I
    M;VY397)V;&5T+F1O4&]S="A!8W1I;VY397)V;&5T+FIA=F$Z-#<P*0T*(" @
    M(&%T(&IA=F%X+G-E<G9L970N:'1T<"Y(='1P4V5R=FQE="YS97)V:6-E*$AT
    M='!397)V;&5T+FIA=F$Z-S8P*0T*(" @(&%T(&IA=F%X+G-E<G9L970N:'1T
    M<"Y(='1P4V5R=FQE="YS97)V:6-E*$AT='!397)V;&5T+FIA=F$Z.#4S*0T*
    M(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y!<'!L:6-A=&EO;D9I
    M;'1E<D-H86EN+FEN=&5R;F%L1&]&:6QT97(H07!P;&EC871I;VY&:6QT97)#
    M:&%I;BYJ879A.C(T-RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O
    M<F4N07!P;&EC871I;VY&:6QT97)#:&%I;BYD;T9I;'1E<BA!<'!L:6-A=&EO
    M;D9I;'1E<D-H86EN+FIA=F$Z,3DS*0T*(" @(&%T(&1K+G!I;F4N8V]R92YU
    M=&EL+G=E8BY796)&:6QT97(N9&]&:6QT97(H5V5B1FEL=&5R+FIA=F$Z-38I
    M#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+D%P<&QI8V%T:6]N
    M1FEL=&5R0VAA:6XN:6YT97)N86Q$;T9I;'1E<BA!<'!L:6-A=&EO;D9I;'1E
    M<D-H86EN+FIA=F$Z,C$S*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N
    M8V]R92Y!<'!L:6-A=&EO;D9I;'1E<D-H86EN+F1O1FEL=&5R*$%P<&QI8V%T
    M:6]N1FEL=&5R0VAA:6XN:F%V83HQ.3,I#0H@(" @870@9&LN<&EN92YC;W)E
    M+G5T:6PN=V5B+E-E=$-H87)A8W1E<D5N8V]D:6YG1FEL=&5R+F1O1FEL=&5R
    M*%-E=$-H87)A8W1E<D5N8V]D:6YG1FEL=&5R+FIA=F$Z,3$Q*0T*(" @(&%T
    M(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y!<'!L:6-A=&EO;D9I;'1E<D-H
    M86EN+FEN=&5R;F%L1&]&:6QT97(H07!P;&EC871I;VY&:6QT97)#:&%I;BYJ
    M879A.C(Q,RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N07!P
    M;&EC871I;VY&:6QT97)#:&%I;BYD;T9I;'1E<BA!<'!L:6-A=&EO;D9I;'1E
    M<D-H86EN+FIA=F$Z,3DS*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N
    M8V]R92Y3=&%N9&%R9%=R87!P97)686QV92YI;G9O:V4H4W1A;F1A<F17<F%P
    M<&5R5F%L=F4N:F%V83HR-C I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN
    M82YC;W)E+E-T86YD87)D4&EP96QI;F4D4W1A;F1A<F10:7!E;&EN959A;'9E
    M0V]N=&5X="YI;G9O:V5.97AT*%-T86YD87)D4&EP96QI;F4N:F%V83HV-#,I
    M#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD87)D4&EP
    M96QI;F4N:6YV;VME*%-T86YD87)D4&EP96QI;F4N:F%V83HT.# I#0H@(" @
    M870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+D-O;G1A:6YE<D)A<V4N:6YV
    M;VME*$-O;G1A:6YE<D)A<V4N:F%V83HY.34I#0H@(" @870@;W)G+F%P86-H
    M92YC871A;&EN82YC;W)E+E-T86YD87)D0V]N=&5X=%9A;'9E+FEN=F]K92A3
    M=&%N9&%R9$-O;G1E>'1686QV92YJ879A.C$Y,2D-"B @("!A="!O<F<N87!A
    M8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN9213=&%N9&%R9%!I
    M<&5L:6YE5F%L=F5#;VYT97AT+FEN=F]K94YE>'0H4W1A;F1A<F10:7!E;&EN
    M92YJ879A.C8T,RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F%U=&AE
    M;G1I8V%T;W(N075T:&5N=&EC871O<D)A<V4N:6YV;VME*$%U=&AE;G1I8V%T
    M;W)"87-E+FIA=F$Z-3(W*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N
    M8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP96QI;F5686QV94-O
    M;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-C0Q*0T*
    M(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N=F%L=F5S+D-E<G1I9FEC871E
    M<U9A;'9E+FEN=F]K92A#97)T:69I8V%T97-686QV92YJ879A.C(T-BD-"B @
    M("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN
    M9213=&%N9&%R9%!I<&5L:6YE5F%L=F5#;VYT97AT+FEN=F]K94YE>'0H4W1A
    M;F1A<F10:7!E;&EN92YJ879A.C8T,2D-"B @("!A="!O<F<N87!A8VAE+F-A
    M=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN92YI;G9O:V4H4W1A;F1A<F10
    M:7!E;&EN92YJ879A.C0X,"D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA
    M+F-O<F4N0V]N=&%I;F5R0F%S92YI;G9O:V4H0V]N=&%I;F5R0F%S92YJ879A
    M.CDY-2D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A
    M<F1#;VYT97AT+FEN=F]K92A3=&%N9&%R9$-O;G1E>'0N:F%V83HR,SDV*0T*
    M(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9$AO<W16
    M86QV92YI;G9O:V4H4W1A;F1A<F1(;W-T5F%L=F4N:F%V83HQ.# I#0H@(" @
    M870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD87)D4&EP96QI;F4D
    M4W1A;F1A<F10:7!E;&EN959A;'9E0V]N=&5X="YI;G9O:V5.97AT*%-T86YD
    M87)D4&EP96QI;F4N:F%V83HV-#,I#0H@(" @870@;W)G+F%P86-H92YC871A
    M;&EN82YV86QV97,N17)R;W)$:7-P871C:&5R5F%L=F4N:6YV;VME*$5R<F]R
    M1&ES<&%T8VAE<E9A;'9E+FIA=F$Z,3<P*0T*(" @(&%T(&]R9RYA<&%C:&4N
    M8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP96QI
    M;F5686QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA
    M=F$Z-C0Q*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N=F%L=F5S+D5R
    M<F]R4F5P;W)T5F%L=F4N:6YV;VME*$5R<F]R4F5P;W)T5F%L=F4N:F%V83HQ
    M-S(I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD87)D
    M4&EP96QI;F4D4W1A;F1A<F10:7!E;&EN959A;'9E0V]N=&5X="YI;G9O:V5.
    M97AT*%-T86YD87)D4&EP96QI;F4N:F%V83HV-#$I#0H@(" @870@;W)G+F%P
    M86-H92YC871A;&EN82YV86QV97,N06-C97-S3&]G5F%L=F4N:6YV;VME*$%C
    M8V5S<TQO9U9A;'9E+FIA=F$Z-#8Y*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T
    M86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP96QI;F56
    M86QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z
    M-C0Q*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R
    M9%!I<&5L:6YE+FEN=F]K92A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-#@P*0T*
    M(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y#;VYT86EN97)"87-E
    M+FEN=F]K92A#;VYT86EN97)"87-E+FIA=F$Z.3DU*0T*(" @(&%T(&]R9RYA
    M<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9$5N9VEN959A;'9E+FEN=F]K
    M92A3=&%N9&%R9$5N9VEN959A;'9E+FIA=F$Z,3<T*0T*(" @(&%T(&]R9RYA
    M<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D
    M4&EP96QI;F5686QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L
    M:6YE+FIA=F$Z-C0S*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R
    M92Y3=&%N9&%R9%!I<&5L:6YE+FEN=F]K92A3=&%N9&%R9%!I<&5L:6YE+FIA
    M=F$Z-#@P*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y#;VYT
    M86EN97)"87-E+FEN=F]K92A#;VYT86EN97)"87-E+FIA=F$Z.3DU*0T*(" @
    M(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]N;F5C=&]R+FAT=' N2'1T<%!R
    M;V-E<W-O<BYP<F]C97-S*$AT='!0<F]C97-S;W(N:F%V83HQ,#0P*0T*(" @
    M(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]N;F5C=&]R+FAT=' N2'1T<%!R
    M;V-E<W-O<BYR=6XH2'1T<%!R;V-E<W-O<BYJ879A.C$Q-3$I#0H@(" @870@
    M:F%V82YL86YG+E1H<F5A9"YR=6XH5&AR96%D+FIA=F$Z-3,V*0T*,C P,RTP
    M,RTS,2 Q-3HP-CHR."PU,S @5%)!0T4@6V]R9RYJ8F]S<RYT;2Y4>$-A<'-U
    M;&5=($)E9F]R92!C;VUP;&5T:6]N(&1O;F4L('1X/5AI9$EM<&P@6T9O<FUA
    M=$ED/3(U-RP@1VQO8F%L260]:FQA+R\Q.3DP."P@0G)A;F-H475A;#U=+"!S
    M=&%T=7,]4U1!5%537TU!4DM%1%]23TQ,0D%#2PT*,C P,RTP,RTS,2 Q-3HP
    M-CHR."PU,S @5T%23B @6V]R9RYA<&%C:&4N<W1R=71S+F%C=&EO;BY297%U
    M97-T4')O8V5S<V]R72 -"C(P,#,M,#,M,S$@,34Z,#8Z,C@L-3,P($524D]2
    M(%MO<F<N:F)O<W,N=V5B+FQO8V%L:&]S="Y%;F=I;F5=(%-T86YD87)D5W)A
    M<'!E<E9A;'9E6V%C=&EO;ETZ(%-E<G9L970N<V5R=FEC92@I(&9O<B!S97)V
    M;&5T(&%C=&EO;B!T:')E=R!E>&-E<'1I;VX-"FIA=F%X+G-E<G9L970N4V5R
    M=FQE=$5X8V5P=&EO;@T*(" @(&%T(&]R9RYA<&%C:&4N<W1R=71S+F%C=&EO
    M;BY297%U97-T4')O8V5S<V]R+G!R;V-E<W-%>&-E<'1I;VXH4F5Q=65S=%!R
    M;V-E<W-O<BYJ879A.C0Y."D-"B @("!A="!O<F<N87!A8VAE+G-T<G5T<RYA
    M8W1I;VXN4F5Q=65S=%!R;V-E<W-O<BYP<F]C97-S06-T:6]N4&5R9F]R;2A2
    M97%U97-T4')O8V5S<V]R+FIA=F$Z-#,Y*0T*(" @(&%T(&]R9RYA<&%C:&4N
    M<W1R=71S+F%C=&EO;BY297%U97-T4')O8V5S<V]R+G!R;V-E<W,H4F5Q=65S
    M=%!R;V-E<W-O<BYJ879A.C(V-"D-"B @("!A="!O<F<N87!A8VAE+G-T<G5T
    M<RYA8W1I;VXN06-T:6]N4V5R=FQE="YP<F]C97-S*$%C=&EO;E-E<G9L970N
    M:F%V83HQ,3 Y*0T*(" @(&%T(&]R9RYA<&%C:&4N<W1R=71S+F%C=&EO;BY!
    M8W1I;VY397)V;&5T+F1O4&]S="A!8W1I;VY397)V;&5T+FIA=F$Z-#<P*0T*
    M(" @(&%T(&IA=F%X+G-E<G9L970N:'1T<"Y(='1P4V5R=FQE="YS97)V:6-E
    M*$AT='!397)V;&5T+FIA=F$Z-S8P*0T*(" @(&%T(&IA=F%X+G-E<G9L970N
    M:'1T<"Y(='1P4V5R=FQE="YS97)V:6-E*$AT='!397)V;&5T+FIA=F$Z.#4S
    M*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y!<'!L:6-A=&EO
    M;D9I;'1E<D-H86EN+FEN=&5R;F%L1&]&:6QT97(H07!P;&EC871I;VY&:6QT
    M97)#:&%I;BYJ879A.C(T-RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA
    M+F-O<F4N07!P;&EC871I;VY&:6QT97)#:&%I;BYD;T9I;'1E<BA!<'!L:6-A
    M=&EO;D9I;'1E<D-H86EN+FIA=F$Z,3DS*0T*(" @(&%T(&1K+G!I;F4N8V]R
    M92YU=&EL+G=E8BY796)&:6QT97(N9&]&:6QT97(H5V5B1FEL=&5R+FIA=F$Z
    M-38I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+D%P<&QI8V%T
    M:6]N1FEL=&5R0VAA:6XN:6YT97)N86Q$;T9I;'1E<BA!<'!L:6-A=&EO;D9I
    M;'1E<D-H86EN+FIA=F$Z,C$S*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI
    M;F$N8V]R92Y!<'!L:6-A=&EO;D9I;'1E<D-H86EN+F1O1FEL=&5R*$%P<&QI
    M8V%T:6]N1FEL=&5R0VAA:6XN:F%V83HQ.3,I#0H@(" @870@9&LN<&EN92YC
    M;W)E+G5T:6PN=V5B+E-E=$-H87)A8W1E<D5N8V]D:6YG1FEL=&5R+F1O1FEL
    M=&5R*%-E=$-H87)A8W1E<D5N8V]D:6YG1FEL=&5R+FIA=F$Z,3$Q*0T*(" @
    M(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y!<'!L:6-A=&EO;D9I;'1E
    M<D-H86EN+FEN=&5R;F%L1&]&:6QT97(H07!P;&EC871I;VY&:6QT97)#:&%I
    M;BYJ879A.C(Q,RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N
    M07!P;&EC871I;VY&:6QT97)#:&%I;BYD;T9I;'1E<BA!<'!L:6-A=&EO;D9I
    M;'1E<D-H86EN+FIA=F$Z,3DS*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI
    M;F$N8V]R92Y3=&%N9&%R9%=R87!P97)686QV92YI;G9O:V4H4W1A;F1A<F17
    M<F%P<&5R5F%L=F4N:F%V83HR-C I#0H@(" @870@;W)G+F%P86-H92YC871A
    M;&EN82YC;W)E+E-T86YD87)D4&EP96QI;F4D4W1A;F1A<F10:7!E;&EN959A
    M;'9E0V]N=&5X="YI;G9O:V5.97AT*%-T86YD87)D4&EP96QI;F4N:F%V83HV
    M-#,I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD87)D
    M4&EP96QI;F4N:6YV;VME*%-T86YD87)D4&EP96QI;F4N:F%V83HT.# I#0H@
    M(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+D-O;G1A:6YE<D)A<V4N
    M:6YV;VME*$-O;G1A:6YE<D)A<V4N:F%V83HY.34I#0H@(" @870@;W)G+F%P
    M86-H92YC871A;&EN82YC;W)E+E-T86YD87)D0V]N=&5X=%9A;'9E+FEN=F]K
    M92A3=&%N9&%R9$-O;G1E>'1686QV92YJ879A.C$Y,2D-"B @("!A="!O<F<N
    M87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN9213=&%N9&%R
    M9%!I<&5L:6YE5F%L=F5#;VYT97AT+FEN=F]K94YE>'0H4W1A;F1A<F10:7!E
    M;&EN92YJ879A.C8T,RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F%U
    M=&AE;G1I8V%T;W(N075T:&5N=&EC871O<D)A<V4N:6YV;VME*$%U=&AE;G1I
    M8V%T;W)"87-E+FIA=F$Z-3(W*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI
    M;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP96QI;F5686QV
    M94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-C0Q
    M*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N=F%L=F5S+D-E<G1I9FEC
    M871E<U9A;'9E+FEN=F]K92A#97)T:69I8V%T97-686QV92YJ879A.C(T-BD-
    M"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E
    M;&EN9213=&%N9&%R9%!I<&5L:6YE5F%L=F5#;VYT97AT+FEN=F]K94YE>'0H
    M4W1A;F1A<F10:7!E;&EN92YJ879A.C8T,2D-"B @("!A="!O<F<N87!A8VAE
    M+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN92YI;G9O:V4H4W1A;F1A
    M<F10:7!E;&EN92YJ879A.C0X,"D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L
    M:6YA+F-O<F4N0V]N=&%I;F5R0F%S92YI;G9O:V4H0V]N=&%I;F5R0F%S92YJ
    M879A.CDY-2D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A
    M;F1A<F1#;VYT97AT+FEN=F]K92A3=&%N9&%R9$-O;G1E>'0N:F%V83HR,SDV
    M*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9$AO
    M<W1686QV92YI;G9O:V4H4W1A;F1A<F1(;W-T5F%L=F4N:F%V83HQ.# I#0H@
    M(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD87)D4&EP96QI
    M;F4D4W1A;F1A<F10:7!E;&EN959A;'9E0V]N=&5X="YI;G9O:V5.97AT*%-T
    M86YD87)D4&EP96QI;F4N:F%V83HV-#,I#0H@(" @870@;W)G+F%P86-H92YC
    M871A;&EN82YV86QV97,N17)R;W)$:7-P871C:&5R5F%L=F4N:6YV;VME*$5R
    M<F]R1&ES<&%T8VAE<E9A;'9E+FIA=F$Z,3<P*0T*(" @(&%T(&]R9RYA<&%C
    M:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP
    M96QI;F5686QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE
    M+FIA=F$Z-C0Q*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N=F%L=F5S
    M+D5R<F]R4F5P;W)T5F%L=F4N:6YV;VME*$5R<F]R4F5P;W)T5F%L=F4N:F%V
    M83HQ-S(I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD
    M87)D4&EP96QI;F4D4W1A;F1A<F10:7!E;&EN959A;'9E0V]N=&5X="YI;G9O
    M:V5.97AT*%-T86YD87)D4&EP96QI;F4N:F%V83HV-#$I#0H@(" @870@;W)G
    M+F%P86-H92YC871A;&EN82YV86QV97,N06-C97-S3&]G5F%L=F4N:6YV;VME
    M*$%C8V5S<TQO9U9A;'9E+FIA=F$Z-#8Y*0T*(" @(&%T(&]R9RYA<&%C:&4N
    M8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP96QI
    M;F5686QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA
    M=F$Z-C0Q*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N
    M9&%R9%!I<&5L:6YE+FEN=F]K92A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-#@P
    M*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y#;VYT86EN97)"
    M87-E+FEN=F]K92A#;VYT86EN97)"87-E+FIA=F$Z.3DU*0T*(" @(&%T(&]R
    M9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9$5N9VEN959A;'9E+FEN
    M=F]K92A3=&%N9&%R9$5N9VEN959A;'9E+FIA=F$Z,3<T*0T*(" @(&%T(&]R
    M9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD
    M87)D4&EP96QI;F5686QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I
    M<&5L:6YE+FIA=F$Z-C0S*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N
    M8V]R92Y3=&%N9&%R9%!I<&5L:6YE+FEN=F]K92A3=&%N9&%R9%!I<&5L:6YE
    M+FIA=F$Z-#@P*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y#
    M;VYT86EN97)"87-E+FEN=F]K92A#;VYT86EN97)"87-E+FIA=F$Z.3DU*0T*
    M(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]N;F5C=&]R+FAT=' N2'1T
    M<%!R;V-E<W-O<BYP<F]C97-S*$AT='!0<F]C97-S;W(N:F%V83HQ,#0P*0T*
    M(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]N;F5C=&]R+FAT=' N2'1T
    M<%!R;V-E<W-O<BYR=6XH2'1T<%!R;V-E<W-O<BYJ879A.C$Q-3$I#0H@(" @
    M870@:F%V82YL86YG+E1H<F5A9"YR=6XH5&AR96%D+FIA=F$Z-3,V*0T*,C P
    M,RTP,RTS,2 Q-3HP-CHR."PU-3 @15)23U(@6V]R9RYJ8F]S<RYW96(N;&]C
    M86QH;W-T+D5N9VEN95T@+2TM+2T@4F]O="!#875S92 M+2TM+0T*:F%V82YL
    M86YG+G)E9FQE8W0N56YD96-L87)E9%1H<F]W86)L945X8V5P=&EO;@T*(" @
    M(&%T("10<F]X>34R+F-R96%T951E;7!L871E*%5N:VYO=VX@4V]U<F-E*0T*
    M(" @(&%T(&1K+G!I;F4N;65D:6%C<F5A=&]R+G=E8BY496UP;&%T955P;&]A
    M9$%C=&EO;BYE>&5C=71E*%1E;7!L871E57!L;V%D06-T:6]N+FIA=F$Z.3 I
    M#0H@(" @870@;W)G+F%P86-H92YS=')U=',N86-T:6]N+E)E<75E<W10<F]C
    M97-S;W(N<')O8V5S<T%C=&EO;E!E<F9O<FTH4F5Q=65S=%!R;V-E<W-O<BYJ
    M879A.C0S-RD-"B @("!A="!O<F<N87!A8VAE+G-T<G5T<RYA8W1I;VXN4F5Q
    M=65S=%!R;V-E<W-O<BYP<F]C97-S*%)E<75E<W10<F]C97-S;W(N:F%V83HR
    M-C0I#0H@(" @870@;W)G+F%P86-H92YS=')U=',N86-T:6]N+D%C=&EO;E-E
    M<G9L970N<')O8V5S<RA!8W1I;VY397)V;&5T+FIA=F$Z,3$P.2D-"B @("!A
    M="!O<F<N87!A8VAE+G-T<G5T<RYA8W1I;VXN06-T:6]N4V5R=FQE="YD;U!O
    M<W0H06-T:6]N4V5R=FQE="YJ879A.C0W,"D-"B @("!A="!J879A>"YS97)V
    M;&5T+FAT=' N2'1T<%-E<G9L970N<V5R=FEC92A(='1P4V5R=FQE="YJ879A
    M.C<V,"D-"B @("!A="!J879A>"YS97)V;&5T+FAT=' N2'1T<%-E<G9L970N
    M<V5R=FEC92A(='1P4V5R=FQE="YJ879A.C@U,RD-"B @("!A="!O<F<N87!A
    M8VAE+F-A=&%L:6YA+F-O<F4N07!P;&EC871I;VY&:6QT97)#:&%I;BYI;G1E
    M<FYA;$1O1FEL=&5R*$%P<&QI8V%T:6]N1FEL=&5R0VAA:6XN:F%V83HR-#<I
    M#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+D%P<&QI8V%T:6]N
    M1FEL=&5R0VAA:6XN9&]&:6QT97(H07!P;&EC871I;VY&:6QT97)#:&%I;BYJ
    M879A.C$Y,RD-"B @("!A="!D:RYP:6YE+F-O<F4N=71I;"YW96(N5V5B1FEL
    M=&5R+F1O1FEL=&5R*%=E8D9I;'1E<BYJ879A.C4V*0T*(" @(&%T(&]R9RYA
    M<&%C:&4N8V%T86QI;F$N8V]R92Y!<'!L:6-A=&EO;D9I;'1E<D-H86EN+FEN
    M=&5R;F%L1&]&:6QT97(H07!P;&EC871I;VY&:6QT97)#:&%I;BYJ879A.C(Q
    M,RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N07!P;&EC871I
    M;VY&:6QT97)#:&%I;BYD;T9I;'1E<BA!<'!L:6-A=&EO;D9I;'1E<D-H86EN
    M+FIA=F$Z,3DS*0T*(" @(&%T(&1K+G!I;F4N8V]R92YU=&EL+G=E8BY3971#
    M:&%R86-T97)%;F-O9&EN9T9I;'1E<BYD;T9I;'1E<BA3971#:&%R86-T97)%
    M;F-O9&EN9T9I;'1E<BYJ879A.C$Q,2D-"B @("!A="!O<F<N87!A8VAE+F-A
    M=&%L:6YA+F-O<F4N07!P;&EC871I;VY&:6QT97)#:&%I;BYI;G1E<FYA;$1O
    M1FEL=&5R*$%P<&QI8V%T:6]N1FEL=&5R0VAA:6XN:F%V83HR,3,I#0H@(" @
    M870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+D%P<&QI8V%T:6]N1FEL=&5R
    M0VAA:6XN9&]&:6QT97(H07!P;&EC871I;VY&:6QT97)#:&%I;BYJ879A.C$Y
    M,RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F17
    M<F%P<&5R5F%L=F4N:6YV;VME*%-T86YD87)D5W)A<'!E<E9A;'9E+FIA=F$Z
    M,C8P*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R
    M9%!I<&5L:6YE)%-T86YD87)D4&EP96QI;F5686QV94-O;G1E>'0N:6YV;VME
    M3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-C0S*0T*(" @(&%T(&]R9RYA
    M<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE+FEN=F]K92A3
    M=&%N9&%R9%!I<&5L:6YE+FIA=F$Z-#@P*0T*(" @(&%T(&]R9RYA<&%C:&4N
    M8V%T86QI;F$N8V]R92Y#;VYT86EN97)"87-E+FEN=F]K92A#;VYT86EN97)"
    M87-E+FIA=F$Z.3DU*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N8V]R
    M92Y3=&%N9&%R9$-O;G1E>'1686QV92YI;G9O:V4H4W1A;F1A<F1#;VYT97AT
    M5F%L=F4N:F%V83HQ.3$I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC
    M;W)E+E-T86YD87)D4&EP96QI;F4D4W1A;F1A<F10:7!E;&EN959A;'9E0V]N
    M=&5X="YI;G9O:V5.97AT*%-T86YD87)D4&EP96QI;F4N:F%V83HV-#,I#0H@
    M(" @870@;W)G+F%P86-H92YC871A;&EN82YA=71H96YT:6-A=&]R+D%U=&AE
    M;G1I8V%T;W)"87-E+FEN=F]K92A!=71H96YT:6-A=&]R0F%S92YJ879A.C4R
    M-RD-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10
    M:7!E;&EN9213=&%N9&%R9%!I<&5L:6YE5F%L=F5#;VYT97AT+FEN=F]K94YE
    M>'0H4W1A;F1A<F10:7!E;&EN92YJ879A.C8T,2D-"B @("!A="!O<F<N87!A
    M8VAE+F-A=&%L:6YA+G9A;'9E<RY#97)T:69I8V%T97-686QV92YI;G9O:V4H
    M0V5R=&EF:6-A=&5S5F%L=F4N:F%V83HR-#8I#0H@(" @870@;W)G+F%P86-H
    M92YC871A;&EN82YC;W)E+E-T86YD87)D4&EP96QI;F4D4W1A;F1A<F10:7!E
    M;&EN959A;'9E0V]N=&5X="YI;G9O:V5.97AT*%-T86YD87)D4&EP96QI;F4N
    M:F%V83HV-#$I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T
    M86YD87)D4&EP96QI;F4N:6YV;VME*%-T86YD87)D4&EP96QI;F4N:F%V83HT
    M.# I#0H@(" @870@;W)G+F%P86-H92YC871A;&EN82YC;W)E+D-O;G1A:6YE
    M<D)A<V4N:6YV;VME*$-O;G1A:6YE<D)A<V4N:F%V83HY.34I#0H@(" @870@
    M;W)G+F%P86-H92YC871A;&EN82YC;W)E+E-T86YD87)D0V]N=&5X="YI;G9O
    M:V4H4W1A;F1A<F1#;VYT97AT+FIA=F$Z,C,Y-BD-"B @("!A="!O<F<N87!A
    M8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F1(;W-T5F%L=F4N:6YV;VME*%-T
    M86YD87)D2&]S=%9A;'9E+FIA=F$Z,3@P*0T*(" @(&%T(&]R9RYA<&%C:&4N
    M8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD87)D4&EP96QI
    M;F5686QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I<&5L:6YE+FIA
    M=F$Z-C0S*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N=F%L=F5S+D5R
    M<F]R1&ES<&%T8VAE<E9A;'9E+FEN=F]K92A%<G)O<D1I<W!A=&-H97)686QV
    M92YJ879A.C$W,"D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N
    M4W1A;F1A<F10:7!E;&EN9213=&%N9&%R9%!I<&5L:6YE5F%L=F5#;VYT97AT
    M+FEN=F]K94YE>'0H4W1A;F1A<F10:7!E;&EN92YJ879A.C8T,2D-"B @("!A
    M="!O<F<N87!A8VAE+F-A=&%L:6YA+G9A;'9E<RY%<G)O<E)E<&]R=%9A;'9E
    M+FEN=F]K92A%<G)O<E)E<&]R=%9A;'9E+FIA=F$Z,3<R*0T*(" @(&%T(&]R
    M9RYA<&%C:&4N8V%T86QI;F$N8V]R92Y3=&%N9&%R9%!I<&5L:6YE)%-T86YD
    M87)D4&EP96QI;F5686QV94-O;G1E>'0N:6YV;VME3F5X="A3=&%N9&%R9%!I
    M<&5L:6YE+FIA=F$Z-C0Q*0T*(" @(&%T(&]R9RYA<&%C:&4N8V%T86QI;F$N
    M=F%L=F5S+D%C8V5S<TQO9U9A;'9E+FEN=F]K92A!8V-E<W-,;V=686QV92YJ
    M879A.C0V.2D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A
    M;F1A<F10:7!E;&EN9213=&%N9&%R9%!I<&5L:6YE5F%L=F5#;VYT97AT+FEN
    M=F]K94YE>'0H4W1A;F1A<F10:7!E;&EN92YJ879A.C8T,2D-"B @("!A="!O
    M<F<N87!A8VAE+F-A=&%L:6YA+F-O<F4N4W1A;F1A<F10:7!E;&EN92YI;G9O
    M:V4H4W1A;F1A<F10:7!E;&EN92YJ879A.C0X,"D-"B @("!A="!O<F<N87!A
    M8VAE+F-A=&%L:6YA+F-O<F4N0V]N=&%I;F5R0F%S92YI;G9O:V4H0V]N=&%I
    M;F5R0F%S92YJ879A.CDY-2D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA
    M+F-O<F4N4W1A;F1A<F1%;F=I;F5686QV92YI;G9O:V4H4W1A;F1A<F1%;F=I
    M;F5686QV92YJ879A.C$W-"D-"B @("!A="!O<F<N87!A8VAE+F-A=&%L:6YA
    M+F-O<F4N4W

    Kodo handled the concurrency by telling you your instance was stale.
    I.e:
    A bank account starts with $0.
    A person retrieves the account with $0 balance.
    Person 2 retrieves the account with $0 balance.
    Person 1 deposits the account with $5 ($0 + $5 = $5 total).
    Person 2 deposits the account with $2 ($0 + $2 = $2 total)
    Person 1 commits. The Account the DB is now at $5.
    Person 2 attempts to commit. The version of Account is stale, and thus
    tells the application that Person 2 is attempting to put in invalid data
    (it should instead be at $7).
    With pessismistic locking, Person 2 has to wait for Person 1 to finish.
    Thus the deadlock:
    Person 1 locks up resource a.
    Person 2 locks up resource b.
    Person 2 attempts to lock up resource a but is waiting for Person 1 to
    finish.
    Person 1 attempts to lock up resource b but is waiting for Person 2 to
    finish.
    These are the kinds of situations that Kodo does handle, but it is up to
    you to figure out what to do when such concurrency situations happen...
    i.e. handle the optimistic lock exception.
    Jesper Ladegaard wrote:
    Hi,
    When multiple ejb instances/threads are accessing the same persistence
    object I get this exception:
    javax.jdo.JDOUserException: An instance was concurrently modified in another
    transaction (optimistic lock #: 238).
    FailedObject:dk.pine.mediamanager.ejb.model.Application-58
    at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.flush(PersistenceManager
    Impl.java:577)
    at
    com.solarmetric.kodo.ee.EEPersistenceManager.beforeCompletion(EEPersistenceM
    anager.java:192)
    at org.jboss.tm.TxCapsule.doBeforeCompletion(TxCapsule.java:1394)
    at org.jboss.tm.TxCapsule.commit(TxCapsule.java:364)
    (full stack trace included as attachment)
    The only field accessed is a collection - objects are added to the
    collection from several bean instances.
    Is kodo not supposed to handle this?
    The optimistic property is set to default (true). I've tried setting it to
    false, but then the app server hangs or dead locks occur in the database.
    System configuration:
    jdk 1.4
    kodo 2.4.2
    jboss 3.0.4
    sql server 2000
    windows 2000
    Thanks
    Jesper
    2003-03-31 15:06:28,520 TRACE [org.jboss.tm.TxCapsule] failed before completion
    javax.jdo.JDOUserException: Errors were detected when flushing to the data store. If using optimistic transactions, this could indicate that lock violations were detected. The "getNestedExceptions" method of this Exception will return the specific errors.
    NestedThrowables:
    javax.jdo.JDOUserException: An instance was concurrently modified in another transaction (optimistic lock #: 238).
    FailedObject:dk.pine.mediamanager.ejb.model.Application-58
    at com.solarmetric.kodo.runtime.PersistenceManagerImpl.flush(PersistenceManagerImpl.java:577)
    at com.solarmetric.kodo.ee.EEPersistenceManager.beforeCompletion(EEPersistenceManager.java:192)
    at org.jboss.tm.TxCapsule.doBeforeCompletion(TxCapsule.java:1394)
    at org.jboss.tm.TxCapsule.commit(TxCapsule.java:364)
    at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:73)
    at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:201)
    at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:60)
    at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
    at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
    at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:313)
    at org.jboss.ejb.Container.invoke(Container.java:712)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
    at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:98)
    at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:102)
    at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77)
    at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
    at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:111)
    at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
    at $Proxy52.createTemplate(Unknown Source)
    at dk.pine.mediacreator.web.TemplateUploadAction.execute(TemplateUploadAction.java:90)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:437)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:264)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1109)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:470)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at dk.pine.core.util.web.WebFilter.doFilter(WebFilter.java:56)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at dk.pine.core.util.web.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
    at java.lang.Thread.run(Thread.java:536)
    NestedThrowablesStackTrace:
    javax.jdo.JDOUserException: An instance was concurrently modified in another transaction (optimistic lock #: 238).
    FailedObject:dk.pine.mediamanager.ejb.model.Application-58
    at com.solarmetric.kodo.impl.jdbc.ormapping.ClassMapping$1.afterUpdate(ClassMapping.java:611)
    at com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeInternal(SQLExecutionManagerImpl.java:455)
    at com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.flush(SQLExecutionManagerImpl.java:272)
    at com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.flush(JDBCStoreManager.java:411)
    at com.solarmetric.kodo.runtime.PersistenceManagerImpl.flush(PersistenceManagerImpl.java:575)
    at com.solarmetric.kodo.ee.EEPersistenceManager.beforeCompletion(EEPersistenceManager.java:192)
    at org.jboss.tm.TxCapsule.doBeforeCompletion(TxCapsule.java:1394)
    at org.jboss.tm.TxCapsule.commit(TxCapsule.java:364)
    at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:73)
    at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:201)
    at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:60)
    at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
    at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
    at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:313)
    at org.jboss.ejb.Container.invoke(Container.java:712)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
    at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:98)
    at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:102)
    at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77)
    at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
    at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:111)
    at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
    at $Proxy52.createTemplate(Unknown Source)
    at dk.pine.mediacreator.web.TemplateUploadAction.execute(TemplateUploadAction.java:90)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:437)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:264)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1109)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:470)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at dk.pine.core.util.web.WebFilter.doFilter(WebFilter.java:56)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at dk.pine.core.util.web.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
    at java.lang.Thread.run(Thread.java:536)
    2003-03-31 15:06:28,530 TRACE [org.jboss.tm.TxCapsule] Before completion done, tx=XidImpl [FormatId=257, GlobalId=jla//19908, BranchQual=], status=STATUS_MARKED_ROLLBACK
    2003-03-31 15:06:28,530 WARN [org.apache.struts.action.RequestProcessor]
    2003-03-31 15:06:28,530 ERROR [org.jboss.web.localhost.Engine] StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
    javax.servlet.ServletException
    at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:498)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:439)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:264)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1109)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:470)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at dk.pine.core.util.web.WebFilter.doFilter(WebFilter.java:56)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at dk.pine.core.util.web.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
    at java.lang.Thread.run(Thread.java:536)
    2003-03-31 15:06:28,550 ERROR [org.jboss.web.localhost.Engine] ----- Root Cause -----
    java.lang.reflect.UndeclaredThrowableException
    at $Proxy52.createTemplate(Unknown Source)
    at dk.pine.mediacreator.web.TemplateUploadAction.execute(TemplateUploadAction.java:90)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:437)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:264)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1109)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:470)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at dk.pine.core.util.web.WebFilter.doFilter(WebFilter.java:56)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at dk.pine.core.util.web.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
    at java.lang.Thread.run(Thread.java:536)
    Caused by: javax.transaction.RollbackException: Unable to commit, tx=XidImpl [FormatId=257, GlobalId=jla//19908, BranchQual=] status=STATUS_ROLLEDBACK
    at org.jboss.tm.TxCapsule.commit(TxCapsule.java:425)
    at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:73)
    at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:201)
    at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:60)
    at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
    at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
    at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:313)
    at org.jboss.ejb.Container.invoke(Container.java:712)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
    at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:98)
    at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:102)
    at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77)
    at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
    at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:111)
    at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
    ... 46 more--
    Stephen Kim
    [email protected]
    SolarMetric, Inc.
    http://www.solarmetric.com

  • Concurrent Modification in a loop

    This loop iterates through a list of urls that parses a document for urls, if it finds some, then it adds them to a PriorityQueue. I'm getting the modification exception when the loop runs the second time at the it.next() line. Can someone help me with why?
        public synchronized void TidyProcess()
            Iterator it = urlQueue.iterator();
            String userURL;
            while (it.hasNext())
                javax.swing.JEditorPane jEditorPane1 = TC1.getEditorPane();
                userURL = it.next().toString();
                int position = jEditorPane1.getText().length();
                try
                    jEditorPane1.getDocument().insertString(position, "Processing: " + userURL, null);
                catch(javax.swing.text.BadLocationException e)
                    logger.debug(e.getMessage());
                Document tidydoc = TP1.tagParser(userURL); //retrieves document in XML format
                String xmldoc = tidydoc.toXML();
                urlQueue.addAll(TP1.getUrls(tidydoc)); //Processes the document for urls, returns them in a PriorityQueue collection
        }Message was edited by:
    subnetrx
    Message was edited by:
    subnetrx

    You need to add via the Iterator (cast it to a ListIterator) not to the collection itself, otherwise the iterator will complain.

  • CONCURRENT UPDATE EXCEPTION

    Hi All,
    We are getting a CUE only for a particular user, i.e when this user logs in , it loads his pending orders and then when we try to checkout the order we get the below error. This is happening only for a particular user account, when we enabled debug on OrderRepository we found that during handleMoveToOrderCommit operation, some how an update query is fired(before processOrder chain is executed) which increments the version number - this query cannot be seen in the log(query where the version number became 578). Thus , when processOrder chain is executed it throws Concurrent Update Exception.
    Any inputs regarding this is highly appreciated.
    UPDATE dcspp_order
    SET version=?,state=?,submitted_date=?
    WHERE order_id=? AND version=?
    -- Parameters --
    p[1] = {pd: version} 578 (java.lang.Integer)
    p[2] = {pd: state} SUBMITTED (java.lang.String)
    p[3] = {pd: submittedDate} 2011-07-19 23:23:55.744 (java.sql.Timestamp)
    p[4] = {pd} o9820006 (java.lang.String)
    p[5] = {pd} 577 (java.lang.Integer)
    [--SQLUpdate--]
    2011-07-19 23:24:02,609 INFO [nucleusNamespace.atg.commerce.order.OrderRepository] DEBUG updateItem(order:o9820006) (CONCURRENT UPDATE EXCEPTION: no rows found for version=577)
    2011-07-19 23:24:02,609 INFO [nucleusNamespace.atg.commerce.order.OrderRepository] DEBUG removeCurrentProperties(order:o9820006)
    2011-07-19 23:24:02,610 INFO [nucleusNamespace.atg.commerce.order.OrderRepository] DEBUG setPropertyValue(order:o9820006.submittedDate,12/31/1969 18:00:00)
    2011-07-19 23:24:02,611 ERROR [nucleusNamespace.atg.commerce.order.ShoppingCartModifier]
    java.lang.RuntimeException: CONTAINER:atg.repository.RepositoryException; SOURCE:org.jboss.util.NestedSQLException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -53e3c8d2:c32f:4e26092b:3b367 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -53e3c8d2:c32f:4e26092b:3b367 status: ActionStatus.ABORT_ONLY >)
    at atg.adapter.gsa.GSAItemDescriptor.loadProperty(GSAItemDescriptor.java:5464)
    at atg.adapter.gsa.GSAItem.getPersistentPropertyValue(GSAItem.java:1078)
    at atg.adapter.gsa.GSAItem.getPropertyValue(GSAItem.java:971)
    at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:2088)
    at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:1968)
    at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:1954)
    at atg.adapter.gsa.GSAItem.getItemTransactionStateUnchecked(GSAItem.java:2143)
    at atg.adapter.gsa.GSAItem.setPropertyValue(GSAItem.java:1332)
    at atg.adapter.gsa.GSAPropertyDescriptor.setPropertyValue(GSAPropertyDescriptor.java:407)
    at atg.adapter.gsa.DatePropertyDescriptor.setPropertyValue(DatePropertyDescriptor.java:149)
    at atg.repository.RepositoryItemImpl.setPropertyValue(RepositoryItemImpl.java:223)
    at atg.adapter.gsa.GSAItem.setPropertyValue(GSAItem.java:1308)
    Edited by: user4180179 on Jul 19, 2011 10:19 PM
    Edited by: user4180179 on Jul 19, 2011 11:12 PM

    Yes, I had a look at it. In fact we are getting this error running on a single instance with simple caching mode. The strange part is that it happens only for a particular user profile. Setting item-cache-timeout to session timeout as mentioned in the link would not help in our case since we are getting the error in a normal flow which hardly takes 5 min.
    After debgging OrderRepository, I can see that somehow the dcspp_order table gets updated when we click "Purchase"(and this query cannot be seen in the log - we can see all the other queries in the log) BEFORE the processOrder pipeline is executed from handleMoveToCommitOrder.

  • Concurrent modification of Indirect Set

    Hello, the last months I have been working with JPA without going deeply in it, currently my project is suffering some issues with concurrency.
    I have a OneToMany relationship defined as a Set (default values that is transparent indirection), the core of the project is a EJB 3; when two concurrent invocations of the EJB 3 try to modify (adding and removing) an element of the Set toplink send a ConcurrentModificationException, I thought that toplink manages the concurrency but I must haver missed something...
    Caused by: Exception [TOPLINK-6055] (Oracle TopLink Essentials - 2.0 (Build b58g-fcs (09/07/2007))): oracle.toplink.essentials.exceptions.QueryException
    Exception Description: The method invocation of the method [public java.lang.Object java.util.HashSet.clone()] on the object [[class org.cesga.ifec.engine.database.ACRequestRegister[id=1642], class org.cesga.ifec.engine.database.ACRequestRegister[id=1643], of class [class java.util.HashSet], triggered an exception.
    Internal Exception: java.lang.reflect.InvocationTargetException
    Target Invocation Exception: java.util.ConcurrentModificationException
    at oracle.toplink.essentials.exceptions.QueryException.methodInvocationFailed(QueryException.java:746)
    at oracle.toplink.essentials.internal.queryframework.InterfaceContainerPolicy.invokeCloneMethodOn(InterfaceContainerPolicy.java:221)
    at oracle.toplink.essentials.internal.queryframework.InterfaceContainerPolicy.cloneFor(InterfaceContainerPolicy.java:105)
    at oracle.toplink.essentials.mappings.CollectionMapping.buildCloneForPartObject(CollectionMapping.java:173)
    at oracle.toplink.essentials.internal.indirection.UnitOfWorkQueryValueHolder.buildCloneFor(UnitOfWorkQueryValueHolder.java:75)
    at oracle.toplink.essentials.internal.indirection.UnitOfWorkValueHolder.instantiateImpl(UnitOfWorkValueHolder.java:176)
    at oracle.toplink.essentials.internal.indirection.UnitOfWorkValueHolder.instantiate(UnitOfWorkValueHolder.java:247)
    at oracle.toplink.essentials.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:105)
    at oracle.toplink.essentials.indirection.IndirectSet.buildDelegate(IndirectSet.java:193)
    at oracle.toplink.essentials.indirection.IndirectSet.getDelegate(IndirectSet.java:308)
    at oracle.toplink.essentials.indirection.IndirectSet.add(IndirectSet.java:168)
    at org.cesga.ifec.engine.Engine.newACRequest(Engine.java:1608)
    at sun.reflect.GeneratedMethodAccessor224.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1067)
    at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:176)
    at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2895)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:3986)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:197)
    ... 62 more
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor213.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at oracle.toplink.essentials.internal.security.PrivilegedAccessHelper.invokeMethod(PrivilegedAccessHelper.java:322)
    at oracle.toplink.essentials.internal.queryframework.InterfaceContainerPolicy.invokeCloneMethodOn(InterfaceContainerPolicy.java:216)
    ... 80 more
    Caused by: java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
    at java.util.HashMap$EntryIterator.next(HashMap.java:834)
    at java.util.HashMap$EntryIterator.next(HashMap.java:832)
    at java.util.HashMap.putAllForCreate(HashMap.java:435)
    at java.util.HashMap.clone(HashMap.java:669)
    at java.util.HashSet.clone(HashSet.java:236)
    ... 85 more
    Thanks!!
    Luis M.

    The latest code in EclipseLink seems to be correctly synchronizing. You could try using EclipseLink 1.0 and see if the issue still occurs.
    Workarounds may include:
    - using a List or Collection instead of Set
    - use eager
    - use an isolated (not shared) cache
    James : http://www.eclipselink.org

  • Using API  to run Catalog Bulk Load - Items & Price Lists concurrent prog

    Hi everyone. I want to be able to run the concurrent program "Catalog Bulk Load - Items & Price Lists" for iProcurement. I have been able to run concurrent programs in the past using the fnd_request.submit_request API. But I seem to be having problems with the item loading concurrent program. for one thing, the program is stuck on phase code P (pending) status.
    When I run the same concurrent program using the iProcurement Administration page it runs ok.
    Has anyone been able to run this program through the backend? If so, any help is appreciated.
    Thanks

    Hello S.P,
    Basically this is what I am trying to achieve.
    1. Create a staging table. The columns available for it are category_name, item_number, item_description, supplier, supplier_site, price, uom and currency.
    So basically the user can load item details into the database from an excel sheet.
    2. use the utl_file api, create an xml file called item_load.xml using the data in the staging table. this will create the xml file used to load items in iprocurement and save it in the database directory /var/tmp/iprocurement This part works great.
    3. use the api fnd_request.submit_request to submit the concurrent program 'Catalog Bulk Load - Items & Price Lists'. This is where I am stuck. The process simply says pending or comes up with an error saying:
    oracle.apps.fnd.cp.request.FileAccessException: File /var/tmp/iprocurement is not accessable from node/machine moon1.oando-plc.com.
    I'm wondering if anyone has used my approach to load items before and if so, have they been successful?
    Thank you

Maybe you are looking for