You're using Java Client?  That thing is buggier than heck.  You'll have to
look into EODistributionContext.responseToClientMessage and see why it
calls undo and possibly override or replace it.

John

On Thu, Oct 9, 2014 at 9:54 AM, John Pollard <[email protected]> wrote:

> Soon after in the log file there is a follow-on exception...(sorry it is
> big)
> John
>
> Oct 03 12:02:13 MP[2016] DEBUG NSLog  - Server exception:
> rowDiffsForAttributes: snapshot in
> com.webobjects.eoaccess.EODatabaseOperation {_dbSnapshot = {}; _entity =
> "Transaction"; _newRow = {paySystemNumber =
> <com.webobjects.foundation.NSKeyValueCoding$Null>; dueDate = 2015-01-01
> 00:00:00 Etc/GMT; accountingDate = 2014-12-31 00:00:00 Etc/GMT;
> additionalReference = <com.webobjects.foundation.NSKeyValueCoding$Null>;
> dateTimeStamp = 2014-10-03 11:59:04 Etc/GMT; counterpartId = 180443;
> reference = "110125"; notifyState = "NN"; narrative = "MOG Advertising
> February"; transactionState = "OP"; counterpartRef = "MOG Thomas ?vreseth";
> source = <com.webobjects.foundation.NSKeyValueCoding$Null>; }; _object =
> "SO 110125"; _globalID = _EOIntegralKeyGlobalID[Transaction
> (java.lang.Integer)1535007]; _databaseOperator =
> "EODatabaseUpdateOperator"; } does not contain value for attribute named
> accountingDate with snapshot key: accountingDate
> [2014-10-3 12:2:13 GMT] <WorkerThread14> java.lang.IllegalStateException:
> rowDiffsForAttributes: snapshot in
> com.webobjects.eoaccess.EODatabaseOperation {_dbSnapshot = {}; _entity =
> "Transaction"; _newRow = {paySystemNumber =
> <com.webobjects.foundation.NSKeyValueCoding$Null>; dueDate = 2015-01-01
> 00:00:00 Etc/GMT; accountingDate = 2014-12-31 00:00:00 Etc/GMT;
> additionalReference = <com.webobjects.foundation.NSKeyValueCoding$Null>;
> dateTimeStamp = 2014-10-03 11:59:04 Etc/GMT; counterpartId = 180443;
> reference = "110125"; notifyState = "NN"; narrative = "MOG Advertising
> February"; transactionState = "OP"; counterpartRef = "MOG Thomas ?vreseth";
> source = <com.webobjects.foundation.NSKeyValueCoding$Null>; }; _object =
> "SO 110125"; _globalID = _EOIntegralKeyGlobalID[Transaction
> (java.lang.Integer)1535007]; _databaseOperator =
> "EODatabaseUpdateOperator"; } does not contain value for attribute named
> accountingDate with snapshot key: accountingDate
>         at
> com.webobjects.eoaccess.EODatabaseOperation.rowDiffsForAttributes(EODatabaseOperation.java:344)
>         at
> com.webobjects.eoaccess.EODatabaseContext.createAdaptorOperationsForDatabaseOperationAttributes(EODatabaseContext.java:5196)
>         at
> com.webobjects.eoaccess.EODatabaseContext.createAdaptorOperationsForDatabaseOperation(EODatabaseContext.java:5373)
>         at
> com.webobjects.eoaccess.EODatabaseContext.performChanges(EODatabaseContext.java:6188)
>         at
> com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditingContext(EOObjectStoreCoordinator.java:376)
>         at
> com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3192)
>         at er.extensions.eof.ERXEC._saveChanges(ERXEC.java:1179)
>         at er.extensions.eof.ERXEC.saveChanges(ERXEC.java:1102)
>         at
> com.webobjects.eodistribution.EODistributionContext$_RemoteMethodReceiver.clientSideRequestSave(EODistributionContext.java:1084)
>         at sun.reflect.GeneratedMethodAccessor210.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:622)
>         at com.webobjects.foundation.NSSelector.invoke(NSSelector.java:358)
>         at
> com.webobjects.foundation.NSSelector._safeInvokeSelector(NSSelector.java:110)
>         at
> com.webobjects.eodistribution.common._EOServerInvocation.doInvokeWithTarget(_EOServerInvocation.java:150)
>         at
> com.webobjects.eodistribution.EODistributionContext._processClientRequest(EODistributionContext.java:494)
>         at
> com.webobjects.eodistribution.EODistributionContext.responseToClientMessage(EODistributionContext.java:582)
>         at
> com.webobjects.eodistribution.WOJavaClientApplet.handleClientRequest(WOJavaClientApplet.java:978)
>         at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:622)
>         at
> com.webobjects.foundation.NSKeyValueCoding$ValueAccessor$1.methodValue(NSKeyValueCoding.java:636)
>         at
> com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(NSKeyValueCoding.java:1134)
>         at
> com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey(NSKeyValueCoding.java:1324)
>         at
> com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1736)
>         at
> com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValueCoding.java:447)
>         at
> com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.valueForKeyPath(NSKeyValueCodingAdditions.java:212)
>         at
> com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:1804)
>         at
> com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent(WOKeyValueAssociation.java:50)
>         at
> com.webobjects.appserver._private.WOGenericElement.invokeAction(WOGenericElement.java:121)
>         at
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODynamicGroup.java:105)
>         at
> com.webobjects.appserver._private.WOGenericContainer.invokeAction(WOGenericContainer.java:29)
>         at
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODynamicGroup.java:105)
>         at
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup.java:115)
>         at
> com.webobjects.appserver._private.WOConditional.invokeAction(WOConditional.java:86)
>         at
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODynamicGroup.java:105)
>         at
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup.java:115)
>         at
> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:1079)
>         at
> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOComponentReference.java:127)
>         at
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODynamicGroup.java:105)
>         at
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup.java:115)
>         at
> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:1079)
>         at
> com.webobjects.appserver.WOSession.invokeAction(WOSession.java:1357)
>         at
> com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java:1745)
>         at
> er.extensions.appserver.ajax.ERXAjaxApplication.invokeAction(ERXAjaxApplication.java:119)
>         at
> er.extensions.appserver.ERXApplication.invokeAction(ERXApplication.java:1988)
>         at
> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedPage(ERXComponentRequestHandler.java:157)
>         at
> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedSession(ERXComponentRequestHandler.java:235)
>         at
> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedApplication(ERXComponentRequestHandler.java:268)
>         at
> er.extensions.appserver.ERXComponentRequestHandler._handleRequest(ERXComponentRequestHandler.java:302)
>         at
> er.extensions.appserver.ERXComponentRequestHandler.handleRequest(ERXComponentRequestHandler.java:378)
>         at
> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
>         at
> er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:2109)
>         at
> er.extensions.appserver.ERXApplication.dispatchRequest(ERXApplication.java:2074)
>         at mpServer.Application.dispatchRequest(Application.java:168)
>         at
> com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144)
>         at
> com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:226)
>         at java.lang.Thread.run(Thread.java:701)
>
> On 9 Oct 2014, at 15:22, John Pollard <[email protected]> wrote:
>
> My trap set up in takeStoredValueForKey() for my intermittent has
> triggered reporting my bug where an attribute is being set to null.
> However, the stack trace below doesn't come from anywhere obvious in my
> code. It is server side processing a client request and for some reason
> there is an "undo" being triggered
> from WOJavaClientApplet.handleClientRequest()
>
> My trap fires off when the attribute is being changed from a non-null
> value to a null value, which should never happen, but it is.
>
> Furthermore, in my trap I make sure I don't call
> super.takeStoredValueForKey() if I can see the attribute is about to be set
> to null...but somehow the value is still being set to null on the database.
>
> Any thoughts welcome!
>
> John
>
> at mp.gen.Utils.getStackTraceAsString(Utils.java:2819)
> at mp.eo.Transaction.takeStoredValueForKey(Transaction.java:1920)
> at
> com.webobjects.eocontrol.EOCustomObject.updateFromSnapshot(EOCustomObject.java:581)
> at
> er.extensions.eof.ERXGenericRecord.updateFromSnapshot(ERXGenericRecord.java:1267)
> at
> com.webobjects.eocontrol.EOEditingContext._undoUpdate(EOEditingContext.java:1629)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:622)
> at com.webobjects.foundation.NSSelector.invoke(NSSelector.java:358)
> at
> com.webobjects.foundation.NSSelector._safeInvokeSelector(NSSelector.java:110)
> at
> com.webobjects.foundation.NSUndoManager$_NSUndoLightInvocation.invoke(NSUndoManager.java:1002)
> at
> com.webobjects.foundation.NSUndoManager$_NSUndoStack.popAndInvoke(NSUndoManager.java:1280)
> at
> com.webobjects.foundation.NSUndoManager.undoNestedGroup(NSUndoManager.java:733)
> at com.webobjects.foundation.NSUndoManager.undo(NSUndoManager.java:693)
> at
> com.webobjects.eodistribution.EODistributionContext.responseToClientMessage(EODistributionContext.java:627)
> at
> com.webobjects.eodistribution.WOJavaClientApplet.handleClientRequest(WOJavaClientApplet.java:978)
> at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:622)
> at
> com.webobjects.foundation.NSKeyValueCoding$ValueAccessor$1.methodValue(NSKeyValueCoding.java:636)
> at
> com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(NSKeyValueCoding.java:1134)
> at
> com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey(NSKeyValueCoding.java:1324)
> at com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1736)
> at
> com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValueCoding.java:447)
> at
> com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.valueForKeyPath(NSKeyValueCodingAdditions.java:212)
> at
> com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:1804)
> at
> com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent(WOKeyValueAssociation.java:50)
> at
> com.webobjects.appserver._private.WOGenericElement.invokeAction(WOGenericElement.java:121)
> at
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODynamicGroup.java:105)
> at
> com.webobjects.appserver._private.WOGenericContainer.invokeAction(WOGenericContainer.java:29)
> at
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODynamicGroup.java:105)
> at
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup.java:115)
> at
> com.webobjects.appserver._private.WOConditional.invokeAction(WOConditional.java:86)
> at
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODynamicGroup.java:105)
> at
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup.java:115)
> at com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:1079)
> at
> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOComponentReference.java:127)
> at
> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODynamicGroup.java:105)
> at
> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup.java:115)
> at com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:1079)
> at com.webobjects.appserver.WOSession.invokeAction(WOSession.java:1357)
> at
> com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java:1745)
> at
> er.extensions.appserver.ajax.ERXAjaxApplication.invokeAction(ERXAjaxApplication.java:119)
> at
> er.extensions.appserver.ERXApplication.invokeAction(ERXApplication.java:1988)
> at
> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedPage(ERXComponentRequestHandler.java:157)
> at
> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedSession(ERXComponentRequestHandler.java:235)
> at
> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedApplication(ERXComponentRequestHandler.java:268)
> at
> er.extensions.appserver.ERXComponentRequestHandler._handleRequest(ERXComponentRequestHandler.java:302)
> at
> er.extensions.appserver.ERXComponentRequestHandler.handleRequest(ERXComponentRequestHandler.java:378)
> at
> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
> at
> er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:2109)
> at
> er.extensions.appserver.ERXApplication.dispatchRequest(ERXApplication.java:2074)
> at mpServer.Application.dispatchRequest(Application.java:168)
> at
> com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144)
> at
> com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:226)
> at java.lang.Thread.run(Thread.java:701)
> On 12 Sep 2014, at 09:18, John Pollard <[email protected]> wrote:
>
> Hmm, hairy palms, not sure I want that, but thanks for this anyway. The
> related attribute is a to-one relationship, does that mean it is a FK
> attribute? It is the to-one relationship that becomes null against my will
> and I need to find out where/why.
>
> I have now cobbled some code up in takeStoredValueForKey() which avoids
> the recursion when checking the existing value using storedValueForKey() and
> ignores the (temp) null value caused by clearProperties() when the EO is
> invalidated. Hence I believe I now have the code to scream if my property
> is set to null from a pre-existing value and I should get an email + stack
> trace to report the exciting news. These intermittents are about once every
> two months so will have to wait.
>
> On 11 Sep 2014, at 23:04, Chuck Hill <[email protected]> wrote:
>
>  You are going to grow hair on your palms doing this but…
>
>  willRead();
> Object value = __dictionary().valueForKey(“your attribute”);
>
>  Should, I think, do what you want.  Of course, it is package protected
> so you will need to use reflection to get access.  And the result may be
> null if the object is still a fault.
>
>  Is this an FK or PK by chance?
>
>
>  Chuck
>
>
>
>
>
>   On 2014-09-11, 12:22 PM, "John Pollard" wrote:
>
>   Apologies, I meant takeStoredValueForKey(). Within there, how can I
> safely see what the value currently is when when this method is called,
> before I invoke super. takeStoredValueForKey() to take on the new value?
> John
>
>  On 11 Sep 2014, at 18:10, John Huss <[email protected]> wrote:
>
>  The order of calls is:
>
>  takeValueForKey -> setXXX -> takeStoredValueForKey
>
>  All of these maybe skipped except for takeStoredValueForKey, so that is
> the only one you should override to see what is getting saved.
>
>
> On Thu, Sep 11, 2014 at 8:55 AM, John Pollard <[email protected]> wrote:
>
>> Hi List,
>>
>> In some debugging within takeValueForKey() I want to find out if the key
>> already has a value set. If I call valueForKey() or storedValueForKey() and
>> the value isn't already set I get infinite recursion as it triggers a fault
>> and tries to load with takeValueForKey() and so on.
>>
>> I am trying to debug where a value is being set to null, but apparently
>> not going via validateXXX() or setXXX() methods, so I want to trap the case
>> where the takeValueForKey() is passed null when the key value was
>> previously non-null and log a stack trace.
>>
>> Thanks
>> John
>>  _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>>
>> https://lists.apple.com/mailman/options/webobjects-dev/johnthuss%40gmail.com
>>
>> This email sent to [email protected]
>
>
>
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
>
> https://lists.apple.com/mailman/options/webobjects-dev/john%40pollardweb.com
>
> This email sent to [email protected]
>
>
>
>  _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
>
> https://lists.apple.com/mailman/options/webobjects-dev/johnthuss%40gmail.com
>
> This email sent to [email protected]
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to