Package com.linkedin.davinci.client
Class InternalDaVinciRecordTransformer<K,V,O>
java.lang.Object
com.linkedin.davinci.client.DaVinciRecordTransformer<K,V,O>
com.linkedin.davinci.client.InternalDaVinciRecordTransformer<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 InternalDaVinciRecordTransformer<K,V,O>
extends DaVinciRecordTransformer<K,V,O>
This is an implementation of
DaVinciRecordTransformer
that is used internally inside the
StoreIngestionTask
.-
Constructor Summary
ConstructorsConstructorDescriptionInternalDaVinciRecordTransformer
(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
This method gets invoked when local RocksDB scan has completed for a partition.long
void
internalOnRecovery
(StorageEngine storageEngine, int partitionId, InternalAvroSpecificSerializer<PartitionState> partitionStateSerializer, Lazy<VeniceCompressor> compressor) Using a wrapper around onRecovery because when calculating the class hash it grabs the name of the current class that is invoking it.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.boolean
Methods inherited from class com.linkedin.davinci.client.DaVinciRecordTransformer
getAlwaysBootstrapFromVersionTopic, getClassHash, getInputValueSchema, getKeySchema, getOutputValueSchema, getRecordTransformerUtility, getStoreRecordsInDaVinci, getStoreVersion, onRecovery, prependSchemaIdToHeader, prependSchemaIdToHeader, transformAndProcessPut
-
Constructor Details
-
InternalDaVinciRecordTransformer
public InternalDaVinciRecordTransformer(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>
-
useUniformInputValueSchema
public boolean useUniformInputValueSchema()- Overrides:
useUniformInputValueSchema
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(StorageEngine storageEngine, int partitionId, InternalAvroSpecificSerializer<PartitionState> partitionStateSerializer, Lazy<VeniceCompressor> compressor) Using a wrapper around onRecovery because when calculating the class hash it grabs the name of the current class that is invoking it. If we directly invoke onRecovery from this class, the class hash will be calculated based on the contents ofInternalDaVinciRecordTransformer
, not the user's implementation of DVRT. We also can't override onRecovery like the other methods because this method is final and the implementation should never be overridden. -
getCountDownStartConsumptionLatchCount
public long getCountDownStartConsumptionLatchCount() -
countDownStartConsumptionLatch
public void countDownStartConsumptionLatch()This method gets invoked when local RocksDB scan has completed for a partition. -
close
- Throws:
IOException
-