etaty / rediscala

Non-blocking, Reactive Redis driver for Scala (with Sentinel support)
Apache License 2.0
790 stars 142 forks source link

RedisClientMasterSlaves : NOAUTH Authentication required #181

Closed alifirat closed 7 years ago

alifirat commented 7 years ago

Hi,

I'm using the RedisClientMasterSlaves in the context of Akka Application. I wrote a little wrapper of your client :

case class RedisCache
(
  master : RedisServer,
  slaves : Seq[RedisServer]
)(implicit actorSystem : ActorSystem)
  extends PersistentCache[DeviceKey, Data]
    with LazyLogging
    with Serializable {

  import actorSystem.dispatcher

  /**
    * Redis client IO
    */
  val redisClient = RedisClientMasterSlaves(master,slaves)

When I'm trying to test my wrapper, I got the following exception :

[info]   redis.actors.ReplyErrorException: NOAUTH Authentication required.
[info]   at redis.actors.RedisReplyDecoder$$anonfun$decodeRedisReply$1.apply(RedisReplyDecoder.scala:68)
[info]   at redis.actors.RedisReplyDecoder$$anonfun$decodeRedisReply$1.apply(RedisReplyDecoder.scala:67)
[info]   at redis.protocol.DecodeResult$class.foreach(RedisProtocolReply.scala:89)
[info]   at redis.protocol.FullyDecoded.foreach(RedisProtocolReply.scala:112)
[info]   at redis.actors.RedisReplyDecoder.decodeRedisReply(RedisReplyDecoder.scala:67)
[info]   at redis.actors.RedisReplyDecoder.decodeRepliesRecur(RedisReplyDecoder.scala:50)
[info]   at redis.actors.RedisReplyDecoder.decodeReplies(RedisReplyDecoder.scala:35)
[info]   at redis.actors.RedisReplyDecoder$$anonfun$receive$1.applyOrElse(RedisReplyDecoder.scala:28)
[info]   at akka.actor.Actor$class.aroundReceive(Actor.scala:497)
[info]   at redis.actors.RedisReplyDecoder.aroundReceive(RedisReplyDecoder.scala:11
```)

The failing test :

class TEST_REDIS_CACHE extends TestKit(ActorSystem("TEST_REDIS_CACHE", ConfigFactory.load("test")))
  with AsyncFlatSpecLike
  with Matchers
  with BeforeAndAfterAll
  with BeforeAndAfterEach
  with LazyLogging {

  val cache = RedisCache(Val.redisMasterServer, Val.redisSlavesServer)

  it should "be empty after his instanciation" in {
    cache.keys flatMap { keys => keys should have size 0L}
  }

There is no open issue about such exception and I cannot find a spec about MasterSlaves client. From what I read about this error, I need to seed an Auth command but I think that it's already done in your client. Do you have an idea of what's happenning ?

alifirat commented 7 years ago

My mistake, I was missing a password in my test. Closing the issue.