server

package
v1.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2018 License: Apache-2.0 Imports: 55 Imported by: 0

Documentation

Overview

Package server holds code for core Trillian servers.

Package server is a generated GoMock package.

Index

Constants

View Source
const (
	// DefaultTreeDeleteThreshold is the suggested threshold for tree deletion.
	// It represents the minimum time a tree has to remain Deleted before being hard-deleted.
	DefaultTreeDeleteThreshold = 7 * 24 * time.Hour

	// DefaultTreeDeleteMinInterval is the suggested min interval between tree GC sweeps.
	// A tree GC sweep consists of listing deleted trees older than the deletion threshold and
	// hard-deleting them.
	// Actual runs happen randomly between [minInterval,2*minInterval).
	DefaultTreeDeleteMinInterval = 4 * time.Hour
)
View Source
const QuotaEtcd = "etcd"

QuotaEtcd represents the etcd quota implementation.

View Source
const QuotaMySQL = "mysql"

QuotaMySQL represents the MySQL quota implementation.

View Source
const (
	// QuotaNoop represents the noop quota implementation.
	QuotaNoop = "noop"
)

Variables

View Source
var (
	// EtcdServers is a flag containing the address(es) of etcd servers
	EtcdServers = flag.String("etcd_servers", "", "A comma-separated list of etcd servers; no etcd registration if empty")
)
View Source
var (
	// QuotaSystem is a flag specifying which quota system is in use.
	QuotaSystem = flag.String("quota_system", "mysql", fmt.Sprintf("Quota system to use. One of: %v", quotaSystems()))
)

Functions

func AnnounceSelf

func AnnounceSelf(ctx context.Context, client *clientv3.Client, etcdService, endpoint string) func()

AnnounceSelf announces this binary's presence to etcd. Returns a function that should be called on process exit. AnnounceSelf does nothing if client is nil.

func NewQuotaManager

func NewQuotaManager(name string) (quota.Manager, error)

NewQuotaManager returns a quota.Manager implementation.

func NewQuotaManagerFromFlags added in v1.0.7

func NewQuotaManagerFromFlags() (quota.Manager, error)

NewQuotaManagerFromFlags returns a quota.Manager implementation as speficied by flag.

func RegisterQuotaManager added in v1.0.7

func RegisterQuotaManager(name string, qp NewQuotaManagerFunc) error

RegisterQuotaManager registers the provided QuotaManager.

func RegisterStorageProvider added in v1.0.7

func RegisterStorageProvider(name string, sp NewStorageProviderFunc) error

RegisterStorageProvider registers the provided StorageProvider.

Types

type LogOperation

type LogOperation interface {
	// Name returns the name of the task.
	Name() string
	// 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 *LogOperationInfo) (int, error)
}

LogOperation defines a task that operates on a log. Examples are scheduling, signing, consistency checking or cleanup.

type LogOperationInfo

type LogOperationInfo 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 LogOperation to allow mocking for tests.
	TimeSource util.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
}

LogOperationInfo bundles up information needed for running a set of LogOperations.

type LogOperationManager

type LogOperationManager struct {
	// contains filtered or unexported fields
}

LogOperationManager controls scheduling activities for logs.

func NewLogOperationManager

func NewLogOperationManager(info LogOperationInfo, logOperation LogOperation) *LogOperationManager

NewLogOperationManager creates a new LogOperationManager instance.

func (*LogOperationManager) OperationLoop

func (l *LogOperationManager) 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 (*LogOperationManager) OperationSingle

func (l *LogOperationManager) OperationSingle(ctx context.Context)

OperationSingle performs a single pass of the manager.

type Main

type Main struct {
	// Endpoints for RPC and HTTP/REST servers.
	// HTTP/REST is optional, if empty it'll not be bound.
	RPCEndpoint, HTTPEndpoint string

	// TLS Certificate and Key files for the server.
	TLSCertFile, TLSKeyFile string

	DBClose func() error

	Registry extension.Registry

	StatsPrefix string
	QuotaDryRun bool

	// RegisterHandlerFn is called to register REST-proxy handlers.
	RegisterHandlerFn func(context.Context, *runtime.ServeMux, string, []grpc.DialOption) error
	// RegisterServerFn is called to register RPC servers.
	RegisterServerFn func(*grpc.Server, extension.Registry) error

	// IsHealthy will be called whenever "/healthz" is called on the mux.
	// A nil return value from this function will result in a 200-OK response
	// on the /healthz endpoint.
	IsHealthy func(context.Context) error
	// HealthyDeadline is the maximum duration to wait wait for a successful
	// IsHealthy() call.
	HealthyDeadline time.Duration

	// AllowedTreeTypes determines which types of trees may be created through the Admin Server
	// bound by Main. nil means unrestricted.
	AllowedTreeTypes []trillian.TreeType

	TreeGCEnabled         bool
	TreeDeleteThreshold   time.Duration
	TreeDeleteMinInterval time.Duration

	// These will be added to the GRPC server options.
	ExtraOptions []grpc.ServerOption
}

