Hi Gustavo,

Thanks for answering!

I checked with a debugger both when running with Java and Clojure. In the
Clojure case Log.class.getClassLoader() returned null and caused the NPE.

I guess this is not the place to learn Scala but I'm still puzzled, how is
a function with a signature which means void actually returns something
else?

Sincerely,
Michael

On Mon, May 18, 2015 at 4:21 PM, Gustavo Anatoly <gustavoanat...@gmail.com>
wrote:

> Hi, Michael Ravits.
>
> The error happens when the Log class try to read the
> jetty-logging.properties file. Please take a look the line at (
> org.eclipse.jetty.util.log.Log.java:94)
>
> URL testProps = Log.class.getClassLoader().getResource(
> "jetty-logging.properties");
>
> Thus, the question is if this file exists.
>
> About the second question, the signature:
>
> class JobRunner(config: Config) extends Logging {
>   def run() = {...}
>
> The operator  = without any type represent a void return in Scala. Is
> the same when you declare something like this: def run(): Unit = {..}
>
> Unit documentation:
> http://www.scala-lang.org/api/current/index.html#scala.Unit
>
> Topic related at StackOverflow:
>
> http://stackoverflow.com/questions/9461880/should-i-use-unit-or-leave-out-the-return-type-for-my-scala-method
>
> Hope I helped you.
>
> Thanks.
>
>
> 2015-05-17 18:53 GMT-03:00 Michael Ravits <michaelr...@gmail.com>:
>
> > Hi Everybody,
> >
> > Trying to get up and running with a Clojure Samza Task.
> > I think that my question is Clojure specific but I guess that some of the
> > folks here are Clojure developers which might also know the answers.
> >
> > I'm trying to run a job, using the same code as here:
> >
> >
> https://github.com/apache/samza/blob/master/samza-test/src/test/scala/org/apache/samza/test/integration/TestStatefulTask.scala#L324
> >
> >
> > This is my clojure version:
> >
> > (deftest a-test
> >   (testing "debug"
> >     (let [job ^StreamJob (->> (MapConfig. config)
> >                               (JobRunner.)
> >                               (.run))]
> >       (do
> >         (.waitForStatus job (ApplicationStatus/Running) 60000)))))
> >
> >
> > The same code in Java seems to start fine. But with Clojure I get the
> > following error. getClassLoader returns null in at
> > org.eclipse.jetty.util.log.Log$1.run (Log.java:94) which causes an NPE:
> >
> > Caused by: java.lang.NullPointerException: null
> >  at org.eclipse.jetty.util.log.Log$1.run (Log.java:94)
> >     java.security.AccessController.doPrivileged
> (AccessController.java:-2)
> >     org.eclipse.jetty.util.log.Log.<clinit> (Log.java:85)
> >     org.eclipse.jetty.util.component.AbstractLifeCycle.<clinit>
> > (AbstractLifeCycle.java:33)
> >
> >
> org.apache.samza.coordinator.server.HttpServer$.$lessinit$greater$default$4
> > (HttpServer.scala:65)
> >     org.apache.samza.coordinator.JobCoordinator$.apply
> > (JobCoordinator.scala:56)
> >     org.apache.samza.job.local.ThreadJobFactory.getJob
> > (ThreadJobFactory.scala:39)
> >     org.apache.samza.job.JobRunner.run (JobRunner.scala:62)
> >     assembler.core_test/fn (core_test.clj:47)
> >
> >
> > I'm a bit clueless right now as to how to investigation this further and
> > could not find any useful information on why this could happen.
> > Would be great if anyone could give me a clue as to what could be causing
> > this problem.
> >
> > My second question is regarding this line:
> >
> > val job = new JobRunner(new MapConfig(jobConfig)).run
> >
> > How is that JobRunner.run() in Scala returns a Job object while in Java
> the
> > same method signature returns void?
> >
> > Thanks,
> > Michael
> >
>

Reply via email to