Package com.linkedin.davinci.client
Class BlockingDaVinciRecordTransformer<K,V,O>
java.lang.Object
com.linkedin.davinci.client.DaVinciRecordTransformer<K,V,O>
com.linkedin.davinci.client.BlockingDaVinciRecordTransformer<K,V,O>
- Type Parameters:
K
- type of the input keyV
- type of the input valueO
- type of the output value
- All Implemented Interfaces:
Closeable
,AutoCloseable
@Experimental
public class BlockingDaVinciRecordTransformer<K,V,O>
extends DaVinciRecordTransformer<K,V,O>
This is an implementation of
DaVinciRecordTransformer
that implements blocking.
It ensures that no puts can proceed until onStartIngestionTask finishes.-
Constructor Summary
ConstructorsConstructorDescriptionBlockingDaVinciRecordTransformer
(DaVinciRecordTransformer recordTransformer, org.apache.avro.Schema keySchema, org.apache.avro.Schema inputValueSchema, org.apache.avro.Schema outputValueSchema, DaVinciRecordTransformerConfig recordTransformerConfig) -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
void
internalOnRecovery
(AbstractStorageEngine storageEngine, int partitionId, InternalAvroSpecificSerializer<PartitionState> partitionStateSerializer, Lazy<VeniceCompressor> compressor) void
onEndVersionIngestion
(int currentVersion) Lifecycle event triggered when record consumption is stopped forDaVinciRecordTransformer.storeVersion
.void
onStartVersionIngestion
(boolean isCurrentVersion) Lifecycle event triggered before consuming records forDaVinciRecordTransformer.storeVersion
.void
onVersionSwap
(int currentVersion, int futureVersion, int partitionId) Lifecycle event triggered when a version swap is detected for partitionId It is used for DVRT CDC.void
processDelete
(Lazy<K> key, int partitionId) Override this method to customize the behavior for record deletions.void
processPut
(Lazy<K> key, Lazy<O> value, int partitionId) Implement this method to manage custom state outside the Da Vinci Client.Implement this method to transform records before they are stored.Methods inherited from class com.linkedin.davinci.client.DaVinciRecordTransformer
getAlwaysBootstrapFromVersionTopic, getClassHash, getInputValueSchema, getKeySchema, getOutputValueSchema, getRecordTransformerUtility, getStoreRecordsInDaVinci, getStoreVersion, onRecovery, prependSchemaIdToHeader, prependSchemaIdToHeader, transformAndProcessPut, useUniformInputValueSchema
-
Constructor Details
-
BlockingDaVinciRecordTransformer
public BlockingDaVinciRecordTransformer(DaVinciRecordTransformer recordTransformer, org.apache.avro.Schema keySchema, org.apache.avro.Schema inputValueSchema, org.apache.avro.Schema outputValueSchema, DaVinciRecordTransformerConfig recordTransformerConfig)
-
-
Method Details
-
transform
Description copied from class:DaVinciRecordTransformer
Implement this method to transform records before they are stored. This can be useful for tasks such as filtering out unused fields to save storage space.- Specified by:
transform
in classDaVinciRecordTransformer<K,
V, O> - Parameters:
key
- the key of the record to be transformedvalue
- the value of the record to be transformedpartitionId
- what partition the record came from- Returns:
DaVinciRecordTransformerResult
-
processPut
Description copied from class:DaVinciRecordTransformer
Implement this method to manage custom state outside the Da Vinci Client.- Specified by:
processPut
in classDaVinciRecordTransformer<K,
V, O> - Parameters:
key
- the key of the record to be putvalue
- the value of the record to be put, derived from the output ofDaVinciRecordTransformer.transform(Lazy key, Lazy value, int partitionId)
partitionId
- what partition the record came from
-
processDelete
Description copied from class:DaVinciRecordTransformer
Override this method to customize the behavior for record deletions. For example, you can use this method to delete records from a custom storage outside the Da Vinci Client. By default, it performs no operation.- Overrides:
processDelete
in classDaVinciRecordTransformer<K,
V, O> - Parameters:
key
- the key of the record to be deletedpartitionId
- what partition the record is being deleted from
-
onStartVersionIngestion
public void onStartVersionIngestion(boolean isCurrentVersion) Description copied from class:DaVinciRecordTransformer
Lifecycle event triggered before consuming records forDaVinciRecordTransformer.storeVersion
. Use this method to perform setup operations such as opening database connections or creating tables. By default, it performs no operation.- Overrides:
onStartVersionIngestion
in classDaVinciRecordTransformer<K,
V, O>
-
onEndVersionIngestion
public void onEndVersionIngestion(int currentVersion) Description copied from class:DaVinciRecordTransformer
Lifecycle event triggered when record consumption is stopped forDaVinciRecordTransformer.storeVersion
. Use this method to perform cleanup operations such as closing database connections or dropping tables. By default, it performs no operation.- Overrides:
onEndVersionIngestion
in classDaVinciRecordTransformer<K,
V, O>
-
onVersionSwap
public void onVersionSwap(int currentVersion, int futureVersion, int partitionId) Lifecycle event triggered when a version swap is detected for partitionId It is used for DVRT CDC. -
internalOnRecovery
public void internalOnRecovery(AbstractStorageEngine storageEngine, int partitionId, InternalAvroSpecificSerializer<PartitionState> partitionStateSerializer, Lazy<VeniceCompressor> compressor) -
close
- Throws:
IOException
-