2016-11-28 3 views
10

Ich versuche, einige Objekte von benutzerdefinierten Klassen zur Serialisierung und ich bekam die folgende Ausnahme:Kryo Absturz 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 

Ich habe ein ArrayList:

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

Der Speicher ist serializable und für alle Inhalte darin sind auch.

Aber ich habe immer noch diesen Fehler und ich weiß nicht warum. In der Eigenschaftenzuordnung gibt es nur einen Schlüssel und einen Wert. Der Schlüssel ist eine Zeichenfolge und der Wert ist eine lange Zeichenfolge (ein Hash des gesamten Objekts).

+0

Gibt es eine Chance, dass Sie den Code, wo dieser Absturz auftritt, in Form eines minimalen, vollständigen, überprüfbaren Beispiels (http://stackoverflow.com/help/mcve) bereitstellen können? Das würde wirklich helfen. – entpnerd

+0

Ich fand heraus, dass eine der Datenbanken meine Objekte mit IdentityHashMap füllte und nicht mit der klassischen HashMap. Das hat das Problem verursacht. – user2524707

Antwort

2

Da meine Speicherobjekte jede Art von Karten akzeptieren, hatte ich nicht bemerkt, dass eine der Datenbanken die IdentityHashMap Instanz zurückgab. Das Entfernen und die Durchsetzung der Verwendung eines normalen HashMap löste das Problem.

Verwandte Themen