Coldfusion 10 and Transfer ORM?

479 views
Skip to first unread message

Brian G

unread,
Mar 20, 2013, 6:02:44 PM3/20/13
to transf...@googlegroups.com

I'm migrating my app from CF8 to CF10 and will be replacing Transfer with ORM.  However, in my testing, I'm getting some strange behaviors and I want to know if anyone else has run Transfer on CF10?   I'm getting an error:

Could not find 'club.clubmembertype' in '/var/www/pukka/main-prod/config/transfer/transfer.xml'.

When I try to run:

<cfreturn variables.transfer.listByPropertyMap("club.clubmembertype", arguments, "sntOrderBy") />

This transfer configuration file has not changed and it's running fine on CF8.  I can look at it and confirm that the type club.clubmembertype is in there.

The actual error happens here:

/var/www/pukka/shared-prod/transfer/com/object/exception/TransferObjectNotFoundException.cfc:31
/var/www/pukka/shared-prod/transfer/com/object/ObjectDAO.cfc:71
/var/www/pukka/shared-prod/transfer/com/object/ObjectManager.cfc:61
/var/www/pukka/shared-prod/transfer/com/sql/TransferGateway.cfc:109
/var/www/pukka/shared-prod/transfer/com/sql/SQLManager.cfc:138
/var/www/pukka/shared-prod/transfer/com/Transfer.cfc:513
/var/www/pukka/shared-prod/model/club/clubService.cfc:706 (where the listByPropertyMap is)

Any thoughts?  I know we're way beyond the life of the library (and thanks to Mark for getting us so far) but we can't really start using ORM until we upgrade from 8 and we can't upgrade from 8 until we can run our app as it stands today on the new system?


Brian


Brian G

unread,
Mar 20, 2013, 7:01:25 PM3/20/13
to transf...@googlegroups.com

I'll share a few more odd errors just to add context.  I restarted the app (refreshed Transfer) and now several pages that use Transfer (but not all pages) are failing with:

Expression: Unable to process the result of the XMLSearch for ''.

