You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Martino Piccinato <ma...@gmail.com> on 2007/10/23 12:36:18 UTC

Strange problem with OGNL (just happening on our production servers)

Hi,

we are experiencing a very strange problem just on our production
server, from time to time bindings/ognl starts giving strange
exceptions it does not give on our dev workstations. The problem is
also difficult to reproduce on production server so I think it might
be some race condition problem.


We are using tapetry 4.1.2 and latest stable OGNL. It might be worth
mentioning that the production server is 64bit (and obviously much
faster) than our poor workstations.

as an example of these exception take this component:

	<component id="mobile" type="Insert">
		<binding name="value">mobile</binding>
	</component>

the component is used on a page called ViewPoSPage having a
String getMobile() method.


This is the exception that comes out from time to time:

2007-10-23 09:41:35,947 ERROR
[org.apache.tapestry.services.impl.HiveMindExpressionCompiler] - Error
generating OGNL getter for expression mobile with root $ViewPoSPag
e_149@3c1[ViewPoSPage] and body:
{ return (($ViewPoSPage_149)$2).mobile();}
org.apache.hivemind.ApplicationRuntimeException: Unable to add method
java.lang.Object get(ognl.OgnlContext, java.lang.Object) to class
$ASTProperty_115c9fd5cb4: [sour
ce error] mobile() not found in $ViewPoSPage_149
        at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:278)
        at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:172)
        at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:498)
        at ognl.Ognl.compileExpression(Ognl.java:141)
        at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)
        at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
        at $ExpressionCache_115c9fd5801.getCompiledExpression($ExpressionCache_115c9fd5801.java)
        at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
        at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
        at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
        at $Insert_6.getValue($Insert_6.java)
        at org.apache.tapestry.components.Insert.renderComponent(Insert.java:48)
        at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
        at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)

....


        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javassist.CannotCompileException: [source error] mobile()
not found in $ViewPoSPage_149
        at javassist.CtBehavior.setBody(CtBehavior.java:347)
        at javassist.CtBehavior.setBody(CtBehavior.java:316)
        at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:272)
        ... 91 more
Caused by: compile error: mobile() not found in $ViewPoSPage_149
        at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:716)
        at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
        at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
        at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
        at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:235)
        at javassist.compiler.CodeGen.compileExpr(CodeGen.java:222)
        at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:591)
        at javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java

the only "strange" thing I can see on the page is a

String mobile(Person person)

so I thought it might  have been
http://jira.opensymphony.com/browse/OGNL-129 but the signature as you
can see is different and the problem is not happening everytime...

Any suggestion?

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Strange problem with OGNL (just happening on our production servers)

Posted by Martino Piccinato <ma...@gmail.com>.
You are right Alejandro, it's the bug you report for this problem.
Then I have another problem I've written in another message and
still another one having to do with polimorphism: apparently passing a
concrete class implementing an interface A to a binding accepting A
objects throws a ClassCastException. This also just happens (after
some time?) on production server
and there's an easy workaournd explicitly (and uselessly from java
point of view) casting the
object to A.

I'm going to open a bug for this one as it seems that nobody else reported it.

Tnx for your help.

On 10/23/07, Alejandro Scandroli <al...@gmail.com> wrote:
> Hi Martino
>
> We are seeing these stack traces too, but the applications doesn't hang.
> http://jira.opensymphony.com/browse/OGNL-115
> The error happens when a getter method doesn't have the matching setter method.
> Does the page still work? or it brakes your app?
>
> In case you don't need a setter method an option to avoid the stack
> traces is to explicitly call the getter, like this:
>
>        <component id="mobile" type="Insert">
>                <binding name="value" value="ognl:getMobile()"/>
>        </component>
>
>
> Salutti.
> Alejandro.
>
> On 10/23/07, Martino Piccinato <ma...@gmail.com> wrote:
> > Hi,
> >
> > we are experiencing a very strange problem just on our production
> > server, from time to time bindings/ognl starts giving strange
> > exceptions it does not give on our dev workstations. The problem is
> > also difficult to reproduce on production server so I think it might
> > be some race condition problem.
> >
> >
> > We are using tapetry 4.1.2 and latest stable OGNL. It might be worth
> > mentioning that the production server is 64bit (and obviously much
> > faster) than our poor workstations.
> >
> > as an example of these exception take this component:
> >
> >         <component id="mobile" type="Insert">
> >                 <binding name="value">mobile</binding>
> >         </component>
> >
> > the component is used on a page called ViewPoSPage having a
> > String getMobile() method.
> >
> >
> > This is the exception that comes out from time to time:
> >
> > 2007-10-23 09:41:35,947 ERROR
> > [org.apache.tapestry.services.impl.HiveMindExpressionCompiler] - Error
> > generating OGNL getter for expression mobile with root $ViewPoSPag
> > e_149@3c1[ViewPoSPage] and body:
> > { return (($ViewPoSPage_149)$2).mobile();}
> > org.apache.hivemind.ApplicationRuntimeException: Unable to add method
> > java.lang.Object get(ognl.OgnlContext, java.lang.Object) to class
> > $ASTProperty_115c9fd5cb4: [sour
> > ce error] mobile() not found in $ViewPoSPage_149
> >         at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:278)
> >         at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:172)
> >         at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:498)
> >         at ognl.Ognl.compileExpression(Ognl.java:141)
> >         at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)
> >         at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
> >         at $ExpressionCache_115c9fd5801.getCompiledExpression($ExpressionCache_115c9fd5801.java)
> >         at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
> >         at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
> >         at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
> >         at $Insert_6.getValue($Insert_6.java)
> >         at org.apache.tapestry.components.Insert.renderComponent(Insert.java:48)
> >         at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
> >         at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
> >
> > ....
> >
> >
> >         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
> >         at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
> >         at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
> >         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
> >         at java.lang.Thread.run(Thread.java:595)
> > Caused by: javassist.CannotCompileException: [source error] mobile()
> > not found in $ViewPoSPage_149
> >         at javassist.CtBehavior.setBody(CtBehavior.java:347)
> >         at javassist.CtBehavior.setBody(CtBehavior.java:316)
> >         at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:272)
> >         ... 91 more
> > Caused by: compile error: mobile() not found in $ViewPoSPage_149
> >         at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:716)
> >         at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
> >         at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
> >         at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
> >         at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:235)
> >         at javassist.compiler.CodeGen.compileExpr(CodeGen.java:222)
> >         at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:591)
> >         at javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java
> >
> > the only "strange" thing I can see on the page is a
> >
> > String mobile(Person person)
> >
> > so I thought it might  have been
> > http://jira.opensymphony.com/browse/OGNL-129 but the signature as you
> > can see is different and the problem is not happening everytime...
> >
> > Any suggestion?
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Strange problem with OGNL (just happening on our production servers)

