LucidDB / luciddb

DEFUNCT: See README
https://github.com/LucidDB/luciddb
Apache License 2.0
53 stars 24 forks source link

[FRG-257] eliminate synchronization in JaninoCompiler #615

Closed dynamobi-build closed 12 years ago

dynamobi-build commented 12 years ago

[reporter="jvs", created="Mon, 19 Feb 2007 11:26:36 -0500 (GMT-05:00)"] Without it, got failures like this in codeCache.mtsql:

[org.codehaus.janino.CompileException: File net/sf/farrago/dynamic/stmt4/ExecutableStmt.java, Line 129, Column 47: No applicable constructor/method found for actual parameters "byte[], int, int"; candidates are: "void net.sf.farrago.type.runtime.BytePointer.setPointer(byte[], int, int)"
org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:7155)
org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:5359)
org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:5298)
org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:5198)
org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:5153)
org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:2649)
org.codehaus.janino.UnitCompiler.access$4600(UnitCompiler.java:47)
org.codehaus.janino.UnitCompiler$7.visitMethodInvocation(UnitCompiler.java:2109)
org.codehaus.janino.Java$MethodInvocation.accept(Java.java:2502)
org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:2128)
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:3068)
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1643)
org.codehaus.janino.UnitCompiler.access$2100(UnitCompiler.java:47)
org.codehaus.janino.UnitCompiler$4.visitMethodInvocation(UnitCompiler.java:1618)
org.codehaus.janino.Java$MethodInvocation.accept(Java.java:2502)
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1637)
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:936)
org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:47)
org.codehaus.janino.UnitCompiler$2.visitExpressionStatement(UnitCompiler.java:491)
org.codehaus.janino.Java$ExpressionStatement.accept(Java.java:1278)
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:510)
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:529)
org.codehaus.janino.UnitCompiler.access$300(UnitCompiler.java:47)
org.codehaus.janino.UnitCompiler$2.visitBlock(UnitCompiler.java:490)
org.codehaus.janino.Java$Block.accept(Java.java:1233)
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:510)
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1529)
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:222)
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:345)
org.codehaus.janino.UnitCompiler$1.visitAnonymousClassDeclaration(UnitCompiler.java:83)
org.codehaus.janino.Java$AnonymousClassDeclaration.accept(Java.java:480)
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:91)]

dynamobi-build commented 12 years ago

[author="jvs", created="Wed, 10 Mar 2010 22:31:18 -0500 (GMT-05:00)"] Latest Janino has this fix, so I am going to see if an upgrade allows us to remove the synchronized block:


http://jira.codehaus.org/browse/JANINO-137

dynamobi-build commented 12 years ago

[author="jvs", created="Fri, 12 Mar 2010 19:59:05 -0500 (GMT-05:00)"] Oops, hit a regression while attempting to upgrade:


http://jira.codehaus.org/browse/JANINO-143

dynamobi-build commented 12 years ago

[author="jvs", created="Wed, 21 Apr 2010 01:07:56 -0500 (GMT-05:00)"] Got a fix from Arno for JANINO-143, which I'll check in (janino-2.6.0-rc3).


Although I'm removing the synchronization, I'm adding a new class SynchronizedJaninoCompiler which we can use as a fallback in case more Janino multithreading bugs arise.

dynamobi-build commented 12 years ago

[author="jvs", created="Wed, 21 Apr 2010 11:57:39 -0500 (GMT-05:00)"] Fixed in //open/dev in eigenchange 13564.


Fallback in case of problems is:


alter system set "javaCompilerClassName" = 'org.eigenbase.javac.SynchronizedJaninoCompiler';