ColdFusion is unable to process the result of the XPath search. You may have an undefined variable in the xpath expression.

  • /var/www/pukka/shared-prod/transfer/com/io/XMLFileReader.cfc (52, CF_CFPAGE)
  • /var/www/pukka/shared-prod/transfer/com/object/ObjectGateway.cfc (103, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/object/ObjectManager.cfc (294, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/object/ObjectManager.cfc (66, CF_UDFMETHOD)
  • /var/www/pukka/shared-prod/transfer/com/sql/TransferGateway.cfc (109, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/sql/SQLManager.cfc (138, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/Transfer.cfc (513, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/model/club/clubService.cfc (706, CF_TEMPLATEPROXY)

Restarted, this time the random error is:

The requested object could not be found in the config file

Could not find 'theme.theme' in '/var/www/pukka/main-prod/config/transfer/transfer.xml'.
 
The error occurred in /var/www/pukka/shared-prod/transfer/com/exception/Exception.cfc: line 30
Called from /var/www/pukka/shared-prod/transfer/com/object/exception/TransferObjectNotFoundException.cfc: line 31
Called from /var/www/pukka/shared-prod/transfer/com/object/ObjectDAO.cfc: line 71
Called from /var/www/pukka/shared-prod/transfer/com/object/ObjectManager.cfc: line 61
Called from /var/www/pukka/shared-prod/transfer/com/dynamic/KeyRationalise.cfc: line 41
Called from /var/www/pukka/shared-prod/transfer/com/dynamic/DynamicManager.cfc: line 59
Called from /var/www/pukka/shared-prod/transfer/com/Transfer.cfc: line 701
Called from /var/www/pukka/shared-prod/transfer/com/Transfer.cfc: line 98
Called from /var/www/pukka/shared-prod/model/theme/themeService.cfc: line 68


And

Could not find 'event.event' in '/var/www/pukka/main-prod/config/transfer/transfer.xml'.

  • /var/www/pukka/shared-prod/transfer/com/exception/Exception.cfc (30, CFTHROW)
  • /var/www/pukka/shared-prod/transfer/com/object/exception/TransferObjectNotFoundException.cfc (31, CF_UDFMETHOD)
  • /var/www/pukka/shared-prod/transfer/com/object/ObjectDAO.cfc (71, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/object/ObjectManager.cfc (61, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/dynamic/KeyRationalise.cfc (41, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/dynamic/DynamicManager.cfc (59, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/Transfer.cfc (701, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/Transfer.cfc (98, CF_UDFMETHOD)
  • /var/www/pukka/shared-prod/model/event/eventGateway.cfc (138, CF_TEMPLATEPROXY)

Bizarre-o. 

Hopefully I'm not the last person using this and someone can help?  Otherwise I am paying for extra servers until I can rewrite the (significantly-sized) app to use ORM. :(

Matt Quackenbush

unread,
Mar 20, 2013, 7:33:24 PM3/20/13
to transf...@googlegroups.com
I can't help you with CF10 (have never even looked at it; hopefully never will), but perhaps you can run the Transfer-powered app on a Railo instance while you're building out the CF10 ORM-powered app?  I've heard that some folks have had success running Transfer on Railo 3.x. You could run it as a WAR and should be able to stand CF10 up alongside it.

HTH



--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Mark Mandel

unread,
Mar 20, 2013, 7:39:38 PM3/20/13
to transf...@googlegroups.com
That seems super weird, it's all pretty standard Xpath and XMLSearch.

I'd suggest having a poke around in ObjectDAO, and see what is going on in getObject() with the xpath that is generated and what result comes back.


Mark

Don Quist

unread,
Mar 20, 2013, 7:41:47 PM3/20/13
to transf...@googlegroups.com
CF10 added support for xpath 2.0, but kind of borked the 1.0 implementation, that might be the cause, see: http://www.cfdad.com/2012/08/24/coldfusion-10-broken-xmlsearch/ and other google searches for xmlpath changes in cf10
- Don Quist
www.SigmaProjects.org

Brian G

unread,
Mar 20, 2013, 7:59:52 PM3/20/13
to transf...@googlegroups.com
Matt - thanks for the suggestion but this is a very ACF app (cfdocument, other stuff).

Mark - thanks, I've added some debugging but now I can't get it to break, of course.  I don't see unit tests in the SVN repo but I believe you have them.  Can you email them to me and I will run them against CF10?


Brian

Mark Mandel

unread,
Mar 20, 2013, 8:02:18 PM3/20/13
to transf...@googlegroups.com

On Thu, Mar 21, 2013 at 10:59 AM, Brian G <brian-...@vfive.com> wrote:
Mark - thanks, I've added some debugging but now I can't get it to break, of course.  I don't see unit tests in the SVN repo but I believe you have them.  Can you email them to me and I will run them against CF10?

Brian G

unread,
Mar 20, 2013, 8:19:04 PM3/20/13
to transf...@googlegroups.com

Thanks - I see them now.

I'm noticing... I think I am still tracking the pluggable_cache branch as my external but the riaforge repo looks like there have been some subsequent updates (maybe a small handful).  Was the pluggable_cache stuff ever folded back into the trunk (for ehcache)?

Should I switch back to trunk?


Brian

Mark Mandel

unread,
Mar 20, 2013, 8:22:46 PM3/20/13
to transf...@googlegroups.com
No they weren't, but I'm pretty sure the unit tests where exactly the same.

I'd stick with what works for you to be honest.

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Jeremy Firsenbaum

unread,
Mar 20, 2013, 8:32:09 PM3/20/13
to transf...@googlegroups.com
Brian - I've had Transfer running on CF10 in production for close to a year now. If I recall correctly the only change I had to make to the newer ehcache-based version of transfer is this:

com.factory.CFMLVersion.cfc 
change line 40 to:
if(server.coldfusion.productversion.startsWith("8") OR server.coldfusion.productversion.startsWith("9") OR server.coldfusion.productversion.startsWith("10"))

Hope that helps,
Jeremy


Mark Mandel

unread,
Mar 20, 2013, 8:51:19 PM3/20/13
to transf...@googlegroups.com
Oooh yeah. I'd forgotten about that.

Mark

Brian G

unread,
Mar 20, 2013, 9:01:07 PM3/20/13
to transf...@googlegroups.com

I'm lucky I suppose - mine already has that. :)  Thank you Jeremy!

On Wednesday, March 20, 2013 5:32:09 PM UTC-7, Jeremy wrote:
Brian - I've had Transfer running on CF10 in production for close to a year now. If I recall correctly the only change I had to make to the newer ehcache-based version of transfer is this:

com.factory.CFMLVersion.cfc 
change line 40 to:
if(server.coldfusion.productversion.startsWith("8") OR server.coldfusion.productversion.startsWith("9") OR server.coldfusion.productversion.startsWith("10"))


Trying to figure out how to get the unit tests to run... I think I created the DB and have cfunit installed properly but they seem to spin but nothing is executing.  will see if that turns up anything.
Message has been deleted

Brian G

unread,
Mar 26, 2013, 3:21:35 PM3/26/13
to transf...@googlegroups.com
Ok, let me throw out an oddity... and see if anyone can help me think through where to log to understand what is happening:

I have an object, event.event, it has a property, uidRegistrar.  I'm trying to create an event object and the decorate has a configure() that sets it null: setUidRegistrarNull().  Been in production for 3 years, all good.  On CF10 however, I'm getting:

transfer.com.object.exception.PropertyNotFoundException: The property that was searched for could not be found

The property 'uidregistrar' could not be found in the object 'event.event'

  • /var/www/pukka/shared-prod/transfer/com/exception/Exception.cfc (30, CFTHROW)
  • /var/www/pukka/shared-prod/transfer/com/object/exception/PropertyNotFoundException.cfc (29, CF_UDFMETHOD)
  • /var/www/pukka/shared-prod/transfer/com/object/Object.cfc (233, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/sql/Nullable.cfc (307, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/sql/Nullable.cfc (175, CF_UDFMETHOD)
  • /var/www/pukka/shared-prod/generated/event.event$9BAD77B8699F80787CCAB85B8FEC651C.transfer (212, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/generated/event.event@9BAD77B8699F80787CCAB85B8FEC651C.transfer (408, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/model/event/event.cfc (36, CF_UDFMETHOD)
  • /var/www/pukka/shared-prod/transfer/com/TransferDecorator.cfc (46, CF_UDFMETHOD)
  • /var/www/pukka/shared-prod/transfer/com/Transfer.cfc (77, CF_TEMPLATEPROXY)
  • /var/www/pukka/shared-prod/transfer/com/Transfer.cfc (113, CF_UDFMETHOD)
  • /var/www/pukka/shared-prod/model/event/eventGateway.cfc (138, CF_TEMPLATEPROXY)

Now, as I've mentioned, I'm really, really confident that the property is defined in transfer.xml. :) 

Now here's the curious part.  In the file /var/www/pukka/shared-prod/
generated/event.event$9BAD77B8699F80787CCAB85B8FEC651C.transfer, the methods setuidregistrar, getuidregistrar and setuidregistrarnull are all defined.   It's this getNullable().getNullUUID(getClassName(), "uidregistrar") line that is throwing the error:


<cffunction name="setuidregistrarNull" access="public" returntype="void" default="void" hint="Set uidregistrar to its NULL value'" output="false">
<cfscript>
var nullValue = getNullable().getNulluuid(getClassName(), "uidregistrar");
setuidregistrar(nullValue);
</cfscript>
</cffunction>

So in Nullable.cfc, hasNullValue() tries to get the uidregistrar property on event.event:

var property = object.getPropertyByName(arguments.propertyName);

And it fails to find it in the property map inside Object.cfc:

<cffunction name="getPropertyByName" hint="Gets a property by name. Throws PropertyNotFoundException if the property doesn't exist" access="public" returntype="Property" output="false">
    <cfargument name="name" hint="The name of the property" type="string" required="Yes">
    <cfscript>
        var map = getPropertyMap();

        if(StructKeyExists(map, arguments.name))
        {
            return map[arguments.name];
        }

        if(getPrimaryKey().getName() eq arguments.name)
        {
            return getPrimaryKey();
        }
       
        createObject("component", "transfer.com.object.exception.PropertyNotFoundException").init(getClassName(), arguments.name);
    </cfscript>
</cffunction>

So the error is then thrown.  Clearly impossible, I would think, for Transfer to know the property exists and generate the transfer file with the generated methods but then not know it exists when I try to retrieve it and throws an error.  Unfortunately it's happening. :)

So... what I want to know is, is there a way to get at Transfer's configuration after it's parsed by XMLFileReader and dump it somehow?  How can I get a reference to what Transfer thinks is the current configuration and view it to see how it matches/differs what is in transfer.xml?  I know it shouldn't be different, but it is, so at least finding out if there's anything consistent in the failure would get me pointed towards a possible solution.


Brian

Mark Mandel

unread,
Mar 26, 2013, 6:05:50 PM3/26/13
to transf...@googlegroups.com


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Brian G

unread,
Mar 26, 2013, 7:09:31 PM3/26/13
to transf...@googlegroups.com

Thanks, will use that to introspect next time I have a blow-up.  And you know it wouldn't be me unless it was some crazy edge case! :)

Mark Mandel

unread,
Mar 26, 2013, 7:12:48 PM3/26/13
to transf...@googlegroups.com
... Just when I think I've heard the last call for Transfer ;o)

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Mark Mandel

unread,
Mar 26, 2013, 7:13:51 PM3/26/13
to transf...@googlegroups.com
FYI - if you (or anyone else gets it working) and has it up on Github somewhere, lemme know, I'll make some links to it on the Documentation pages.

Mark

Brian G

unread,
Mar 27, 2013, 4:41:39 PM3/27/13
to transf...@googlegroups.com

On Tuesday, March 26, 2013 4:12:48 PM UTC-7, Mark Mandel wrote:
... Just when I think I've heard the last call for Transfer ;o)

I would pay for a Migration-to-ORM guide... hint hint.  It would save me from floundering around and the gotchas I'm sure related to relationships and caching.

Mark Mandel

unread,
Mar 27, 2013, 6:25:24 PM3/27/13
to transf...@googlegroups.com
There have been some posts on list of people who have done exactly that. Pretty sure some people wrote some generators to handle it too, although I'm not sure if anyone published them.

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Brian G

unread,
Mar 27, 2013, 8:31:10 PM3/27/13
to transf...@googlegroups.com

In my searching I have uncovered people planning to do it or saying they did it but no real specifics other than "to use abstract classes". 

Mark Mandel

unread,
Mar 27, 2013, 8:33:33 PM3/27/13
to transf...@googlegroups.com
See! Easy solution! ;) Use abstract classses :)

* ducks and hides *

Sorry, couldn't resist.

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Brian G

unread,
Apr 1, 2013, 5:15:47 PM4/1/13
to transf...@googlegroups.com

Ok, so I let the app run for a few days and now I'm getting errors while trying to basically instantiate Transfer objects.  I've made some changes to public/private packaging so I can get at the Transfer configuration and here's what's happening:

<cfset orm = application.cs.getBean("ormService") />
<cfset t = orm.getTransfer() />
<cfset objMgr = t.getObjectManager() />
<cfset to = objMgr.getObject("event.event") />

<cfdump var="#t.getObjectManager().getObjectGateway().listClasses()#" label="array of classes in definitions" />

<cfset objDAO = objMgr.getObjectDAO() />
<cfset empty = objMgr.createEmptyObject() />
<cfset objDAO.getObject(empty, "event.event") />

<cfset xmlFileReader = objDAO.getConfigReader() />
<cfset xml = xmlFileReader.getXMLCollection() />
<cfdump var="#xml#" label="shows the XML in memory read by transfer" top="1" />


I can get up to the point where I getXMLCollection(). As soon as I try to navigate it with cfdump or anything else, I get a very terse "err" with a stack overflow:

Stack Trace

java.lang.StackOverflowError at net.sf.saxon.serialize.XMLEmitter.writeCharSequence(XMLEmitter.java:652) at net.sf.saxon.serialize.XMLEmitter.writeEscape(XMLEmitter.java:745) at net.sf.saxon.serialize.XMLEmitter.characters(XMLEmitter.java:591) at net.sf.saxon.serialize.UncommittedSerializer.characters(UncommittedSerializer.java:67) at net.sf.saxon.event.ProxyReceiver.characters(ProxyReceiver.java:186) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:172) at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:235) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:150) at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:235) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:150) at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:235) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:150) at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:235) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:150) at

And the walkNode just repeats to infinity and the request fails.

Interestingly I can do <cfdump var="#xmlFileReader.search("/transfer/objectDefinitions/package[@name='event']/object[@name='event']")#" label="Searching for event.event in the config reader" />

which works and behind the scenes that uses getXMLCollection(), but something is borked.  Interestingly if I try changing that search, all of these fail with the same stackoverflow error:

xmlFileReader.search("/transfer/objectDefinitions/package")
xmlFileReader.search("/transfer/objectDefinitions")
xmlFileReader.search("//objectDefinitions/package")
xmlFileReader.search("//objectDefinitions")

These all failed with a slightly different but XML-related error:

java.lang.StackOverflowError at org.apache.xerces.dom.ParentNode.item(Unknown Source) at net.sf.saxon.dom.NodeWrapper$ChildEnumeration.skipFollowingTextNodes(NodeWrapper.java:1166) at net.sf.saxon.dom.NodeWrapper$ChildEnumeration.next(NodeWrapper.java:1194) at net.sf.saxon.tree.util.Navigator$EmptyTextFilter.next(Navigator.java:918) at net.sf.saxon.tree.util.Navigator$DescendantEnumeration.advance(Navigator.java:1052) at net.sf.saxon.tree.util.Navigator$DescendantEnumeration.advance(Navigator.java:1111) at net.sf.saxon.tree.util.Navigator$BaseEnumeration.next(Navigator.java:949) at net.sf.saxon.tree.util.Navigator$DescendantEnumeration.advance(Navigator.java:1043) at  (which repeats until the end)

I've gotten to the point where I can access a messed up XMLCollection.  Any suggestions on how to traverse the collection looking for what appears to be a recursive problem?

(thinking about it, maybe I'm not supposed to be able to dump it because of links and m2o, o2m, etc?)


Brian

Mark Mandel

unread,
Apr 1, 2013, 8:02:53 PM4/1/13
to transf...@googlegroups.com
What's the actual error you get from Transfer when trying to create the object?

Seems like the error from the XML dump may be a red herring.

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Brian G

unread,
Apr 1, 2013, 9:18:38 PM4/1/13
to transf...@googlegroups.com

That could be - but since the stack trace just loops infinitely, I can't see where the error is occurring.  I'm not getting any errors in exception or coldfusion-out.log either. I get a single line in application.log that says:

"Error","ajp-bio-8016-exec-10","03/31/13","20:48:26",,"" 

FWIW, the error from the XML dump is the same one that I get when trying to process these two objects.  The code is pretty basic... load two objects, create another two, set some properties, save the two new ones and delete the two existing ones.  But it's spread across a few MG controller methods which makes it kind of hard to pin point.  I'll see if I can figure out a way to replicate in a test script.


Brian

Mark Mandel

unread,
Apr 1, 2013, 9:38:18 PM4/1/13
to transf...@googlegroups.com
In the stack overflow - is there any CF code being processed?

Mark

Brian G

unread,
Apr 2, 2013, 12:11:14 AM4/2/13
to transf...@googlegroups.com


On Monday, April 1, 2013 6:38:18 PM UTC-7, Mark Mandel wrote:
In the stack overflow - is there any CF code being processed?

Mark


Stack trace is just filled with the repetitive XML processing error.  It never shows any CFML templates/codes/lines/etc.  Makes it pretty hard to diagnose??

I'm going to try and replicate the code in my controllers/methods and push it live and see if I can get it to take.  It's hard to isolate it as restarting the server would likely make *this* issue go away but some other one pop up in a few days.  I think I'm going to start taking Ruby classes. :)


Brian

Mark Mandel

unread,
Apr 2, 2013, 12:22:39 AM4/2/13
to transf...@googlegroups.com
Yeah, this sounds like a bizarre issue with the XML parser.

JRuby is very nice though ;)

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Brian G

unread,
Apr 2, 2013, 11:40:15 PM4/2/13
to transf...@googlegroups.com

On Monday, April 1, 2013 9:22:39 PM UTC-7, Mark Mandel wrote:
Yeah, this sounds like a bizarre issue with the XML parser.

 Ok, through brute debugging, I've figured out a single line of code that can replicate the issue getting all the way down into the guts of Transfer where XmlSearch is used.  Note you can't normally get at the xmlFileReader I don't think so I adjusted some public/private settings so I could get at it:

<cfdump var="#xmlFileReader.search("/transfer/objectDefinitions//manytomany[link[@to='calendar.submit']]")#"  label="Searching for event.event in the config reader" />

This is blowing up with this stack trace on my future production CF server but NOT in my local cf10 development environment.  It's starting to look like perhaps XmlSearch has issues but there is something else at play here in that the XML, at one point works, and over time becomes corrupt somehow leading Transfer's xpath query to fail.

Mark - is there anyway to trigger transfer to reload and reparse the XML without blowing it away that would let me see if just the in-memory version is corrupt?  E.g., run it, get the error, refresh it, run it, and see if the error disappears?

Here's the stack trace I captured in the process of blowing up:

"ajp-bio-8016-exec-6" daemon prio=10 tid=0x00007f90e4006000 nid=0x2889 runnable [0x00007f9233483000]
   java.lang.Thread.State: RUNNABLE
        at net.sf.saxon.tree.util.Navigator$BaseEnumeration.next(Navigator.java:949)
        at net.sf.saxon.tree.util.Navigator$AxisFilter.next(Navigator.java:879)
        at net.sf.saxon.expr.ContextMappingIterator.next(ContextMappingIterator.java:54)
        at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:61)
        at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:44)
        at net.sf.saxon.value.SequenceExtent.<init>(SequenceExtent.java:103)
        at net.sf.saxon.value.SequenceExtent.makeSequenceExtent(SequenceExtent.java:139)
        at net.sf.saxon.s9api.XPathSelector.evaluate(XPathSelector.java:112)
        at coldfusion.xml.XmlProcessor.doSearch(XmlProcessor.java:738)
        at coldfusion.xml.XmlProcessor.search(XmlProcessor.java:598)
        at coldfusion.runtime.CFPage.XmlSearch(CFPage.java:390)
        at coldfusion.runtime.CFPage.XmlSearch(CFPage.java:400)
        at cfXMLFileReader2ecfc1039307985$funcSEARCH.runFunction(/var/www/pukka/shared-prod/transfer/com/io/XMLFileReader.cfc:52)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfObjectGateway2ecfc1656735702$funcGETMANYTOMANYLINKSBYCLASSLINKTO.runFunction(/var/www/pukka/shared-prod/transfer/com/object/ObjectGateway.cfc:43)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfObjectManager2ecfc2128882337$funcGETMANYTOMANYLINKSBYCLASSLINKTO.runFunction(/var/www/pukka/shared-prod/transfer/com/object/ObjectManager.cfc:263)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfTransferDeleter2ecfc986181987$funcBUILDDELETEALLMANYTOMANY.runFunction(/var/www/pukka/shared-prod/transfer/com/sql/TransferDeleter.cfc:140)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2659)
        at cfTransferDeleter2ecfc986181987$funcDELETEALLMANYTOMANY.runFunction(/var/www/pukka/shared-prod/transfer/com/sql/TransferDeleter.cfc:115)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2659)
        at cfTransferDeleter2ecfc986181987$funcDELETEBLOCK.runFunction(/var/www/pukka/shared-prod/transfer/com/sql/TransferDeleter.cfc:61)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:518)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2624)
        at cfTransaction2ecfc611167087$func__INVOKE.runFunction(/var/www/pukka/shared-prod/transfer/com/sql/transaction/Transaction.cfc:210)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfTransaction2ecfc611167087$funcEXECUTE.runFunction(/var/www/pukka/shared-prod/transfer/com/sql/transaction/Transaction.cfc:81)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfTransferDeleter2ecfc986181987$funcDELETE.runFunction(/var/www/pukka/shared-prod/transfer/com/sql/TransferDeleter.cfc:45)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfSQLManager2ecfc624995107$funcDELETE.runFunction(/var/www/pukka/shared-prod/transfer/com/sql/SQLManager.cfc:78)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfTransfer2ecfc1410968147$funcDELETE.runFunction(/var/www/pukka/shared-prod/transfer/com/Transfer.cfc:272)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfcalendarService2ecfc225143489$funcDELETECALENDARSUBMIT.runFunction(/var/www/pukka/shared-prod/model/calendar/calendarService.cfc:796)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:518)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:660)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:469)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2373)
        at cfCalendarController2ecfc281015752$funcDOPROCESSSUGGESTEDEVENTS.runFunction(/var/www/pukka/main-prod/controller/CalendarController.cfc:552)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:518)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:660)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:469)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2373)
        at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:402)
        at cfEventContext2ecfc2096542230$funcEXECUTEEVENTHANDLER.runFunction(/var/www/pukka/shared-prod/ModelGlue/gesture/eventrequest/EventContext.cfc:326)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2659)
        at cfEventContext2ecfc2096542230$funcEXECUTEEVENTQUEUE.runFunction(/var/www/pukka/shared-prod/ModelGlue/gesture/eventrequest/EventContext.cfc:253)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfInvocation2ecfc761226761$funcEXECUTE.runFunction(/var/www/pukka/shared-prod/ModelGlue/gesture/eventrequest/phase/Invocation.cfc:91)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfEventContextWithOnQueueComplete2ecfc1405530807$funcEXECUTE.runFunction(/var/www/pukka/shared-prod/model/framework/EventContextWithOnQueueComplete.cfc:43)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfModelGlue2ecfc2040633993$funcHANDLEREQUEST.runFunction(/var/www/pukka/shared-prod/ModelGlue/gesture/ModelGlue.cfc:243)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432)
        at cfModelGlue2ecfm2040634015.runPage(/var/www/pukka/shared-prod/ModelGlue/gesture/ModelGlue.cfm:83)
        at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
        at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444)
        at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2799)
        at cfindex2ecfm1319673318.runPage(/var/www/pukka/main-prod/admin/index.cfm:29)
        at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
        at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444)
        at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
        at coldfusion.filter.IpFilter.invoke(IpFilter.java:64)
        at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:422)
        at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
        at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
        at coldfusion.filter.PathFilter.invoke(PathFilter.java:112)
        at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
        at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
        at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
        at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
        at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
        at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
        at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
        at coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:151)
        at coldfusion.CfmServlet.service(CfmServlet.java:219)
        at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
        at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414)
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:204)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
        - locked <0x00000006aa95cbc8> (a org.apache.tomcat.util.net.SocketWrapper)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:722)




