Class MetadataSerializer
- java.lang.Object
-
- org.apache.cassandra.io.sstable.metadata.MetadataSerializer
-
- All Implemented Interfaces:
IMetadataSerializer
public class MetadataSerializer extends java.lang.Object implements IMetadataSerializer
Metadata serializer for SSTablesversion >= 'na'
.File format := | number of components (4 bytes) | crc | toc | crc | component1 | c1 crc | component2 | c2 crc | ... | toc := | component type (4 bytes) | position of component |
IMetadataComponent.Type's ordinal() defines the order of serialization.
-
-
Constructor Summary
Constructors Constructor Description MetadataSerializer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<MetadataType,MetadataComponent>
deserialize(Descriptor descriptor, java.util.EnumSet<MetadataType> types)
Deserialize specified metadata components from given descriptor.MetadataComponent
deserialize(Descriptor descriptor, MetadataType type)
Deserialized only metadata component specified from given descriptor.java.util.Map<MetadataType,MetadataComponent>
deserialize(Descriptor descriptor, FileDataInput in, java.util.EnumSet<MetadataType> selectedTypes)
void
mutate(Descriptor descriptor, java.lang.String description, java.util.function.UnaryOperator<StatsMetadata> transform)
Mutate SSTable Metadata NOTE: mutating stats metadata of a live sstable will race with entire-sstable-streaming, please useSSTableReader.mutateLevelAndReload(int)
instead on live sstable.void
mutateLevel(Descriptor descriptor, int newLevel)
Mutate SSTable level NOTE: mutating stats metadata of a live sstable will race with entire-sstable-streaming, please useSSTableReader.mutateLevelAndReload(int)
instead on live sstable.void
mutateRepairMetadata(Descriptor descriptor, long newRepairedAt, TimeUUID newPendingRepair, boolean isTransient)
Mutate the repairedAt time, pendingRepair ID, and transient status.void
rewriteSSTableMetadata(Descriptor descriptor, java.util.Map<MetadataType,MetadataComponent> currentComponents)
Replace the sstable metadata file (-Statistics.db
) with the given components.void
serialize(java.util.Map<MetadataType,MetadataComponent> components, DataOutputPlus out, Version version)
Serialize given metadata components
-
-
-
Method Detail
-
serialize
public void serialize(java.util.Map<MetadataType,MetadataComponent> components, DataOutputPlus out, Version version) throws java.io.IOException
Description copied from interface:IMetadataSerializer
Serialize given metadata components- Specified by:
serialize
in interfaceIMetadataSerializer
- Parameters:
components
- Metadata components to serialize- Throws:
java.io.IOException
-
deserialize
public java.util.Map<MetadataType,MetadataComponent> deserialize(Descriptor descriptor, java.util.EnumSet<MetadataType> types) throws java.io.IOException
Description copied from interface:IMetadataSerializer
Deserialize specified metadata components from given descriptor.- Specified by:
deserialize
in interfaceIMetadataSerializer
- Parameters:
descriptor
- SSTable descriptor- Returns:
- Deserialized metadata components, in deserialized order.
- Throws:
java.io.IOException
-
deserialize
public MetadataComponent deserialize(Descriptor descriptor, MetadataType type) throws java.io.IOException
Description copied from interface:IMetadataSerializer
Deserialized only metadata component specified from given descriptor.- Specified by:
deserialize
in interfaceIMetadataSerializer
- Parameters:
descriptor
- SSTable descriptortype
- Metadata component type to deserialize- Returns:
- Deserialized metadata component. Can be null if specified type does not exist.
- Throws:
java.io.IOException
-
deserialize
public java.util.Map<MetadataType,MetadataComponent> deserialize(Descriptor descriptor, FileDataInput in, java.util.EnumSet<MetadataType> selectedTypes) throws java.io.IOException
- Throws:
java.io.IOException
-
mutate
public void mutate(Descriptor descriptor, java.lang.String description, java.util.function.UnaryOperator<StatsMetadata> transform) throws java.io.IOException
Description copied from interface:IMetadataSerializer
Mutate SSTable Metadata NOTE: mutating stats metadata of a live sstable will race with entire-sstable-streaming, please useSSTableReader.mutateLevelAndReload(int)
instead on live sstable.- Specified by:
mutate
in interfaceIMetadataSerializer
- Parameters:
descriptor
- SSTable descriptordescription
- on changed attributionstransform
- function to mutate sstable metadata- Throws:
java.io.IOException
-
mutateLevel
public void mutateLevel(Descriptor descriptor, int newLevel) throws java.io.IOException
Description copied from interface:IMetadataSerializer
Mutate SSTable level NOTE: mutating stats metadata of a live sstable will race with entire-sstable-streaming, please useSSTableReader.mutateLevelAndReload(int)
instead on live sstable.- Specified by:
mutateLevel
in interfaceIMetadataSerializer
- Parameters:
descriptor
- SSTable descriptornewLevel
- new SSTable level- Throws:
java.io.IOException
-
mutateRepairMetadata
public void mutateRepairMetadata(Descriptor descriptor, long newRepairedAt, TimeUUID newPendingRepair, boolean isTransient) throws java.io.IOException
Description copied from interface:IMetadataSerializer
Mutate the repairedAt time, pendingRepair ID, and transient status. NOTE: mutating stats metadata of a live sstable will race with entire-sstable-streaming, please useSSTableReader.mutateLevelAndReload(int)
instead on live sstable.- Specified by:
mutateRepairMetadata
in interfaceIMetadataSerializer
- Throws:
java.io.IOException
-
rewriteSSTableMetadata
public void rewriteSSTableMetadata(Descriptor descriptor, java.util.Map<MetadataType,MetadataComponent> currentComponents) throws java.io.IOException
Description copied from interface:IMetadataSerializer
Replace the sstable metadata file (-Statistics.db
) with the given components.- Specified by:
rewriteSSTableMetadata
in interfaceIMetadataSerializer
- Throws:
java.io.IOException
-
-