You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Jochen Kemnade (JIRA)" <ji...@apache.org> on 2017/03/09 13:50:38 UTC
[jira] [Updated] (GROOVY-8115) Reported start time for timed-out
executions is sometimes wrong
[ https://issues.apache.org/jira/browse/GROOVY-8115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jochen Kemnade updated GROOVY-8115:
-----------------------------------
Description:
Sorry for the somewhat fuzzy report, i haven't been able to find out what exactly causes the error.
Consider the following script:
{code:java}
def c = new GroovyClassLoader().parseClass('''
import groovy.transform.TimedInterrupt
import groovy.util.NodeBuilder
@TimedInterrupt(checkOnMethodStart = false, value = 1L)
class MyClass {
def myMethod() {
def b = new NodeBuilder()
b.foo {
while(true){
}
}
}
def getProperty(String name){ null }
}
''')
c.newInstance().myMethod()
{code}
If I run it, the execution is correctly aborted after a second. The error message states:
{{Execution timed out after 1 units. Start time: null}}.
If I don't override {{getProperty}}, the error message is {{Execution timed out after 1 units. Start time: Thu Mar 09 14:35:55 CET 2017}}.
Something is wrong with the access to the start time field in {{TimedInterruptibleASTTransformation.createInterruptStatement}} (https://github.com/apache/groovy/blob/GROOVY_2_4_9/src/main/org/codehaus/groovy/transform/TimedInterruptibleASTTransformation.groovy#L191).
Taking a wild guess, I assume that it has something to do with the different property resolution inside builder closures.
I would have expected the transformation to use {{fieldX(startTimeField)}} rather than {{propX(varX("this"), basename + '$startTime')}}, but when I tried that, it just broke horribly.
was:
Sorry for the somewhat fuzzy report, i haven't been able to find out what exactly causes the error.
Consider the following script:
{code:java}
def c = new GroovyClassLoader().parseClass('''
import groovy.transform.TimedInterrupt
import groovy.util.NodeBuilder
@TimedInterrupt(checkOnMethodStart = false, value = 1L)
class MyClass {
def myMethod() {
def b = new NodeBuilder()
b.foo {
while(true){
}
}
}
def getProperty(String name){ null }
}
''')
c.newInstance().myMethod()
{code}
If I run it, the execution is correctly aborted after a second. The error message states:
{{Execution timed out after 1 units. Start time: null}}.
If I don't override {{getProperty}}, the error message is {{Execution timed out after 1 units. Start time: Thu Mar 09 14:35:55 CET 2017}}.
Something is wrong with the access to the start time field in {{TimedInterruptibleASTTransformation.createInterruptStatement}}.
> Reported start time for timed-out executions is sometimes wrong
> ---------------------------------------------------------------
>
> Key: GROOVY-8115
> URL: https://issues.apache.org/jira/browse/GROOVY-8115
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 2.4.9
> Reporter: Jochen Kemnade
>
> Sorry for the somewhat fuzzy report, i haven't been able to find out what exactly causes the error.
> Consider the following script:
> {code:java}
> def c = new GroovyClassLoader().parseClass('''
> import groovy.transform.TimedInterrupt
> import groovy.util.NodeBuilder
> @TimedInterrupt(checkOnMethodStart = false, value = 1L)
> class MyClass {
> def myMethod() {
> def b = new NodeBuilder()
> b.foo {
> while(true){
> }
> }
> }
> def getProperty(String name){ null }
> }
> ''')
>
> c.newInstance().myMethod()
> {code}
> If I run it, the execution is correctly aborted after a second. The error message states:
> {{Execution timed out after 1 units. Start time: null}}.
> If I don't override {{getProperty}}, the error message is {{Execution timed out after 1 units. Start time: Thu Mar 09 14:35:55 CET 2017}}.
> Something is wrong with the access to the start time field in {{TimedInterruptibleASTTransformation.createInterruptStatement}} (https://github.com/apache/groovy/blob/GROOVY_2_4_9/src/main/org/codehaus/groovy/transform/TimedInterruptibleASTTransformation.groovy#L191).
> Taking a wild guess, I assume that it has something to do with the different property resolution inside builder closures.
> I would have expected the transformation to use {{fieldX(startTimeField)}} rather than {{propX(varX("this"), basename + '$startTime')}}, but when I tried that, it just broke horribly.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)