Mark Mandel

unread,
Apr 2, 2013, 11:47:51 PM4/2/13
to transf...@googlegroups.com
Try/catch inside the XMLFileReader - if it overflows, then load up the path again. It knows where the XML file is, so it can always try it again.

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Brian G

unread,
Apr 3, 2013, 12:30:52 PM4/3/13
to transf...@googlegroups.com

On Tuesday, April 2, 2013 8:47:51 PM UTC-7, Mark Mandel wrote:
Try/catch inside the XMLFileReader - if it overflows, then load up the path again. It knows where the XML file is, so it can always try it again.

That did it... on my wedged future production server, first I ran the code that generated the stack overflow - still failed.  Then I ran this:


<cfset orm = application.cs.getBean("ormService") />
<cfset xmlFileReader = orm.getTransfer().getObjectManager().getObjectDAO().getConfigReader() />
<cfdump var="#arrayLen(xmlFileReader.getXMLCollection())#" label="pre-reload, num of xml files" />
<cfset xmlFileReader.addXML('/var/www/pukka/main-prod/config/transfer/transfer.xml', true) />
<cfdump var="#arrayLen(xmlFileReader.getXMLCollection())#" label="post-reload, num of xml files" />

Then I re-ran the borked code and actually it still failed.  The overwrite flag true here doesn't overwrite it only prepends to the array of XML files so the search still failed when it hit the original, somehow jacked up, XML file.  I manually killed it with arrayDeleteAt(getXMLCollection(), 2) and then re-ran my error-generating code and it worked fine.