Posted by Alejandro Scandroli <al...@gmail.com>.
Hi Martino

We are seeing these stack traces too, but the applications doesn't hang.
http://jira.opensymphony.com/browse/OGNL-115
The error happens when a getter method doesn't have the matching setter method.
Does the page still work? or it brakes your app?

In case you don't need a setter method an option to avoid the stack
traces is to explicitly call the getter, like this:

       <component id="mobile" type="Insert">
               <binding name="value" value="ognl:getMobile()"/>
       </component>


Salutti.
Alejandro.

On 10/23/07, Martino Piccinato <ma...@gmail.com> wrote:
> Hi,
>
> we are experiencing a very strange problem just on our production
> server, from time to time bindings/ognl starts giving strange
> exceptions it does not give on our dev workstations. The problem is
> also difficult to reproduce on production server so I think it might
> be some race condition problem.
>
>
> We are using tapetry 4.1.2 and latest stable OGNL. It might be worth
> mentioning that the production server is 64bit (and obviously much
> faster) than our poor workstations.
>
> as an example of these exception take this component:
>
>         <component id="mobile" type="Insert">
>                 <binding name="value">mobile</binding>
>         </component>
>
> the component is used on a page called ViewPoSPage having a
> String getMobile() method.
>
>
> This is the exception that comes out from time to time:
>
> 2007-10-23 09:41:35,947 ERROR
> [org.apache.tapestry.services.impl.HiveMindExpressionCompiler] - Error
> generating OGNL getter for expression mobile with root $ViewPoSPag
> e_149@3c1[ViewPoSPage] and body:
> { return (($ViewPoSPage_149)$2).mobile();}
> org.apache.hivemind.ApplicationRuntimeException: Unable to add method
> java.lang.Object get(ognl.OgnlContext, java.lang.Object) to class
> $ASTProperty_115c9fd5cb4: [sour
> ce error] mobile() not found in $ViewPoSPage_149
>         at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:278)
>         at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:172)
>         at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:498)
>         at ognl.Ognl.compileExpression(Ognl.java:141)
>         at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152)
>         at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115)
>         at $ExpressionCache_115c9fd5801.getCompiledExpression($ExpressionCache_115c9fd5801.java)
>         at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
>         at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125)
>         at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
>         at $Insert_6.getValue($Insert_6.java)
>         at org.apache.tapestry.components.Insert.renderComponent(Insert.java:48)
>         at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725)
>         at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:180)
>
> ....
>
>
>         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
>         at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
>         at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
>         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: javassist.CannotCompileException: [source error] mobile()
> not found in $ViewPoSPage_149
>         at javassist.CtBehavior.setBody(CtBehavior.java:347)
>         at javassist.CtBehavior.setBody(CtBehavior.java:316)
>         at org.apache.tapestry.enhance.ClassFabImpl.addMethod(ClassFabImpl.java:272)
>         ... 91 more
> Caused by: compile error: mobile() not found in $ViewPoSPage_149
>         at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:716)
>         at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
>         at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
>         at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
>         at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:235)
>         at javassist.compiler.CodeGen.compileExpr(CodeGen.java:222)
>         at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:591)
>         at javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java
>
> the only "strange" thing I can see on the page is a
>
> String mobile(Person person)
>
> so I thought it might  have been
> http://jira.opensymphony.com/browse/OGNL-129 but the signature as you
> can see is different and the problem is not happening everytime...
>
> Any suggestion?
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org