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;
}
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);
}
}
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;
}
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;
}
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);
}
}
Aggregations