Search in sources :

Example 16 with Kryo

use of com.esotericsoftware.kryo.Kryo in project Paper by pilgr.

the class DbStoragePlainFile method createKryoInstance.

private Kryo createKryoInstance() {
    Kryo kryo = new Kryo();
    kryo.register(PaperTable.class);
    kryo.setDefaultSerializer(CompatibleFieldSerializer.class);
    kryo.setReferences(false);
    // Serialize Arrays$ArrayList
    //noinspection ArraysAsListWithZeroOrOneArgument
    kryo.register(Arrays.asList("").getClass(), new ArraysAsListSerializer());
    UnmodifiableCollectionsSerializer.registerSerializers(kryo);
    SynchronizedCollectionsSerializer.registerSerializers(kryo);
    // Serialize inner AbstractList$SubAbstractListRandomAccess
    kryo.addDefaultSerializer(new ArrayList<>().subList(0, 0).getClass(), new NoArgCollectionSerializer());
    // Serialize AbstractList$SubAbstractList
    kryo.addDefaultSerializer(new LinkedList<>().subList(0, 0).getClass(), new NoArgCollectionSerializer());
    // To keep backward compatibility don't change the order of serializers above
    // UUID support
    kryo.register(UUID.class, new UUIDSerializer());
    for (Class<?> clazz : mCustomSerializers.keySet()) kryo.register(clazz, mCustomSerializers.get(clazz));
    kryo.setInstantiatorStrategy(new Kryo.DefaultInstantiatorStrategy(new StdInstantiatorStrategy()));
    return kryo;
}
Also used : NoArgCollectionSerializer(io.paperdb.serializer.NoArgCollectionSerializer) StdInstantiatorStrategy(org.objenesis.strategy.StdInstantiatorStrategy) UUIDSerializer(de.javakaffee.kryoserializers.UUIDSerializer) ArraysAsListSerializer(de.javakaffee.kryoserializers.ArraysAsListSerializer) Kryo(com.esotericsoftware.kryo.Kryo)

Example 17 with Kryo

use of com.esotericsoftware.kryo.Kryo in project Paper by pilgr.

the class DbStoragePlainFile method readTableFile.

private <E> E readTableFile(String key, File originalFile, boolean v1CompatibilityMode) {
    try {
        final Input i = new Input(new FileInputStream(originalFile));
        final Kryo kryo = getKryo();
        if (v1CompatibilityMode) {
            // Set temporary generic optimization to support Kryo 3.x format
            kryo.getFieldSerializerConfig().setOptimizedGenerics(true);
        }
        //noinspection unchecked
        final PaperTable<E> paperTable = kryo.readObject(i, PaperTable.class);
        i.close();
        if (v1CompatibilityMode) {
            kryo.getFieldSerializerConfig().setOptimizedGenerics(false);
        }
        return paperTable.mContent;
    } catch (FileNotFoundException | KryoException | ClassCastException e) {
        // Give one more chance, reread data in compatibility mode
        if (!v1CompatibilityMode) {
            return readTableFile(key, originalFile, true);
        }
        // Clean up an unsuccessfully written file
        if (originalFile.exists()) {
            if (!originalFile.delete()) {
                throw new PaperDbException("Couldn't clean up broken/unserializable file " + originalFile, e);
            }
        }
        String errorMessage = "Couldn't read/deserialize file " + originalFile + " for table " + key;
        throw new PaperDbException(errorMessage, e);
    }
}
Also used : Input(com.esotericsoftware.kryo.io.Input) KryoException(com.esotericsoftware.kryo.KryoException) FileNotFoundException(java.io.FileNotFoundException) FileInputStream(java.io.FileInputStream) Kryo(com.esotericsoftware.kryo.Kryo)

Example 18 with Kryo

use of com.esotericsoftware.kryo.Kryo in project quasar by puniverse.

the class KryoUtil method newKryo.

public static Kryo newKryo() {
    Kryo kryo = new ReplaceableObjectKryo();
    kryo.setRegistrationRequired(false);
    kryo.setInstantiatorStrategy(new SerializingInstantiatorStrategy());
    registerCommonClasses(kryo);
    return kryo;
}
Also used : SerializingInstantiatorStrategy(org.objenesis.strategy.SerializingInstantiatorStrategy) Kryo(com.esotericsoftware.kryo.Kryo)

Example 19 with Kryo

use of com.esotericsoftware.kryo.Kryo in project jstorm by alibaba.

the class SerializationFactory method getKryo.

