scala-redis-nb icon indicating copy to clipboard operation
scala-redis-nb copied to clipboard

eval command with a numeric return value causes exception

Open ethul opened this issue 10 years ago • 4 comments

When I attempt to return a numeric value from a Lua script, I arrive at the following exception.

Best, -Eric

scala> :paste
// Entering paste mode (ctrl-D to finish)

import com.redis.RedisClient

import akka.util.Timeout
import akka.actor.ActorSystem

import scala.concurrent.Await
import scala.concurrent.duration.Duration

val duration = Duration(10, "seconds")

implicit val system = ActorSystem("redis-test")

implicit val executionContext = system.dispatcher

implicit val timeout = Timeout(duration)

val client = RedisClient("localhost", 6379)

val res = client.eval("return 1;")

Await.result(res, duration)

// Exiting paste mode, now interpreting.

[INFO] [09/15/2013 14:24:16.037] [redis-test-akka.actor.default-dispatcher-4] [akka://redis-test/user/redis-client-2] Attempting to send command before connected: Eval(return 1;,List(),List())
[INFO] [09/15/2013 14:24:16.043] [redis-test-akka.actor.default-dispatcher-3] [akka://redis-test/user/redis-client-2] Connected to redis server localhost:6379.
com.redis.protocol.package$RedisError: 1
    at com.redis.serialization.RawReplyParser$.parseError(RawReplyParser.scala:75)
    at com.redis.serialization.RawReplyParser$PrefixDeserializer$$anonfun$7.apply(RawReplyParser.scala:137)
    at com.redis.serialization.RawReplyParser$PrefixDeserializer$$anonfun$7.apply(RawReplyParser.scala:137)
    at com.redis.serialization.RawReplyParser$PrefixDeserializer.apply(RawReplyParser.scala:128)
    at com.redis.serialization.RawReplyParser$PrefixDeserializer.apply(RawReplyParser.scala:126)
    at scala.PartialFunction$class.applyOrElse(PartialFunction.scala:118)
    at com.redis.serialization.PartialDeserializer$$anon$1.applyOrElse(PartialDeserializer.scala:21)
    at scala.PartialFunction$OrElse.apply(PartialFunction.scala:162)
    at com.redis.serialization.Deserializer.parseSafe(Deserializer.scala:17)
    at com.redis.serialization.Deserializer$$anonfun$1.apply(Deserializer.scala:12)
    at com.redis.serialization.Deserializer$$anonfun$1.apply(Deserializer.scala:12)
    at com.redis.pipeline.ResponseHandling$$anon$1.parseAndDispatch$1(ResponseHandling.scala:31)
    at com.redis.pipeline.ResponseHandling$$anon$1.com$redis$pipeline$ResponseHandling$$anon$$handleResponse(ResponseHandling.scala:52)
    at com.redis.pipeline.ResponseHandling$$anon$1$$anonfun$2.apply(ResponseHandling.scala:66)
    at com.redis.pipeline.ResponseHandling$$anon$1$$anonfun$2.apply(ResponseHandling.scala:65)
    at akka.io.PipelineStage$$anon$7$$anon$8.akka$io$PipelineStage$$anon$$anon$$loopRight(Pipelines.scala:667)
    at akka.io.PipelineStage$$anon$7$$anon$8$$anonfun$14.apply(Pipelines.scala:680)
    at akka.io.PipelineStage$$anon$7$$anon$8$$anonfun$14.apply(Pipelines.scala:680)
    at akka.io.PipelineFactory$$anon$6$$anonfun$12.apply(Pipelines.scala:336)
    at akka.io.PipelineFactory$$anon$6$$anonfun$12.apply(Pipelines.scala:336)
    at scala.util.Try$.apply(Try.scala:161)
    at akka.io.PipelineFactory$$anon$6.injectEvent(Pipelines.scala:336)
    at akka.io.TcpPipelineHandler$$anonfun$receive$1.applyOrElse(TcpPipelineHandler.scala:152)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)
    at akka.actor.ActorCell.invoke(ActorCell.scala:456)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237)
    at akka.dispatch.Mailbox.run(Mailbox.scala:219)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

ethul avatar Sep 15 '13 18:09 ethul

Thanks for reporting .. will address shortly

debasishg avatar Sep 15 '13 19:09 debasishg

Looks like the return type of a Lua script in Redis varies depending on the type that Lua returns. Will explore soon and come up with a solution.

debasishg avatar Sep 15 '13 21:09 debasishg

Already recorded as https://github.com/debasishg/scala-redis-nb/issues/37

debasishg avatar Sep 15 '13 21:09 debasishg

Ah, thanks, sorry for the dupe

ethul avatar Sep 15 '13 21:09 ethul