in cassandra-analytics-core/src/main/java/org/apache/cassandra/spark/data/CassandraDataLayer.java [755:796]
public void write(Kryo kryo, Output out, CassandraDataLayer dataLayer)
{
LOGGER.info("Serializing CassandraDataLayer with Kryo");
out.writeString(dataLayer.keyspace);
out.writeString(dataLayer.table);
out.writeString(dataLayer.snapshotName);
out.writeString(dataLayer.datacenter);
out.writeInt(dataLayer.sidecarClientConfig.port());
out.writeInt(dataLayer.sidecarClientConfig.maxRetries());
out.writeLong(dataLayer.sidecarClientConfig.millisToSleep());
out.writeLong(dataLayer.sidecarClientConfig.maxMillisToSleep());
out.writeLong(dataLayer.sidecarClientConfig.maxBufferSize());
out.writeLong(dataLayer.sidecarClientConfig.chunkBufferSize());
out.writeInt(dataLayer.sidecarClientConfig.maxPoolSize());
out.writeInt(dataLayer.sidecarClientConfig.timeoutSeconds());
kryo.writeObject(out, dataLayer.sidecarClientConfig.maxBufferOverride());
kryo.writeObject(out, dataLayer.sidecarClientConfig.chunkBufferOverride());
kryo.writeObjectOrNull(out, dataLayer.sslConfig, SslConfig.class);
kryo.writeObject(out, dataLayer.cqlTable);
kryo.writeObject(out, dataLayer.tokenPartitioner);
kryo.writeObject(out, dataLayer.version());
kryo.writeObject(out, dataLayer.consistencyLevel);
kryo.writeObject(out, dataLayer.clusterConfig);
kryo.writeObject(out, dataLayer.availabilityHints);
out.writeBoolean(dataLayer.bigNumberConfigMap.isEmpty()); // Kryo fails to deserialize bigNumberConfigMap map if empty
if (!dataLayer.bigNumberConfigMap.isEmpty())
{
kryo.writeObject(out, dataLayer.bigNumberConfigMap);
}
out.writeBoolean(dataLayer.enableStats);
out.writeBoolean(dataLayer.readIndexOffset);
out.writeBoolean(dataLayer.useIncrementalRepair);
// If lastModifiedTimestampField exist, it aliases the LMT field
out.writeString(dataLayer.lastModifiedTimestampField);
// Write the list of requested features: first write the size, then write the feature names
SchemaFeaturesListWrapper listWrapper = new SchemaFeaturesListWrapper();
listWrapper.requestedFeatureNames = dataLayer.requestedFeatures.stream()
.map(SchemaFeature::optionName)
.collect(Collectors.toList());
kryo.writeObject(out, listWrapper);
kryo.writeObject(out, dataLayer.rfMap);
}