Interesting...I also had faulting issues with 1.2B1. (past tense because
I needed a fix very fast; so I downgraded back to M5, which is what I
was using before).  The error I was getting wasn't a "toMany"
relationship, though. But, the behavior there was also a bit
stochastic... sometimes it worked, and sometimes it didn't; in May,
things will be in more of a position for myself (and also for the
company using the software) to where I can dig deeper into this. In the
meanwhile, this is the exception I was getting:

org.objectstyle.cayenne.FaultFailureException
[v.1.2B1 April 6 2006] Error resolving fault, no matching row exists in
the database for ObjectId: <ObjectId:AssignmentParameters,
assignmentid=1590>
unlabeledMessage:       Error resolving fault, no matching row exists in the
database for ObjectId: <ObjectId:AssignmentParameters, assignmentid=1590>
Stack Trace:

    * 
org.objectstyle.cayenne.access.DataContext.prepareForAccess(DataContext.java:1742)

    * 
org.objectstyle.cayenne.CayenneDataObject.readProperty(CayenneDataObject.java:238)

    * 
org.eledge.domain.auto._AssignmentParameters.getPermitInvalidTransactions(_AssignmentParameters.java:68)

    * org.eledge.domain.Assignment.assignmentDoable(Assignment.java:49)
    * 
org.eledge.components.AssignmentTransactionCreator.doTransaction(AssignmentTransactionCreator.java:23)

    * 
org.eledge.pages.ViewAssignment.activateExternalPage(ViewAssignment.java:32)

    * 
org.apache.tapestry.engine.ExternalService.service(ExternalService.java:161)

    * org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:889)

    * org.eledge.EledgeEngine.service(EledgeEngine.java:60)
    * 
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:198)

    * org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:159)

    * javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    * javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    * 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

    * 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

    * org.eledge.OldEledgePagesFilter.doFilter(OldEledgePagesFilter.java:64)

    * 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)

    * 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

    * 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)

    * 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

    * 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

    * org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    * 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)

    * 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

    * 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

    * org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    * org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)

    * 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

    * 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

    * 
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

    * 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

    * 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)

    * 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

    * org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)

    * 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

    * 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

    * org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    * 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

    * 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

    * 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

    * org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    * org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:429)

    *

    * org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:495)
    * java.lang.Thread.run(Thread.java:534)



I double checked, and there all of the relationships are correct in the
db (and, despite what the exception says, there is a row in
AssignmentParameters with the assignmentid FK of 1590).

Line 49 of Assignment.java looks like:

            if
(this.getParameters().getPermitInvalidTransactions().booleanValue()) {

Line 68 of _AssignmentParameters.java looks like:

        return (Boolean)readProperty("permitInvalidTransactions");

I'll look into this deeper, like I said, probably at the beginning of
May... I didn't mention it before since I haven't had time to check if
it was a a "me" issue or a "cayenne" issue. But th fact that other
people seem to be having some trouble with fault resolving suggests that
it's not a "me issue", so I thought I'd add what little information I
have atm.

Robert

Marcin Skladaniec wrote:
> Hello everyone !
>
> Andrus, thank you for fixing that bug so quickly !
>
>
> I got another problem, it may be related to previous thats why I post
> it here.
>
> It does not happen always, I tried to create a separate project to
> reproduce it, but I couldn't.
>
> This is the code which reproduces problem in my application:
>
>                 CayenneContext context =
> ContextManager.getNewDedicatedContext();
>                 List students = context.performQuery(new
> SelectQuery(Student.class));
>                 for (int i=0 ; i<students.size();i++) {
>                     Student student = (Student)students.get(i);
>
>                     //this works ...
>                     logger.info(i+ ") students count = "
> +student.getLanguage().getStudents().size());
>                    
>                     //this don't work
>                     logger.info(i+ ") language name =  "
> +student.getLanguage().getName());
>                 }
>                
>                 CayenneContext context2 =
> ContextManager.getNewDedicatedContext();
>                 List languages = context2.performQuery(new
> SelectQuery(Language.class));
>                 for (int i=0 ; i< languages.size();i++) {
>                     Language language = (Language)languages.get(i);
>                     if (language.getStudents().size() > 0) {
>
>                         logger.info(i+ ") language name =  "
> +language.getName());
>                         logger.info(i+ ") students count = "
> +language.getStudents().size());
>
>                         for (int j
> =0;j<language.getStudents().size();j++) {
>                             Student student =
> ((Student)language.getStudents().get(j));
>                             logger.info("\t"+j+ ") student name = "
> +student.getFullName());
>                             logger.info("\t"+j+ ") student language =
> " +student.getLanguage().getName());
>                            
>                         }
>                     }
>                 }
>
> On output I'm getting :
>
>   - 0) students count = 1
>   - 0) language name =  null
>   - 1) students count = 1
>   - 1) language name =  null
>   - 2) students count = 1
>   - 2) language name =  null
>
>  - 8) language name =  Galic
>  - 8) students count = 1
>       -     0) student name = test test
>       -     0) student language = Galic
>  - 1287) language name =  Guatamalan
>  - 1287) students count = 1
>       -     0) student name = test2 test2
>       -     0) student language = Guatamalan
>  - 1509) language name =  English
>  - 1509) students count = 1
>       -     0) student name = test3  test3
>       -     0) student language = English
>
> It looks like sometimes the object is not "faulted" correctly. I can't
> see when and why ...
>
>
> Marcin
>
>
> On 11/04/2006, at 5:35 PM, Andrus Adamchik wrote:
>
>> Ok, now I got it. This is a bug - RelationshipQuery was incorrectly
>> intercepted by the client CayenneContext. I opened a bug report:
>>
>> http://objectstyle.org/jira/browse/CAY-500
>>
>> and actually already checked in the fix, so it should be available in
>> 04/11 nightly build.
>>
>> Thanks
>> Andrus
>>
>>
>> On Apr 11, 2006, at 4:58 AM, Marcin Skladaniec wrote:
>>
>>
>
> -------------------------->
> ish
> http://www.ish.com.au
> Level 1, 30 Wilson Street Newtown 2042 Australia
> phone +61 2 9550 5001   fax +61 2 9550 4001
>
>

Reply via email to