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 On Mon, Mar 31, 2014 at 2:23 PM, Brian G <[email protected]> wrote: > > 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 > > > > > > On Monday, March 31, 2014 12:13:10 PM UTC-7, Janise Daylin wrote: >> >> 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 >> >> On Wednesday, April 3, 2013 7:05:27 PM UTC-6, Brian G wrote: >>> >>> >>> 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. >>> >>> >>> On Wednesday, April 3, 2013 2:32:13 PM UTC-7, Mark Mandel wrote: >>>> >>>> Why not do the try catch in here: >>>> http://transfer.riaforge.org/index.cfm?event=page.svnview& >>>> path=%2Ftransfer%2Ftrunk%2Fcom%2Fio&file=XMLFileReader%2Ecfc >>>> >>>> LIne 42 of the search? >>>> >>>> Rather than outside? >>>> >>>> Mark >>>> >>>> >>>> On Thu, Apr 4, 2013 at 3:30 AM, Brian G <[email protected]> wrote: >>>> >>>>> >>>>> 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. >>>>>> <http://www.2ddu.com/> >>>>>> >>>>> >>>>> 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. >>>>> >>>>> >>>>> -- >>>>> -- >>>>> 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 [email protected] >>>>> To unsubscribe from this group, send email to >>>>> [email protected] >>>>> 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 [email protected]. >>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> E: [email protected] >>>> T: http://www.twitter.com/neurotic >>>> W: www.compoundtheory.com >>>> >>>> 2 Devs from Down Under Podcast >>>> http://www.2ddu.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 [email protected] > To unsubscribe from this group, send email to > [email protected] > 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 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 > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- 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 [email protected] To unsubscribe from this group, send email to [email protected] 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
