The collection of bootstrappers comprise the task executed when bootstrapping a node.
fs: The filesystem bootstrapper, used to bootstrap as much data as possible from the local filesystem.
peers: The peers bootstrapper, used to bootstrap any remaining data from peers. This is used for a full node join too.
commitlog: The commit log bootstrapper, currently only used in the case that peers bootstrapping fails. Once the current block is being snapshotted frequently to disk it might be faster and make more sense to not actively use the peers bootstrapper and just use a combination of the filesystem bootstrapper and the minimal time range required from the commit log bootstrapper.
The tasks carried out by each bootstrapper vary a lot on the series cache policy being used.
CacheAll series cache policy
For the cache all policy the filesystem bootstrapper will load all series and all the data for each block and return the entire set of data. This will keep every series and series block on heap.
The peers bootstrapper similarly bootstraps all the data from peers that the filesystem does not have and returns the entire set of data fetched.
RecentlyRead series cache policy
For the recently read policy the filesystem bootstrapper will simply fulfill the time ranges requested matching without actually loading the series and blocks from the files it discovers. This relies on data been fetched lazily from the filesystem when data is required for a series that does not live on heap.
The peers bootstrapper will bootstrap all time ranges requested, and if performing a bootstrap with persistence enabled for a time range, will write the data to disk and then remove the results from memory. A bootstrap with persistence enabled is used for any data that is immutable at the time that bootstrapping commences. For time ranges that are mutable the peer bootstrapper will still write the data out to disk in a durable manner, but in the form of a snapshot, and the series and blocks will still be returned directly as a result from the bootstrapper. This enables the commit log bootstrapper to recover the data in case the node shuts down before the in-memory data can be flushed.
const ( // NoOpNoneBootstrapperName is the name of the noOpNoneBootstrapper NoOpNoneBootstrapperName = "noop-none" // NoOpAllBootstrapperName is the name of the noOpAllBootstrapperProvider NoOpAllBootstrapperName = "noop-all" )
func NewBaseBootstrapper ¶
func NewBaseBootstrapper( name string, src bootstrap.Source, opts result.Options, next bootstrap.Bootstrapper, ) (bootstrap.Bootstrapper, error)
NewBaseBootstrapper creates a new base bootstrapper.
func NewNoOpAllBootstrapperProvider() bootstrap.BootstrapperProvider
NewNoOpAllBootstrapperProvider creates a new noOpAllBootstrapperProvider.