[ 
https://issues.apache.org/jira/browse/SYSTEMML-2027?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthias Boehm closed SYSTEMML-2027.
------------------------------------
       Resolution: Fixed
         Assignee: Matthias Boehm
    Fix Version/s: SystemML 1.0

> Perftest distributed codegen ops w/ intermittent task failures
> --------------------------------------------------------------
>
>                 Key: SYSTEMML-2027
>                 URL: https://issues.apache.org/jira/browse/SYSTEMML-2027
>             Project: SystemML
>          Issue Type: Bug
>            Reporter: Matthias Boehm
>            Assignee: Matthias Boehm
>             Fix For: SystemML 1.0
>
>
> Various large-scale test scenarios of the perftest suite show intermittent 
> but non-reproducible janino codegen compilation issues which result in rare 
> task failures. Due to missing synchronization, concurrent tasks might try to 
> compile and load the same class with the same class name multiple times 
> leading to unwanted side effects. The solution is simple, synchronize the 
> class compilation at the executors, which ensures that the first thread 
> compiles a non-existing class and all subsequent threads and tasks simply 
> reuse this class accordingly. 
> Below is a list of various exceptions leading to the intermittent task 
> failures:
> {code}
> Caused by: org.codehaus.janino.JaninoRuntimeException: 
> codegen.TMP14.genexec(double[] a, int ai, SideInput[] b, double[] scalars, 
> double[] c, int len, int rix): Operand stack underrun at offset 91
>       at org.codehaus.janino.CodeContext.flowAnalysis(CodeContext.java:501)
>       at org.codehaus.janino.CodeContext.flowAnalysis(CodeContext.java:541)
>       at org.codehaus.janino.CodeContext.flowAnalysis(CodeContext.java:313)
>       at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2839)
>       at 
> org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262)
>       at 
> org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234)
>       at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538)
>       at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420)
>       at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206)
>       at 
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374)
>       at 
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369)
>       at 
> org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309)
>       at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
>       at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345)
>       at 
> org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396)
>       at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:205)
>       at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196)
>       at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91)
>       at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:84)
>       at 
> org.apache.sysml.runtime.codegen.CodegenUtils.compileClassJanino(CodegenUtils.java:174)
>       ... 19 more
> {code}
> {code}
> Caused by: org.codehaus.commons.compiler.CompileException: Line 14, Column 
> 55: No applicable constructor/method found for actual parameters "double[], 
> java.lang.Object, int, int"; candidates are: "public static double[] 
> org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], 
> double, int[], int, int, int)", "public static double[] 
> org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], 
> double[], int, int, int)", "public static double[] 
> org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double, 
> double[], int, int)", "public static double[] 
> org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], 
> double, int, int)", "public static double[] 
> org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], 
> double[], int, int[], int, int, int)", "public static double[] 
> org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], 
> double[], int[], int, int, int, int)", "public static double[] 
> org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double, 
> double[], int[], int, int, int)"
>       at 
> org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004)
>       at 
> org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:8307)
>       at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8169)
>       at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8071)
>       at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4421)
>       at org.codehaus.janino.UnitCompiler.access$7500(UnitCompiler.java:206)
>       at 
> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:3774)
>       at 
> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:3762)
>       at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4328)
>       at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
>       at 
> org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
>       at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2330)
>       at org.codehaus.janino.UnitCompiler.access$2600(UnitCompiler.java:206)
>       at 
> org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1386)
>       at 
> org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1370)
>       at 
> org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:2974)
>       at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
>       at 
> org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
>       at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2811)
>       at 
> org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262)
>       at 
> org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234)
>       at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538)
>       at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420)
>       at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206)
>       at 
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374)
>       at 
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369)
>       at 
> org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309)
>       at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
>       at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345)
>       at 
> org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396)
>       at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:205)
>       at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196)
>       at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91)
>       at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:84)
>       at 
> org.apache.sysml.runtime.codegen.CodegenUtils.compileClassJanino(CodegenUtils.java:174)
>       ... 19 more
> {code}
> {code}
> Caused by: org.codehaus.commons.compiler.CompileException: Line 16, Column 
> 40: Binary numeric promotion not possible on types "java.lang.Object" and 
> "double"
>       at 
> org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004)
>       at 
> org.codehaus.janino.UnitCompiler.binaryNumericPromotionType(UnitCompiler.java:10237)
>       at org.codehaus.janino.UnitCompiler.getType2(UnitCompiler.java:6227)
>       at org.codehaus.janino.UnitCompiler.access$13800(UnitCompiler.java:206)
>       at 
> org.codehaus.janino.UnitCompiler$18.visitBinaryOperation(UnitCompiler.java:5675)
>       at 
> org.codehaus.janino.UnitCompiler$18.visitBinaryOperation(UnitCompiler.java:5660)
>       at org.codehaus.janino.Java$BinaryOperation.accept(Java.java:4155)
>       at org.codehaus.janino.Java$Rvalue.accept(Java.java:3532)
>       at org.codehaus.janino.UnitCompiler.getType(UnitCompiler.java:5660)
>       at 
> org.codehaus.janino.UnitCompiler.compileArithmeticOperation(UnitCompiler.java:6859)
>       at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4367)
>       at org.codehaus.janino.UnitCompiler.access$6900(UnitCompiler.java:206)
>       at 
> org.codehaus.janino.UnitCompiler$12.visitBinaryOperation(UnitCompiler.java:3768)
>       at 
> org.codehaus.janino.UnitCompiler$12.visitBinaryOperation(UnitCompiler.java:3762)
>       at org.codehaus.janino.Java$BinaryOperation.accept(Java.java:4155)
>       at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
>       at 
> org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
>       at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2330)
>       at org.codehaus.janino.UnitCompiler.access$2600(UnitCompiler.java:206)
>       at 
> org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1386)
>       at 
> org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1370)
>       at 
> org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:2974)
>       at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
>       at 
> org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
>       at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2811)
>       at 
> org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262)
>       at 
> org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234)
>       at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538)
>       at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420)
>       at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206)
>       at 
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374)
>       at 
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369)
>       at 
> org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309)
>       at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
>       at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345)
>       at 
> org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396)
>       at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:205)
>       at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196)
>       at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91)
>       at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:84)
>       at 
> org.apache.sysml.runtime.codegen.CodegenUtils.compileClassJanino(CodegenUtils.java:174)
>       ... 19 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to