I'm not sure how to report this... clearly something is fubar'd and it looks like a bug in CF but it's not reproducible in the traditional sense.  For now, I'm going to wrap the xmlsearch with a try/catch and see if that works? 

Thanks for the help Mark.


Mark Mandel

unread,
Apr 3, 2013, 5:32:13 PM4/3/13
to transf...@googlegroups.com
Why not do the try catch in here:

LIne 42 of the search?

Rather than outside?

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Brian G

unread,
Apr 3, 2013, 9:05:27 PM4/3/13
to transf...@googlegroups.com

That is where I'm doing it - but I wanted to test in prod that reloading the XML did indeed fix the problem, and it did.

Here's what I wound up with in XMLFileReader.cfc:

try
{
    results.addAll(xmlSearch(collection[counter], arguments.xpath));
}
catch (any ex)
{
    // flush the XML and try again
    setXMLCollection(arrayNew(1));
    path = listToArray(getPathList());

    for (p in path)
    {
        addXML(p);
    }

    writeLog(type="Error", file="transfer-xml", text="Failed to XmlSearch(#arguments.xpath#) in XMLFileReader.cfc, reloaded #arrayLen(path)# XML Files, trying again against #arrayLen(getXMLCollection())# loaded configurations... [#ex.type#] #ex.message#");

    // now re-search the XML
    results.addAll(xmlSearch(collection[counter], arguments.xpath));
}

