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/archive%40mail-archive.com
This email sent to [email protected]