Main encapsulates the data and logic to start a Trillian server (Log or Map).

func (*Main) Run

func (m *Main) Run(ctx context.Context) error

Run starts the configured server. Blocks until the server exits.

type MockLogOperation

type MockLogOperation struct {
	// contains filtered or unexported fields
}

MockLogOperation is a mock of LogOperation interface

func NewMockLogOperation

func NewMockLogOperation(ctrl *gomock.Controller) *MockLogOperation

NewMockLogOperation creates a new mock instance

func (*MockLogOperation) EXPECT

EXPECT returns an object that allows the caller to indicate expected use

func (*MockLogOperation) ExecutePass

func (m *MockLogOperation) ExecutePass(arg0 context.Context, arg1 int64, arg2 *LogOperationInfo) (int, error)

ExecutePass mocks base method

func (*MockLogOperation) Name

func (m *MockLogOperation) Name() string

Name mocks base method

type MockLogOperationMockRecorder

type MockLogOperationMockRecorder struct {
	// contains filtered or unexported fields
}

MockLogOperationMockRecorder is the mock recorder for MockLogOperation

func (*MockLogOperationMockRecorder) ExecutePass

func (mr *MockLogOperationMockRecorder) ExecutePass(arg0, arg1, arg2 interface{}) *gomock.Call

ExecutePass indicates an expected call of ExecutePass

func (*MockLogOperationMockRecorder) Name

Name indicates an expected call of Name

type NewQuotaManagerFunc added in v1.0.7

type NewQuotaManagerFunc func() (quota.Manager, error)

NewQuotaManagerFunc is the signature of a function which can be registered to provide instances of a quota manager.

type NewStorageProviderFunc added in v1.0.7

type NewStorageProviderFunc func(monitoring.MetricFactory) (StorageProvider, error)

NewStorageProviderFunc is the signature of a function which can be registered to provide instances of storage providers.

type SequencerManager

type SequencerManager struct {
	// contains filtered or unexported fields
}

SequencerManager provides sequencing operations for a collection of Logs.

func NewSequencerManager

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

func (s *SequencerManager) ExecutePass(ctx context.Context, logID int64, info *LogOperationInfo) (int, error)

ExecutePass performs sequencing for the specified Log.

func (*SequencerManager) Name

func (s *SequencerManager) Name() string

Name returns the name of the object.

type StorageProvider added in v1.0.7

type StorageProvider interface {
	// LogStorage creates and returns a LogStorage implementation.
	LogStorage() storage.LogStorage
	// MapStorage creates and returns a MapStorage implementation.
	MapStorage() storage.MapStorage
	// AdminStorage creates and returns a AdminStorage implementation.
	AdminStorage() storage.AdminStorage

	// Close closes the underlying storage.
	Close() error
}

StorageProvider is an interface which allows trillian binaries to use different storage implementations.

func NewStorageProvider added in v1.0.7

func NewStorageProvider(name string, mf monitoring.MetricFactory) (StorageProvider, error)

NewStorageProvider returns a new StorageProvider instance of the type specified by name.

func NewStorageProviderFromFlags added in v1.0.7

func NewStorageProviderFromFlags(mf monitoring.MetricFactory) (StorageProvider, error)

NewStorageProviderFromFlags returns a new StorageProvider instance of the type specified by flag.

type TrillianLogRPCServer

type TrillianLogRPCServer struct {
	// contains filtered or unexported fields
}

TrillianLogRPCServer implements the RPC API defined in the proto

func NewTrillianLogRPCServer

func NewTrillianLogRPCServer(registry extension.Registry, timeSource util.TimeSource) *TrillianLogRPCServer

NewTrillianLogRPCServer creates a new RPC server backed by a LogStorageProvider.

func (*TrillianLogRPCServer) AddSequencedLeaf added in v1.0.7

AddSequencedLeaf submits one sequenced leaf to the storage.

func (*TrillianLogRPCServer) AddSequencedLeaves added in v1.0.7

AddSequencedLeaves submits a batch of sequenced leaves to a pre-ordered log for later integration into its underlying tree.