I think that will do the trick for this particular issue.  I mean, it will work around whatever is really going on, at least for now.  Fingers crossed.

Mark Mandel

unread,
Apr 3, 2013, 9:06:05 PM4/3/13
to transf...@googlegroups.com
Ah cool!

Hope it works for you!

MArk

Brian G

unread,
Apr 17, 2013, 1:40:13 PM4/17/13
to transf...@googlegroups.com

Just a note to all - the errors I have been experiencing have all been on Java 7 with CF10.  I downgraded to Java 6 on a hunch and for the last week I have not had a single error.  My issues were random so I couldn't build a simple test case that would trigger it but I could reliably probe it once it had broken and demonstrate that XML objects in memory or XMLSearches against objects in persisted scopes were getting corrupted/lost.

I would be VERY cautious about upgrading any CF10 applications using Transfer/Coldspring/Model-Glue or other XML-dependent apps to Java 7 on CF10. 


Brian

Mark Mandel

unread,
Apr 17, 2013, 7:14:10 PM4/17/13
to transf...@googlegroups.com
Iiiiinteresting!

Mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
 
---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Dave

unread,
Apr 21, 2013, 3:40:35 PM4/21/13
to transf...@googlegroups.com
Has anyone confirmed this is also a problem with transfer on CF9/Java 1.7?

