[ 
https://issues.apache.org/jira/browse/STORM-605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14315731#comment-14315731
 ] 

Li Chaomo edited comment on STORM-605 at 2/11/15 7:53 AM:
----------------------------------------------------------

i am so confused about it. i wrote a test to load the clojure function in java, 
That's ok. My code is as follows
i can get the reference successful

public class ClojureDslLoadTest {
    public static void main(String[] args) {
        System.out.println(loadClojureFn("com.pajk.risk.storm.clj.confdata", 
"init-all-test"));
        System.out.println(loadClojureFn("com.pajk.risk.storm.clj.util", 
"load-json"));
    }

    public static IFn loadClojureFn(String namespace, String name) {
        try {
            clojure.lang.Compiler.eval(RT.readString("(require '" + namespace + 
")"));
        } catch (Exception e) {
            //if playing from the repl and defining functions, file won't exist
            e.printStackTrace();
        }
        return (IFn) RT.var(namespace, name).deref();
    }
}

But under storm, i caught the Exception 

clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to 
resolve symbol: load-json in this context, 
compiling:(com/pajk/risk/storm/clj/confdata.clj:42:36)
        at clojure.lang.Compiler.analyze(Compiler.java:6464) 
~[clojure-1.6.0.jar:na]

I have no idea ..



was (Author: newday1):
i am so confused about it. i wrote a test to load the clojure function in java, 
That's ok. My code is as follows
i can get the reference successful

public class ClojureDslLoadTest {
    public static void main(String[] args) {
        System.out.println(loadClojureFn("com.pajk.risk.storm.clj.confdata", 
"init-all-test"));
        System.out.println(loadClojureFn("com.pajk.risk.storm.clj.util", 
"load-json"));
    }

    public static IFn loadClojureFn(String namespace, String name) {
        try {
            clojure.lang.Compiler.eval(RT.readString("(require '" + namespace + 
")"));
        } catch (Exception e) {
            //if playing from the repl and defining functions, file won't exist
            e.printStackTrace();
        }
        return (IFn) RT.var(namespace, name).deref();
    }
}

But under storm, i caught the Exception 

clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to 
resolve symbol: conditionCache in this context, 
compiling:(com/pajk/risk/storm/clj/calc.clj:12:13)
at clojure.lang.Compiler.analyze(Compiler.java:6464) ~[clojure-1.6.0.jar:na]

I have no idea ..


> Attempting to call unbound fn during bolt prepare
> -------------------------------------------------
>
>                 Key: STORM-605
>                 URL: https://issues.apache.org/jira/browse/STORM-605
>             Project: Apache Storm
>          Issue Type: Bug
>    Affects Versions: 0.9.3
>            Reporter: Philippe Guillebert
>
> We had a bunch of topologies running very well under Storm 0.8.2 until last
> week when we switched to storm 0.9.2-incubating. We use the clojure DSL,
> and clojure 1.5.1 (only).
> Since the change, we have a large topology (about 30 bolts, parallellism=10
> or 20 per bolt, total 372 tasks on 10 workers) that fails on startup with
> several bolts showing the exception :
> java.lang.RuntimeException: java.lang.IllegalStateException: Attempting to
> call unbound fn: #'entry-dedup.bolt/dedup__ at
> backtype.storm.clojure.ClojureBolt.prepare(ClojureBolt.java:77) ...
> This can occur on one or several bolts at random and is not consistent
> between restarts.
> The topology is indeed quite long to initialize (a dozen seconds) due to 
> several models being loaded but this was OK in 0.8.2.
> Another (shorter) topology works most of the time but shows this behaviour
> on some restarts sometimes.
> We found a workaround that works most of the time : start the topology in
> the INACTIVE state, then wait 200 seconds, then activate it. But this
> doesn't really solve our problem because sometimes Storm tries to rebalance
> the topologies by itself and reassigns the topology without our little trick, 
> effectively crashing them.
> The same behavior is present with storm 0.9.3.
> So maybe something changed in storm that introduces a kind of race
> condition during initializaion of some bolts on larger topologies ? Maybe 
> this is a consequence to the switch to Netty ?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to