Package-level declarations
Types
Link copied to clipboard
data class ObjectKey(val stream: DestinationStream.Descriptor, val objectKey: String, val uploadId: String? = null) : WithStream
Link copied to clipboard
interface ObjectLoaderCompletedUploadPartitioner<K1 : WithStream, T, K2 : WithStream, U : RemoteObject<*>> : OutputPartitioner<K1, T, K2, ObjectLoaderUploadCompleter.UploadResult<U>>
Link copied to clipboard
class ObjectLoaderFormattedPartPartitioner<K : WithStream, T> : OutputPartitioner<K, T, ObjectKey, ObjectLoaderPartFormatter.FormattedPart>
Distribute the parts randomly across loaders. (Testing shows this is the most efficient pattern.)
Link copied to clipboard
class ObjectLoaderLoadedPartPartitioner<K : WithStream, T, U : RemoteObject<*>> : OutputPartitioner<K, T, ObjectKey, ObjectLoaderPartLoader.PartResult<U>>
The technically correct partitioning is round-robin, but since we use io.airbyte.cdk.load.message.SinglePartitionQueueWithMultiPartitionBroadcast, the partition is immaterial, so it's simpler just to return 0 here.
Link copied to clipboard
@Singleton
Wraps the PartFormatter, PartLoader, and UploadCompleter in a single BatchAccumulator.
Link copied to clipboard
class ObjectLoaderOneShotUploaderStep<K : WithStream, T : RemoteObject<*>>(objectLoaderOneShotUploader: ObjectLoaderOneShotUploader<*, T>, completedUploadQueue: PartitionedQueue<PipelineEvent<K, ObjectLoaderUploadCompleter.UploadResult<T>>>? = null, completedUploadPartitioner: ObjectLoaderCompletedUploadPartitioner<StreamKey, DestinationRecordRaw, K, T>? = null, taskFactory: LoadPipelineStepTaskFactory, val numWorkers: Int) : LoadPipelineStep
Link copied to clipboard
@Singleton
Link copied to clipboard
class ObjectLoaderPartFormatterStep(val numWorkers: Int, partFormatter: ObjectLoaderPartFormatter<*>, inputFlows: Array<Flow<PipelineEvent<StreamKey, DestinationRecordRaw>>>, outputQueue: PartitionedQueue<PipelineEvent<ObjectKey, ObjectLoaderPartFormatter.FormattedPart>>, taskFactory: LoadPipelineStepTaskFactory, stepId: String, flushStrategy: PipelineFlushStrategy?) : LoadPipelineStep
Link copied to clipboard
@Singleton
Link copied to clipboard
class ObjectLoaderPartLoaderStep<T : RemoteObject<*>>(loader: ObjectLoader, partLoader: ObjectLoaderPartLoader<T>, inputQueue: PartitionedQueue<PipelineEvent<ObjectKey, ObjectLoaderPartFormatter.FormattedPart>>, outputQueue: PartitionedQueue<PipelineEvent<ObjectKey, ObjectLoaderPartLoader.PartResult<T>>>, taskFactory: LoadPipelineStepTaskFactory, stepId: String) : LoadPipelineStep
Link copied to clipboard
@Singleton
Three steps for default record flow:
Link copied to clipboard
@Singleton
Link copied to clipboard
class ObjectLoaderUploadCompleterStep<K : WithStream, T : RemoteObject<*>>(objectLoader: ObjectLoader, uploadCompleter: ObjectLoaderUploadCompleter<T>, inputQueue: PartitionedQueue<PipelineEvent<ObjectKey, ObjectLoaderPartLoader.PartResult<T>>>, completedUploadQueue: PartitionedQueue<PipelineEvent<K, ObjectLoaderUploadCompleter.UploadResult<T>>>? = null, completedUploadPartitioner: ObjectLoaderCompletedUploadPartitioner<ObjectKey, ObjectLoaderPartLoader.PartResult<T>, K, T>? = null, taskFactory: LoadPipelineStepTaskFactory, stepId: String) : LoadPipelineStep
Link copied to clipboard
In order to allow streaming uploads on the same key to be parallelized, upload state needs to be shared across workers.