2016-03-27 20 views
-1

Ben scala ile Redis ve Redisson framework kullanıyorum ve içinde uygulanmış Set ve Yayınla \ Abone komutları dağıtılır. Sistem mesaj aldıktan sonra Set eriştiğinde, çerçevelerin tüm davranışları tahmin edilemez hale gelir. İşte onu oluşturan istisna ve kaynak kodudur. Herhangi bir fikir ?Redisson framework ile Redis framework tahmin edilemeyen davranış

import org.redisson.RedissonClient 
import org.redisson._ 

import org.redisson.core.{ RTopic, MessageListener } 
import org.scalatest._ 
import org.slf4j.LoggerFactory 
object RedissonTest { 


    val config = new Config().setUseLinuxNativeEpoll(true) 
    config.useSingleServer().setAddress("127.0.0.1:6379") 

    val redis = Redisson.create(config ) 
    val set_test = java.util.UUID.randomUUID 
    val system_topic = "system_bus" 

    class RedissonTestSet extends FlatSpec with Matchers { 

    val topic:RTopic[String] = redis.getTopic(system_topic) 
    val redisSet:java.util.Set[String] = redis.getSet(set_test.toString) 

    it should "produce fucking exeption " in { 

    val listener = new MessageListener[ String ]() { 
    override def onMessage(chanel: String, message: String) { 
     checkSet 
    } 
    } 
    topic.addListener(listener) 


    for (i <- 1 to 1000) { 
    redisSet.add(i.toString ) 
    } 
    topic.publish(new String("hey this is the bug")) 

} 

def checkSet { 
    for (i <-1 to 1000) { 
    if (redisSet.contains(i.toString)) { 
    } 
    } 
} 
} 
} 

io.netty.handler.codec.DecoderException: io.netty.util.concurrent.BlockingOperationException: DefaultPromise @ 447696da (eksik) io.netty.handler.codec.ReplayingDecoder.callDecode de (ReplayingDecoder.java : 431) ~ [netty-codec-4.0.34.Final.jar: 4.0.34.Final] io.netty.handler.codec adresindeki .ByteToMessageDecoder.channelRead (ByteToMessageDecoder.java:244) ~ [netty-codec-4.0 .34.Final.jar: 4.0.34.Final] io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:307) [netty-transport-4.0.34.Final.jar: 4.0.34.Final] io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (ÖzetChannelHandlerContext.java: 293) [netty-transport-4.0.34.Final.jar: 4.0.34.Final] io.netty.channel.ChannelInboundHandlerAdapter.channelRead (ChannelInboundHandlerAdapter.java:86) [netty-transport-4.0.34.Final. jar: 4.0.34.Final] io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:307) [netty-transport-4.0.34.Final.jar: 4.0.34.Final] io.netty adresinde .channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.java:293) [netty-transport-4.0.34.Final.jar: 4.0.34.Final] io.netty.channel.ChannelInboundHandlerAdapter.channelRead (ChannelInboundHandlerAdapter.java:86) [netty-transport-4.0.34.Final.jar: 4.0.34.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (ÖzetChannelHandlerContext.java:307) [netty-transport-4.0.34.Final.jar: 4.0.34.Final] io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (ÖzetChannelHandlerContext.java:293) [netty-transport-4.0.34.Final.jar: 4.0.34.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead (VarsayılanChannelPipeline .java: 840) [netty-transport-4.0.34.Final.jar: 4.0.34.Final] at io.netty.channel.epoll.AbstractEpollStreamChannel $ EpollStreamUnsafe.epollInReady (SoyutEpollStreamChannel.java:830) [netty-transport -native-epoll-4.0.34.Final-linux-x86_64.jar: na] adresinde io.netty.channel.epoll.EpollEventLoop.processReady (EpollEventLoop.java:348) [netty-transport-native-epoll-4.0. 34.Final-linux-x86_64.jar: na] at io.netty.channel.epoll.EpollEventLoop.run (EpollEventLoop.java:264) [netty-taşıma-yerel-epoll-4.0.34.Final-linux-x86_64 .jar: na] io.netty.util.concurrent.SingleThreadEventExecutor $ 2.r adresinde . un (SingleThreadEventExecutor.java:112) [netty-common-4.0.34.Final.jar: 4.0.34.Final] adresinde io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run (DefaultThreadFactory.java:137) [ netty-common-4.0.34.Final.jar: 4.0.34.Final] java.lang.Thread.run (Thread.java:745) [na: 1.8.0_77] Nedeniyle: io.netty.util .concurrent.BlockingOperationException: DefaultPromise @ 447696da (eksik) adresinde io.netty.util.concurrent.DefaultPromise.checkDeadLock (DefaultPromise.java:391) ~ [netty-common-4.0.34.Final.jar: 4.0.34.Final ] io.netty.util.concurrent.DefaultPromise.awaitUnlaşılmaz (DefaultPromise.java:284) ~ [netty-common-4.0.34.Final.jar: 4.0.34.Final] io.netty.util.concurrent adresinde .DefaultPromise.awaitUnlaşılmaz (DefaultPromise.java:33) ~ [netty-common-4.0.34.Final.jar: 4.0.34.Final]Org.redisson.command.CommandAsyncService.get adresinde(CommandAsyncService.java:84) ~ [redisson-2.2.9.jar: na] org.redisson.RedissonObject.get (RedissonObject.java:49) ~ [redisson- 2.2.9.jar: na] org.redisson.RedissonSet.contains adresinde (RedissonSet.java:70) ~ [redisson-2.2.9.jar: na] com.web3.RedissonTest $ RedissonTestSet $$ anonfun $ checkSet $ 1.apply $ mcVI ​​$ sp (ReddisonSetPubSubTest.scala: 45) scala.collection.immutable.Range.foreach $ [test-classes /: na] $ mVc $ sp (Range.scala: 141) ~ [scala-library-2.10.4.jar: na] com.web3.RedissonTest $ RedissonTestSet.checkSet (ReddisonSetPubSubTest.scala: 44) ~ [test sınıfları /: na] com.web3.RedissonTest $ RedissonTestSet $$ anonfun $ 1 $$ anon $ 1.onMessage (ReddisonSetPubSubTest.scala: 30) ~ [test-classes /: na] com.web3.RedissonTest $ RedissonTestSet $$ anonfun $ 1 $$ anon $ 1.onMessage (ReddisonSetPubSubTest.scala: 27) ~ [test-sınıfları /: na] org. redisson.PubSubMessageListener.onMessage (PubSubMessageListener.java:73) ~ [redisson-2.2.9.jar: na] org.redisson.client.RedisPubSubConnection.onMessage (RedisPubSubConnection.java:68) ~ [redisson-2.2.9. jar: na] org.redisson.client.handler.CommandDecoder.handleMultiResult (CommandD ecoder.java:277) ~ [redisson-2.2.9.jar: na] adresindeki org.redisson.client.handler.CommandDecoder.decodeMulti (CommandDecoder.java:242) ~ [redisson-2.2.9.jar: na] Org.redisson.client.handler.CommandDecoder.decode adresinde (CommandDecoder.java:217) ~ [redisson-2.2.9.jar: na] org.redisson.client.handler.CommandDecoder.decode adresinde (CommandDecoder.java: 97) ~ [redisson-2.2.9.jar: na] adresinde io.netty.handler.codec.ReplayingDecoder.callDecode (ReplayingDecoder.java:376) ~ [netty-codec-4.0.34.Final.jar: 4.0. 34.Final] ... 16 ortak çerçeve atlandı

cevap

2

Bu hata, Redisson 2.2.11 ile giderilmiştir