dave


On Thursday, 21 March 2013 09:02:44 UTC+11, Brian G wrote:

I'm migrating my app from CF8 to CF10 and will be replacing Transfer with ORM.  However, in my testing, I'm getting some strange behaviors and I want to know if anyone else has run Transfer on CF10?   I'm getting an error:

Could not find 'club.clubmembertype' in '/var/www/pukka/main-prod/config/transfer/transfer.xml'.

When I try to run:

<cfreturn variables.transfer.listByPropertyMap("club.clubmembertype", arguments, "sntOrderBy") />

This transfer configuration file has not changed and it's running fine on CF8.  I can look at it and confirm that the type club.clubmembertype is in there.

The actual error happens here:

/var/www/pukka/shared-prod/transfer/com/object/exception/TransferObjectNotFoundException.cfc:31
/var/www/pukka/shared-prod/transfer/com/object/ObjectDAO.cfc:71
/var/www/pukka/shared-prod/transfer/com/object/ObjectManager.cfc:61
/var/www/pukka/shared-prod/transfer/com/sql/TransferGateway.cfc:109
/var/www/pukka/shared-prod/transfer/com/sql/SQLManager.cfc:138
/var/www/pukka/shared-prod/transfer/com/Transfer.cfc:513
/var/www/pukka/shared-prod/model/club/clubService.cfc:706 (where the listByPropertyMap is)

