2016-11-28 9 views
10

私はカスタムクラスの一部のオブジェクトをシリアル化しようとしていると私は次の例外だ:私はArrayListを持ってKryoクラッシュEnvironmentFailureException

com.esotericsoftware.kryo.KryoException: com.sleepycat.je.EnvironmentFailureException: (JE 5.0.73) IdentityHashMap.entrySet() should not be used. See [#18167]. UNEXPECTED_STATE: Unexpected internal state, may have side effects. 
Serialization trace: 
highestFlushLevels (com.sleepycat.je.recovery.DirtyINMap) 
checkpointDirtyMap (com.sleepycat.je.recovery.Checkpointer) 
checkpointer (com.sleepycat.je.dbi.EnvironmentImpl) 
envImpl (com.sleepycat.je.dbi.MemoryBudget) 
budget (com.sleepycat.je.cleaner.DbFileSummaryMap) 
dbFileSummaries (com.sleepycat.je.dbi.DatabaseImpl) 
databaseImpl (com.sleepycat.je.Database) 
db (com.thinkaurelius.titan.diskstorage.berkeleyje.BerkeleyJEKeyValueStore) 
store (com.thinkaurelius.titan.diskstorage.keycolumnvalue.keyvalue.OrderedKeyValueStoreAdapter) 
store (com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.NoKCVSCache) 
edgeStore (com.thinkaurelius.titan.diskstorage.Backend) 
backend (com.thinkaurelius.titan.graphdb.database.StandardTitanGraph) 
graph (com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx) 
tx (com.thinkaurelius.titan.graphdb.types.vertices.PropertyKeyVertex) 
key (com.thinkaurelius.titan.graphdb.relations.SimpleTitanProperty) 
properties (main.java.com.bag.util.storage.RelationshipStorage) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:101) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:651) 
    at com.esotericsoftware.kryo.serializers.MapSerializer.write(MapSerializer.java:113) 
    at com.esotericsoftware.kryo.serializers.MapSerializer.write(MapSerializer.java:39) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:505) 
    at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:651) 
    at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:100) 
    at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:40) 
    at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:651) 
    at main.java.com.bag.server.TestServer.handleRelationshipRead(TestServer.java:299) 
    at main.java.com.bag.server.TestServer.appExecuteUnordered(TestServer.java:219) 
    at bftsmart.tom.server.defaultservices.DefaultRecoverable.executeUnordered(DefaultRecoverable.java:417) 
    at bftsmart.tom.ServiceReplica.receiveReadonlyMessage(ServiceReplica.java:214) 
    at bftsmart.tom.core.DeliveryThread.deliverUnordered(DeliveryThread.java:289) 
    at bftsmart.tom.core.TOMLayer.requestReceived(TOMLayer.java:290) 
    at bftsmart.communication.client.netty.NettyClientServerCommunicationSystemServerSide.channelRead0(NettyClientServerCommunicationSystemServerSide.java:184) 
    at bftsmart.communication.client.netty.NettyClientServerCommunicationSystemServerSide.channelRead0(NettyClientServerCommunicationSystemServerSide.java:61) 
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278) 
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:277) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:264) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:485) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:399) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:371) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) 
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: com.sleepycat.je.EnvironmentFailureException: (JE 5.0.73) IdentityHashMap.entrySet() should not be used. See [#18167]. UNEXPECTED_STATE: Unexpected internal state, may have side effects. 
    at com.sleepycat.je.EnvironmentFailureException.unexpectedState(EnvironmentFailureException.java:376) 
    at com.sleepycat.je.utilint.IdentityHashMap.entrySet(IdentityHashMap.java:31) 
    at com.esotericsoftware.kryo.serializers.MapSerializer.write(MapSerializer.java:98) 
    at com.esotericsoftware.kryo.serializers.MapSerializer.write(MapSerializer.java:39) 
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:575) 
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) 
    ... 77 more 

を:

ArrayList<RelationshipStorage> relationshipStorage = new ArrayList<>(); 

ストレージが直列化可能であり、すべてのコンテンツそれも同様です。

しかし、私はまだこのエラーがあり、私はなぜそれがわかりません。 プロパティマップには1つのキーと値しかありません。 キーは文字列で、値は長い文字列(オブジェクト全体のハッシュ)です。

+0

これは、最小、完全、および検証可能な例(http://stackoverflow.com/help/mcve)の形式で、クラッシュするコードを提供することができますか?それは本当に助けになるでしょう。 – entpnerd

+0

データベースの1つがIdentityHashMapでオブジェクトを埋めていて、古典的なHashMapではないことがわかりました。それが問題の原因となっています。 – user2524707

答えて

2

私のストレージオブジェクトはどのような種類のマップでも受け入れるので、データベースの1つがIdentityHashMapインスタンスを返したことに気付かなかった。 これを削除し、通常の使用方法を適用するHashMapが問題を解決しました。

関連する問題