Documentation ¶
Overview ¶
Package log holds the code that is specific to Trillian logs core operation, particularly the code for sequencing.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // DefaultTimeout is the default timeout on a single log operation run. DefaultTimeout = 60 * time.Second )
var ( // QuotaIncreaseFactor is the multiplier used for the number of tokens added back to // sequencing-based quotas. The resulting PutTokens call is equivalent to // "PutTokens(_, numLeaves * QuotaIncreaseFactor, _)". // A factor >1 adds resilience to token leakage, on the risk of a system that's overly // optimistic in face of true token shortages. The higher the factor, the higher the quota // "optimism" is. A factor that's too high (say, >1.5) is likely a sign that the quota // configuration should be changed instead. // A factor <1 WILL lead to token shortages, therefore it'll be normalized to 1. QuotaIncreaseFactor = 1.1 )
Functions ¶
This section is empty.
Types ¶
type MockOperation ¶ added in v1.3.0
type MockOperation struct {
// contains filtered or unexported fields
}
MockOperation is a mock of Operation interface
func NewMockOperation ¶ added in v1.3.0
func NewMockOperation(ctrl *gomock.Controller) *MockOperation
NewMockOperation creates a new mock instance
func (*MockOperation) EXPECT ¶ added in v1.3.0
func (m *MockOperation) EXPECT() *MockOperationMockRecorder
EXPECT returns an object that allows the caller to indicate expected use
func (*MockOperation) ExecutePass ¶ added in v1.3.0
func (m *MockOperation) ExecutePass(arg0 context.Context, arg1 int64, arg2 *OperationInfo) (int, error)
ExecutePass mocks base method
type MockOperationMockRecorder ¶ added in v1.3.0
type MockOperationMockRecorder struct {
// contains filtered or unexported fields
}
MockOperationMockRecorder is the mock recorder for MockOperation
func (*MockOperationMockRecorder) ExecutePass ¶ added in v1.3.0
func (mr *MockOperationMockRecorder) ExecutePass(arg0, arg1, arg2 interface{}) *gomock.Call
ExecutePass indicates an expected call of ExecutePass
type Operation ¶ added in v1.3.0
type Operation interface { // ExecutePass performs a single pass of processing on a single log. It returns // a count of items processed (for logging) and an error. ExecutePass(ctx context.Context, logID int64, info *OperationInfo) (int, error) }
Operation defines a task that operates on a log. Examples are scheduling, signing, consistency checking or cleanup.
type OperationInfo ¶ added in v1.3.0
type OperationInfo struct { // Registry provides access to Trillian storage. Registry extension.Registry // BatchSize is the processing batch size to be passed to tasks run by this manager BatchSize int // TimeSource should be used by the Operation to allow mocking for tests. TimeSource clock.TimeSource // Election-related configuration. ElectionConfig election.RunnerConfig // RunInterval is the time between starting batches of processing. If a // batch takes longer than this interval to complete, the next batch // will start immediately. RunInterval time.Duration // NumWorkers is the number of worker goroutines to run in parallel. NumWorkers int // Timeout sets an optional timeout on each operation run. // If unset, default to the value of DefaultTimeout. Timeout time.Duration }
OperationInfo bundles up information needed for running a set of Operations.
type OperationManager ¶ added in v1.3.0
type OperationManager struct {
// contains filtered or unexported fields
}
OperationManager controls scheduling activities for logs.
func NewOperationManager ¶ added in v1.3.0
func NewOperationManager(info OperationInfo, logOperation Operation) *OperationManager
NewOperationManager creates a new OperationManager instance.
func (*OperationManager) OperationLoop ¶ added in v1.3.0
func (o *OperationManager) OperationLoop(ctx context.Context)
OperationLoop starts the manager working. It continues until told to exit. TODO(Martin2112): No mechanism for error reporting etc., this is OK for v1 but needs work
func (*OperationManager) OperationSingle ¶ added in v1.3.0
func (o *OperationManager) OperationSingle(ctx context.Context)
OperationSingle performs a single pass of the manager.
type Sequencer ¶
type Sequencer struct {
// contains filtered or unexported fields
}
Sequencer instances are responsible for integrating new leaves into a single log. Leaves will be assigned unique sequence numbers when they are processed. There is no strong ordering guarantee but in general entries will be processed in order of submission to the log.
func NewSequencer ¶
func NewSequencer( hasher hashers.LogHasher, timeSource clock.TimeSource, logStorage storage.LogStorage, signer *tcrypto.Signer, mf monitoring.MetricFactory, qm quota.Manager) *Sequencer
NewSequencer creates a new Sequencer instance for the specified inputs.
func (Sequencer) IntegrateBatch ¶ added in v1.0.7
func (s Sequencer) IntegrateBatch(ctx context.Context, tree *trillian.Tree, limit int, guardWindow, maxRootDurationInterval time.Duration) (int, error)
IntegrateBatch wraps up all the operations needed to take a batch of queued or sequenced leaves and integrate them into the tree.
type SequencerManager ¶ added in v1.3.0
type SequencerManager struct {
// contains filtered or unexported fields
}
SequencerManager provides sequencing operations for a collection of Logs.
func NewSequencerManager ¶ added in v1.3.0
func NewSequencerManager(registry extension.Registry, gw time.Duration) *SequencerManager
NewSequencerManager creates a new SequencerManager instance based on the provided KeyManager instance and guard window.
func (*SequencerManager) ExecutePass ¶ added in v1.3.0
func (s *SequencerManager) ExecutePass(ctx context.Context, logID int64, info *OperationInfo) (int, error)
ExecutePass performs sequencing for the specified Log.