Any thoughts?  I know we're way beyond the life of the library (and thanks to Mark for getting us so far) but we can't really start using ORM until we upgrade from 8 and we can't upgrade from 8 until we can run our app as it stands today on the new system?


Brian


Janise Daylin

unread,
Mar 31, 2014, 3:13:10 PM3/31/14
to transf...@googlegroups.com
I am a year late - but running into a similar issue.  Went from CF8 with Transfer to CF10 with Transfer until I can get time to redesign.  Getting "requested object could not be found in the config file" (when it exists) or "unable to process the result of the XMLSearch".  If I refresh the page 2-12 times the errors disappear.  I tried the try/catch in XMLFileReader but that didn't resolve the errors.  I have a ticket open with Adobe but would love insight from anyone else that's resolved the issue or might give me some hints on where to look to resolve it.

Janise

Brian G

unread,
Mar 31, 2014, 4:23:42 PM3/31/14
to transf...@googlegroups.com

Janise, are you on Java 7 or Java 6?  I found Java 6 made my issues far less problematic but it still happens at least 50% of the time when I start up my app.  I just made some changes to this recently actually, here's what I have right now:


<cffunction name="search" hint="Searches the xml via an xpath" access="public" returntype="array" output="false">
    <cfargument name="xpath" hint="The xpath to search under" type="string" required="Yes">
    <cfscript>
        var results = ArrayNew(1);
        var res = arrayNew(1);
        var len = arrayLen(getXMLCollection());
        var counter = 1;
        var collection = getXMLCollection();
        var path = "";
        var p = "";

        for(; counter lte len; counter = counter + 1)
        {

            try
            {
                results.addAll(xmlSearch(collection[counter], arguments.xpath));
            }
            catch (any ex)
            {
                // ok, let's serialize the XML as it exists so we can capture it
                writeLog(type="Error", file="transfer-xml", text="Failed to XMLSearch(#arguments.xpath#) in XMLFileReader.cfc due to: [#ex.type#] #ex.message#, check transfer-xml.serialized for a string representation of the XML file");
                writeLog(type="Error", file="transfer-xml-serialized", text = toString(collection[counter]));


                // flush the XML and try again
                path = listToArray(getPathList());
                setXMLCollection(arrayNew(1));
                setPathList("");

                for (p in path)
                {
                    writeLog(type="Error", file="transfer-xml", text="Readding XML: #p#...");
                    addXML(p, true);
                }

                // get updated collection
                collection = getXMLCollection();
                // run search again, it SHOULD be there this time
                res = (isArray(collection) AND arrayLen(collection) ? xmlSearch(collection[1], arguments.xpath) : 0);
                writeLog(type="Error", file="transfer-xml", text="Reloaded #arrayLen(path)# files, tried again against #arrayLen(collection)# files, found #arrayLen(res)# matches.");

                // now re-search the XML
                results.addAll(res);
            }
        }

        return results;
    </cfscript>
