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);
}
Similar Messages
-
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 -
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 -
How to catch Exception inside the native code
Hello,
I have an error of unexpected exception during running native code,it occurrs randomly, not every time.
the error text is:
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0x9535F359
Function=acy_match+0xC6
Library=/usr/lib/libNegativeMatcher.so
I don't know what exactly cause the crash inside the c code but I think it might be memory leak . What I'm concern is that this exception cause program termination.
I have few questions:
1. This exception cause the java program to end. How can I catch this exception and avoid program termination?
2. What is 0xC6 in:
Function=acy_match+0xC6
and PC=0x9535F359?
Can it help me track the problem inside the native code?
Thanks for your help.An unexpected exception has been detected in native
code outside the VM.
Unexpected Signal : 11 occurred at PC=0x9535F359
Function=acy_match+0xC6
Library=/usr/lib/libNegativeMatcher.so
I don't know what exactly cause the crash inside the
c code but I think it might be memory leak . What
I'm concern is that this exception cause program
termination.I doubt it is a memory leak (actually I am rather certain that another error would occur if it was just memory exhaustion.)
I have few questions:
1. This exception cause the java program to end. How
can I catch this exception and avoid program
termination?I suspect that would be a really bad idea. That particular signal very likely indicates that you have corrupted memory. Continuing is unlikely to work.
2. What is 0xC6 in:
As a guess it is an offset into the compiled code which indicates where the memory problem was detected.
That it unlikely to help you with a pointer/memory problem because that is where it was detected and not where it happened. By comparing the source you might be able to determine what was bad and then trace it back. -
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 -
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 PMnothing 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 -
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 youSynchonize 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
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.
-
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,
KurtHi,
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<F4N4WKodo 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 -
hi,
it seems to me like checked exceptions can't be thrown inside threads. is there any way to throw them? another question, even more important, is: where both runtime and checked exceptions end up in the case they occur inside a thread (within the run() method), that is, where in the code could i catch them?
thank you for the help.1. Of course you can throw a checked exception inside a Thread, you just can't let it escape the Run method. ;->
2. If an exception remains uncaught and propogrates outside of the run() method, the Thread will be stopped (since run() exited) and the Exception will be caught by the JVM and passed to the uncaughtException() method of the ThreadGroup to which that thread belongs. By default this method either propogates the call to its parent ThreadGroup or (if it is the outer most parent) will call Exception.printStackTrace() sending the output to stderr.
Chuck -
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:
subnetrxYou need to add via the Iterator (cast it to a ListIterator) not to the collection itself, otherwise the iterator will complain.
-
Catch exception inside function arguments
Class A is a core class in my application. When users create it with bad name format, they get an exception.
public class A{
public A(String name) throws FormatException{
// Check if the name the user entered is valid or not.
}But during the startup of my application I also create some instances of A. At startup time, any exception caught means that my source code is wrong: a bug on my own!
In this context I got myself with the following problem, how to catch an exception (that should not happen, because it comes from inside my source code) inside a function call:
// Create an instance of B that wraps A.
B b = B( new A("a_name_in_a_good_format") , some_other_parameter); // Possible exception from the constructor of A.Is there any way to catch that, or I'm obliged to create the instance of A before calling any function?
Edited by: ffrantz on Apr 1, 2010 10:15 AM
Edited by: ffrantz on Apr 1, 2010 10:17 AMThanks. I guess that is the only solution.
My problem is that I'm using that in the initialization of an enum, and there's no way to put that construction inside a try/catch block. Code looks like.
public static enum myReferenceInstancesToClone {
SIGNAL_MAGNITUDE(new C("mag"), some_other_parameters), // C extends A
SIGNAL_FREQUENCY(new D("freq"), some_other_parameters), // D extends A
RESISTIVITY (new A("R")), some_other_parameters),
INDUCTANCE (new A("L") , some_other_parameters),
CAPACITANCE (new A("C"), some_other_parameters);
// FIELDS
private A _referenceInstance;
private Object[] _refParameters; // A set of private fields that interest me
// METHODS
private OutputPropertiesA property, Object[] some_other_parameters){
_value = property;
_refParameters = some_other_parameters
// Other methods that are convenient to get fields.I'm doing it that way because i'm designing the data model for our application and it is uncertain what is the number and nature of properties that we will need to use. This construction with enums seemed good for me because:
1) Other designers can add properties in a single line. Without looking around on the rest of the source code.
2) The initialization process keeps probing the same enumeration, independent on the number/nature of the elements contained in it.
It is in this context that I cannot catch the exception thrown by the constructor of A:
public static enum myReferenceInstancesToClone {
SIGNAL_MAGNITUDE(new C("mag"), some_other_parameters), // Java compiler tells me I have an unhandled exception from 'new C()'
// ...If there is no way to catch that exception or propagate it.. then I'll do it with static arrays and static initialization blocks... but this means that I'll have to break my 'some_other_parameters' in different arrays. -
Ssrs report web service to save report as pdf throws error Soap exception unhandeled by user code
I am creating a C# web application to save an SSRS report as a pdf file on my local machine.
I added the ReportService web reference as RS2005 and ReportExecution2005 web reference as RE2005.
http://myServer/ReportServer_DEVPROJECT/ReportExecution2005.asmx?WSDL
http://myServer/ReportServer_DEVPROJECT/ReportService2005.asmx?WSDL
I created the following function SaveReport that is called on button click. My report can be accessed on the report server with the following url:
http://myServer/Reports_DEVPROJECT/Pages/Report.aspx?ItemPath=%2fData+Mgmt%2fSample+Letter
On the Report Manager home page the report link appears as "SAMPLE LETTER".
It is deployed in the DataMgmt folder on the Report Manager.
It uses a data source called "DS Letter" with option "Credentials stored securely in the report server"
My application gets compiled, but I get the following run time error:
Error: Soap exception unhandeled by user code. The item '/DataMgmt/Sample Letter' cannot be found. ---> Microsoft.ReportingService
s.Diagnostics.Utilities.ItemNotFoundException: The item '/DataMgmt/Sample Letter' cannot be found.
Please check my code and let me know what I can do to run this successfully. Once this is done, I would like to get help with passing a parameter (memberID) to the generate report for that member, through this application.
Thank You in advance for your help.
public static void SaveReport()
RS2005.ReportingService2005 rs;
RE2005.ReportExecutionService rsExec;
// Create a new proxy to the web service
rs = new RS2005.ReportingService2005();
rsExec = new RE2005.ReportExecutionService();
// Authenticate to the Web service using Windows credentials
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials;
rs.Url = "http://myServer/ReportServer_DEVPROJECT/ReportService2005.asmx";
rsExec.Url = "http://myServer/ReportServer_DEVPROJECT/ReportExecution2005.asmx";
string historyID = null;
string deviceInfo = null;
string format = "pdf";
Byte[] results;
string encoding = String.Empty;
string mimeType = String.Empty;
string extension = String.Empty;
RE2005.Warning[] warnings = null;
string[] streamIDs = null;
string fileName = @"c:\temp\samplerHAPeport.pdf";
string _reportName = @"/DataMgmt/Sample HAP Letter";
string _historyID = null;
bool _forRendering = false;
RS2005.ParameterValue[] _values = null;
RS2005.DataSourceCredentials[] _credentials = null;
RS2005.ReportParameter[] _parameters = null;
try
_parameters = rs.GetReportParameters(_reportName, _historyID, _forRendering, _values, _credentials);
RE2005.ExecutionInfo ei = rsExec.LoadReport(_reportName, historyID);
RE2005.ParameterValue[] parameters = new RE2005.ParameterValue[1];
if (_parameters.Length > 0)
//parameters[0] = new RE2005.ParameterValue();
//parameters[0].Label = "";
//parameters[0].Name = "";
//parameters[0].Value = "";
rsExec.SetExecutionParameters(parameters, "en-us");
results = rsExec.Render(format, deviceInfo,
out extension, out encoding,
out mimeType, out warnings, out streamIDs);
using (FileStream stream = File.OpenWrite(fileName))
stream.Write(results, 0, results.Length);
catch (Exception ex)
throw ex;
protected void BtnGenReport_Click(object sender, EventArgs e)
SaveReport();Hello Devster,
Thank you to post your question on TechNet forum.
After reviewing the whole post, I have a question to you. You can access the report via the link, http://myServer/Reports_DEVPROJECT/Pages/Report.aspx?ItemPath=%2fData+Mgmt%2fSample+Letter.
From the URL, I can see that the report is located at: /Data Mgmt/Sample Letter, instead of /DataMgmt/Sample Letter. In addition, I found that the target report is "/DataMgmt/Sample HAP Letter" instead of "/DataMgmt/Sample Letter" as the error described. I
am not sure whether you post out the correct code segment.
Please check the above things on your side, and hope it is helpful to you.
Regards,
Edward
Edward Zhu
TechNet Community Support
Maybe you are looking for
-
Transfer iTunes library to a new computer not working
I have authorized my new computer as stated in the apple support docs but not all songs are coming over. Only 21 of my 200+ are making it over....I get an error that says "some items could not be transfered b/c they are not authorized...please author
-
Uploaded blobs are not moving to RBS storage even RBS is enabled for this content db
Hi In a production environment RBS is configured for SharePoint content dbs , and sql server has failover clusters and alwayson Now each content db size is very huge : mdf file : 617 GB and .ndf file292 GB and RBS Storage is : 4,742,795 Files, 1
-
When someone calls their number doesnt displays on...
using 2 online numbers for uk and usa when someone calls me on usa number it shows me their number but when someone calls me on uk number skype doesn't show me their number how can i see their number someone please help
-
Process triggering wrong time ( Urgent ! )
We created a process and we want to trigger it when a button process. Process Name : PROCESS_CREATE_ORDER Button Name : P_CREATE_ORDER In Conditional Processing part of PROCESS_CREATE_ORDER When Button Pressed (Process After Submit When this Button i
-
I have the following: 1. Airport Express with 802.11n Wi-Fi (Version 7.3.2) 2. iPod Touch running Software Update 2.2 3. iPhone 3G 16GB running Software Update 2.2 My iPhone can connect to the Airport Express with no problems at all. The signal is ve