func (*TrillianLogRPCServer) GetConsistencyProof

GetConsistencyProof obtains a proof that two versions of the tree are consistent with each other and that the later tree includes all the entries of the prior one. For more details see the example trees in RFC 6962.

func (*TrillianLogRPCServer) GetEntryAndProof

GetEntryAndProof returns both a Merkle Leaf entry and an inclusion proof for a given index and tree size.

func (*TrillianLogRPCServer) GetInclusionProof

GetInclusionProof obtains the proof of inclusion in the tree for a leaf that has been sequenced. Similar to the get proof by hash handler but one less step as we don't need to look up the index

func (*TrillianLogRPCServer) GetInclusionProofByHash

GetInclusionProofByHash obtains proofs of inclusion by leaf hash. Because some logs can contain duplicate hashes it is possible for multiple proofs to be returned.

func (*TrillianLogRPCServer) GetLatestSignedLogRoot

GetLatestSignedLogRoot obtains the latest published tree root for the Merkle Tree that underlies the log.

func (*TrillianLogRPCServer) GetLeavesByHash

GetLeavesByHash obtains one or more leaves based on their tree hash. It is not possible to fetch leaves that have been queued but not yet integrated. Logs may accept duplicate entries so this may return more results than the number of hashes in the request.

func (*TrillianLogRPCServer) GetLeavesByIndex

GetLeavesByIndex obtains one or more leaves based on their sequence number within the tree. It is not possible to fetch leaves that have been queued but not yet integrated. TODO: Validate indices against published tree size in case we implement write sharding that can get ahead of this point. Not currently clear what component should own this state.

func (*TrillianLogRPCServer) GetLeavesByRange added in v1.0.6

GetLeavesByRange obtains leaves based on a range of sequence numbers within the tree. This only fetches sequenced leaves; leaves that have been queued but not yet integrated are not visible.

func (*TrillianLogRPCServer) GetSequencedLeafCount

GetSequencedLeafCount returns the number of leaves that have been integrated into the Merkle Tree. This can be zero for a log containing no entries.

func (*TrillianLogRPCServer) InitLog added in v1.0.7

InitLog initialises a freshly created Log by creating the first STH with size 0.

func (*TrillianLogRPCServer) IsHealthy

func (t *TrillianLogRPCServer) IsHealthy() error

IsHealthy returns nil if the server is healthy, error otherwise.

func (*TrillianLogRPCServer) QueueLeaf

QueueLeaf submits one leaf to the queue.

func (*TrillianLogRPCServer) QueueLeaves

QueueLeaves submits a batch of leaves to the log for later integration into the underlying tree.

type TrillianMapServer

type TrillianMapServer struct {
	// contains filtered or unexported fields
}

TrillianMapServer implements the RPC API defined in the proto

func NewTrillianMapServer

func NewTrillianMapServer(registry extension.Registry) *TrillianMapServer

NewTrillianMapServer creates a new RPC server backed by registry

func (*TrillianMapServer) GetLeaves

GetLeaves implements the GetLeaves RPC method. Each requested index will return an inclusion proof to either the leaf, or nil if the leaf does not exist.

func (*TrillianMapServer) GetLeavesByRevision added in v1.0.5

GetLeavesByRevision implements the GetLeavesByRevision RPC method.

func (*TrillianMapServer) GetSignedMapRoot

GetSignedMapRoot implements the GetSignedMapRoot RPC method.

func (*TrillianMapServer) GetSignedMapRootByRevision

GetSignedMapRootByRevision implements the GetSignedMapRootByRevision RPC method.

func (*TrillianMapServer) InitMap added in v1.0.7

InitMap implements the RPC Method of the same name.

func (*TrillianMapServer) IsHealthy

func (t *TrillianMapServer) IsHealthy() error

IsHealthy returns nil if the server is healthy, error otherwise.

func (*TrillianMapServer) SetLeaves

SetLeaves implements the SetLeaves RPC method.

Directories

Path Synopsis
Package admin contains the TrillianAdminServer implementation.
Package admin contains the TrillianAdminServer implementation.
Package errors contains utilities to translate TrillianErrors to gRPC errors.
Package errors contains utilities to translate TrillianErrors to gRPC errors.
Package interceptor defines gRPC interceptors for Trillian.
Package interceptor defines gRPC interceptors for Trillian.
The trillian_log_server binary runs the Trillian log server, and also provides an admin server.
The trillian_log_server binary runs the Trillian log server, and also provides an admin server.
The trillian_log_signer binary runs the log signing code.
The trillian_log_signer binary runs the log signing code.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL