odin icon indicating copy to clipboard operation
odin copied to clipboard

Using ConsoleLogger fails with NoSuchMethod Exception

Open joesan opened this issue 3 years ago • 0 comments

I'm facing the following error and I'm not sure what is suspicious in my code below!

j``` ava.lang.NoSuchMethodError: perfolation.package$.stringBuilder()Ljava/lang/StringBuilder; at io.odin.formatter.Formatter$.formatTimestamp(Formatter.scala:84) at io.odin.formatter.Formatter$.$anonfun$create$1(Formatter.scala:49) at io.odin.loggers.ConsoleLogger.$anonfun$println$1(ConsoleLogger.scala:18) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:88) at monix.eval.internal.TaskRestartCallback.syncOnSuccess(TaskRestartCallback.scala:101) at monix.eval.internal.TaskRestartCallback$$anon$1.run(TaskRestartCallback.scala:118) at monix.execution.internal.Trampoline.monix$execution$internal$Trampoline$$immediateLoop(Trampoline.scala:66) at monix.execution.internal.Trampoline.startLoop(Trampoline.scala:32) at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.super$startLoop(TrampolineExecutionContext.scala:142) at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.$anonfun$startLoop$1(TrampolineExecutionContext.scala:142) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94) at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.startLoop(TrampolineExecutionContext.scala:142) at monix.execution.internal.Trampoline.execute(Trampoline.scala:40) at monix.execution.schedulers.TrampolineExecutionContext.execute(TrampolineExecutionContext.scala:57) at monix.execution.schedulers.BatchingScheduler.execute(BatchingScheduler.scala:50) at monix.execution.schedulers.BatchingScheduler.execute$(BatchingScheduler.scala:47) at monix.execution.schedulers.AsyncScheduler.execute(AsyncScheduler.scala:31) at monix.eval.internal.TaskRestartCallback.start(TaskRestartCallback.scala:56) at monix.eval.internal.TaskRunLoop$.executeAsyncTask(TaskRunLoop.scala:703) at monix.eval.internal.TaskRunLoop$.goAsync4Future(TaskRunLoop.scala:758) at monix.eval.internal.TaskRunLoop$.startFuture(TaskRunLoop.scala:643) at monix.eval.Task.runToFutureOpt(Task.scala:587) at monix.eval.Task.runToFuture(Task.scala:543) at com.bigelectrons.yoke.controllers.ApplicationController.$anonfun$validateLinks$4(ApplicationController.scala:67) at monix.execution.CancelableFuture.$anonfun$map$1(CancelableFuture.scala:64) at monix.execution.CancelableFuture.$anonfun$transform$2(CancelableFuture.scala:144) at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:438) at scala.concurrent.BatchingExecutor$AbstractBatch.runN(BatchingExecutor.scala:134) at scala.concurrent.BatchingExecutor$AsyncBatch.apply(BatchingExecutor.scala:163) at scala.concurrent.BatchingExecutor$AsyncBatch.apply(BatchingExecutor.scala:146) at scala.concurrent.BlockContext$.usingBlockContext(BlockContext.scala:107) at scala.concurrent.BatchingExecutor$AsyncBatch.run(BatchingExecutor.scala:154) at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1426) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)


This is the line of code that produced this error:

private val logger = consoleLogger[Task](formatter = Formatter.colorful)

    Task {
      Http(url).timeout(connTimeoutMs = 1000, readTimeoutMs = 3000).asString
    }.attempt.flatMap {
      case Left(err) =>
        val httpResult = HttpResult(source = url, isSuccess = false, statusCode = 1000, errorMessage = Some(err.getMessage))
        // Add to the cache
        blocking { httpResultErrorCache.put(url)(httpResult) }
        logger.error(s"ERR happened for $url >> ${err.getMessage} >> $httpResult is added to the cache").as(httpResult)
      case Right(doc) =>
        if (doc.isError) {
          Task(HttpResult(source = url, isSuccess = doc.isSuccess, statusCode = doc.code))
        } else {
          val hrefs = (browser.parseString(doc.body) >> elementList("a[href]") >?> attr("href"))
            .distinct.flatten.filter(_.startsWith("http"))
          Task(HttpResult(source = url, isSuccess = doc.isSuccess, statusCode = doc.code, elems = hrefs))
        }
    }

joesan avatar Apr 09 '21 05:04 joesan