public static Kryo getKryo(Map conf) {
    IKryoFactory kryoFactory = (IKryoFactory) Utils.newInstance((String) conf.get(Config.TOPOLOGY_KRYO_FACTORY));
    Kryo k = kryoFactory.getKryo(conf);
    if (WorkerClassLoader.getInstance() != null)
        k.setClassLoader(WorkerClassLoader.getInstance());
    k.register(byte[].class);
    /* tuple payload serializer is specified via configuration */
    String payloadSerializerName = (String) conf.get(Config.TOPOLOGY_TUPLE_SERIALIZER);
    try {
        Class serializerClass = Class.forName(payloadSerializerName, true, k.getClassLoader());
        Serializer serializer = resolveSerializerInstance(k, ListDelegate.class, serializerClass, conf);
        k.register(ListDelegate.class, serializer);
    } catch (ClassNotFoundException ex) {
        throw new RuntimeException(ex);
    }
    k.register(ArrayList.class, new ArrayListSerializer());
    k.register(HashMap.class, new HashMapSerializer());
    k.register(HashSet.class, new HashSetSerializer());
    k.register(BigInteger.class, new BigIntegerSerializer());
    k.register(TransactionAttempt.class);
    k.register(Values.class);
    k.register(backtype.storm.metric.api.IMetricsConsumer.DataPoint.class);
    k.register(backtype.storm.metric.api.IMetricsConsumer.TaskInfo.class);
    k.register(ConsList.class);
    k.register(BatchGroupId.class, new BatchGroupIdSerializer());
    Map<String, String> registrations = normalizeKryoRegister(conf);
    kryoFactory.preRegister(k, conf);
    boolean skipMissing = (Boolean) conf.get(Config.TOPOLOGY_SKIP_MISSING_KRYO_REGISTRATIONS);
    for (String klassName : registrations.keySet()) {
        String serializerClassName = registrations.get(klassName);
        try {
            Class klass = Class.forName(klassName, true, k.getClassLoader());
            Class serializerClass = null;
            if (serializerClassName != null)
                serializerClass = Class.forName(serializerClassName, true, k.getClassLoader());
            if (serializerClass == null) {
                k.register(klass);
            } else {
                k.register(klass, resolveSerializerInstance(k, klass, serializerClass, conf));
            }
        } catch (ClassNotFoundException e) {
            if (skipMissing) {
                LOG.info("Could not find serialization or class for " + serializerClassName + ". Skipping registration...");
            } else {
                throw new RuntimeException(e);
            }
        }
    }
    kryoFactory.postRegister(k, conf);
    if (conf.get(Config.TOPOLOGY_KRYO_DECORATORS) != null) {
        for (String klassName : (List<String>) conf.get(Config.TOPOLOGY_KRYO_DECORATORS)) {
            try {
                Class klass = Class.forName(klassName, true, k.getClassLoader());
                IKryoDecorator decorator = (IKryoDecorator) klass.newInstance();
                decorator.decorate(k);
            } catch (ClassNotFoundException e) {
                if (skipMissing) {
                    LOG.info("Could not find kryo decorator named " + klassName + ". Skipping registration...");
                } else {
                    throw new RuntimeException(e);
                }
            } catch (InstantiationException e) {
                throw new RuntimeException(e);
            } catch (IllegalAccessException e) {
                throw new RuntimeException(e);
            }
        }
    }
    kryoFactory.postDecorate(k, conf);
    return k;
}
Also used : ArrayListSerializer(backtype.storm.serialization.types.ArrayListSerializer) BatchGroupIdSerializer(com.alibaba.jstorm.transactional.BatchGroupIdSerializer) HashMapSerializer(backtype.storm.serialization.types.HashMapSerializer) HashSetSerializer(backtype.storm.serialization.types.HashSetSerializer) BigIntegerSerializer(com.esotericsoftware.kryo.serializers.DefaultSerializers.BigIntegerSerializer) ConsList(storm.trident.tuple.ConsList) Kryo(com.esotericsoftware.kryo.Kryo) Serializer(com.esotericsoftware.kryo.Serializer) BigIntegerSerializer(com.esotericsoftware.kryo.serializers.DefaultSerializers.BigIntegerSerializer) BatchGroupIdSerializer(com.alibaba.jstorm.transactional.BatchGroupIdSerializer) HashMapSerializer(backtype.storm.serialization.types.HashMapSerializer) HashSetSerializer(backtype.storm.serialization.types.HashSetSerializer) ArrayListSerializer(backtype.storm.serialization.types.ArrayListSerializer)

Example 20 with Kryo

use of com.esotericsoftware.kryo.Kryo in project flink by apache.

the class ValueSerializer method checkKryoInitialized.

private void checkKryoInitialized() {
    if (this.kryo == null) {
        this.kryo = new Kryo();
        Kryo.DefaultInstantiatorStrategy instantiatorStrategy = new Kryo.DefaultInstantiatorStrategy();
        instantiatorStrategy.setFallbackInstantiatorStrategy(new StdInstantiatorStrategy());
        kryo.setInstantiatorStrategy(instantiatorStrategy);
        this.kryo.setAsmEnabled(true);
        this.kryo.register(type);
    }
}
Also used : StdInstantiatorStrategy(org.objenesis.strategy.StdInstantiatorStrategy) Kryo(com.esotericsoftware.kryo.Kryo)

Aggregations

Kryo (com.esotericsoftware.kryo.Kryo)71 Input (com.esotericsoftware.kryo.io.Input)31 Output (com.esotericsoftware.kryo.io.Output)29 ByteArrayOutputStream (java.io.ByteArrayOutputStream)17 ByteArrayInputStream (java.io.ByteArrayInputStream)16 StdInstantiatorStrategy (org.objenesis.strategy.StdInstantiatorStrategy)13 Test (org.junit.Test)10 Test (org.testng.annotations.Test)8 ArrayList (java.util.ArrayList)6 BigIntegerSerializer (com.esotericsoftware.kryo.serializers.DefaultSerializers.BigIntegerSerializer)5 File (java.io.File)5 FileNotFoundException (java.io.FileNotFoundException)5 IOException (java.io.IOException)5 List (java.util.List)5 Map (java.util.Map)5 BaseTest (org.broadinstitute.hellbender.utils.test.BaseTest)5 ArrayListSerializer (backtype.storm.serialization.types.ArrayListSerializer)3 HashMapSerializer (backtype.storm.serialization.types.HashMapSerializer)3 HashSetSerializer (backtype.storm.serialization.types.HashSetSerializer)3 Serializer (com.esotericsoftware.kryo.Serializer)3