</cffunction>


Mostly logging, but critically, the addXML(p, true), the true overwrites what was there before, which clears out the broken ones. 

I've got a guy who has offered to build a facade for CF ORM that presents the same interface as Transfer.  It has been a back burner project for me but if someone else wanted to split the cost, I could prioritize it.  Goal would be to provide a drop-in replacement that would use CF ORM under the hood but not require any code changes.  I presume some configuration change may be required but the getIsPersisted(), the relationships, etc... could all implement the same interface.


Brian

Janise Daylin

unread,
Apr 1, 2014, 12:04:46 PM4/1/14
to transf...@googlegroups.com
Brian - thanks for the response.  I really appreciate it.

I wish I could split the costs for a facade for CF ORM but my company is cheap and they would rather I waste hours beating my head against the wall than fork over meager dollars to make my life easier.  (Sorry bitter today)

I don't have java installed on my CF Server - JVM comes installed with CF I believe - I see the CF admit settings for it.  But I don't have a separate Java install?  (Sorry I have limited server knowledge.)  Java isn't in the control panel where I'm familiar seeing it on other machines.  This server is Windows Server 2003.

And thank you for the code.  I updated it on my test server today.  I am now getting mostly errors that it's not able to find config files/items in config files (which exist).  No XML errors.  I don't know which is better.  

Janise  


You received this message because you are subscribed to a topic in the Google Groups "transfer-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/transfer-dev/82Nx3lbNEyE/unsubscribe.
To unsubscribe from this group and all its topics, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Brian G

unread,
Jul 11, 2014, 7:15:02 PM7/11/14
to transf...@googlegroups.com

This is a long running thread but I came across some recent updates on why Transfer (under load like on init) may be crapping out reliably:

http://cfmlblog.adamcameron.me/2014/04/ye-olde-xmlsearche-bugge.html

What Adam describes is exactly the error I get in XMLFileReader when it blows up.  Errors like:

Failed to XMLSearch(/transfer/objectDefinitions/package[@name='theme']/object[@name='filter']) in XMLFileReader.cfc due to: [Expression] Unable to process the result of the XMLSearch for ''.  I couldn't wrap my head around how it had an Xpath search but thought it was ''.   What's interesting is that Model-Glue has a similar XML loader but it is single threaded on startup so it doesn't manifest itself there.

Here's the source issue which was described as far back as 2008:  http://house-of-fusion.10909.n7.nabble.com/XMLSearch-not-thread-safe-td65967.html

And here is the Adobe bugbase issue for the xmlSearch wackiness: https://bugbase.adobe.com/index.cfm?event=bug&id=3739102

I have long considered rewriting the Transfer config file from XML to JSON due to the XML errors and it looks like this would work.  Another option would be to perform a duplicate() on the XML before running xmlSearch which fixes the problem (but introduces a performance problem) in the house of fusion thread.  You would add it here in XMLFileReader.cfc:

  results.addAll(xmlSearch(duplicate(collection[counter]), arguments.xpath));

In my limited testing, it appears that xmlSearch() on the config is only done the first time a particular object is instantiated.  On my local laptop with a 1330-line XML file, the duplicate() takes 4-7ms.  I'm going to push to production and see if this solves my issues but based on Adam Cameron's test case, it sounds like it does.

While I have no hair left, I'm sure glad to see there really is an issue.  Now I'm just pissed that for 4+ years Adobe has allowed something like this to exist.  :\


Brian

Mark Mandel

unread,
Jul 11, 2014, 7:17:19 PM7/11/14
to transf...@googlegroups.com
Brian,

Want to take on ownership of Transfer? Seems like you're going to end up doing it anyway :)

mark


--
--
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
 
Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
 
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To post to this group, send email to transf...@googlegroups.com
To unsubscribe from this group, send email to transfer-dev...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en

---
You received this message because you are subscribed to the Google Groups "transfer-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to transfer-dev...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Janise Daylin

unread,
Dec 21, 2014, 2:04:33 PM12/21/14
to transf...@googlegroups.com
I got pulled to another task but just tried this today - AMAZING!  Thank you for resolving this headache!
Reply all
Reply to author
Forward
0 new messages