Documentation
¶
Index ¶
- Constants
- Variables
- type ChunkEncoding
- type Config
- type FormatError
- type Header
- type IndexFile
- type Reader
- type ReaderConfig
- type StacktraceAppender
- type StacktraceChunkHeader
- type StacktraceChunkHeaders
- type StacktraceInserter
- type StacktraceInserterFn
- type StacktraceResolver
- type StacktracesConfig
- type StacktracesRange
- type Stats
- type SymDB
- type SymbolsAppender
- type SymbolsResolver
- type TOC
- type TOCEntry
- type Writer
Constants ¶
View Source
const ( DefaultDirName = "symbols" IndexFileName = "index.symdb" StacktracesFileName = "stacktraces.symdb" )
View Source
const (
FormatV1
)
View Source
const HeaderSize = int(unsafe.Sizeof(Header{}))
Variables ¶
View Source
var ( ErrInvalidSize = &FormatError{fmt.Errorf("invalid size")} ErrInvalidCRC = &FormatError{fmt.Errorf("invalid CRC")} ErrInvalidMagic = &FormatError{fmt.Errorf("invalid magic number")} ErrUnknownVersion = &FormatError{fmt.Errorf("unknown version")} )
View Source
var ErrInvalidStacktraceRange = fmt.Errorf("invalid range: stack traces can't be resolved")
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { Dir string Stacktraces StacktracesConfig }
func DefaultConfig ¶
func DefaultConfig() *Config
func (*Config) WithDirectory ¶
type FormatError ¶
type FormatError struct {
// contains filtered or unexported fields
}
func (*FormatError) Error ¶
func (e *FormatError) Error() string
type IndexFile ¶
type IndexFile struct { Header Header TOC TOC // StacktraceChunkHeaders are sorted by // partition and chunk index in ascending order. StacktraceChunkHeaders StacktraceChunkHeaders CRC uint32 }
func OpenIndexFile ¶
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
func (*Reader) SymbolsResolver ¶
func (r *Reader) SymbolsResolver(partition uint64) (SymbolsResolver, bool)
type ReaderConfig ¶
type ReaderConfig struct { BucketReader objstore.BucketReader MaxConcurrentChunks int ChunkFetchBufferSize int }
type StacktraceAppender ¶
type StacktraceAppender interface { // AppendStacktrace appends the stack traces into the mapping, // and writes the allocated identifiers into dst: // len(dst) must be equal to len(s). // The leaf is at locations[0]. AppendStacktrace(dst []uint32, s []*schemasv1.Stacktrace) Release() }
type StacktraceChunkHeader ¶
type StacktraceChunkHeader struct { Offset int64 Size int64 Partition uint64 ChunkIndex uint16 ChunkEncoding ChunkEncoding Stacktraces uint32 // Number of unique stack traces in the chunk. StacktraceNodes uint32 // Number of nodes in the stacktrace tree. StacktraceMaxDepth uint32 // Max stack trace depth in the tree. StacktraceMaxNodes uint32 // Max number of nodes at the time of the chunk creation. CRC uint32 // Checksum of the chunk data [Offset:Size). // contains filtered or unexported fields }
type StacktraceChunkHeaders ¶
type StacktraceChunkHeaders struct {
Entries []StacktraceChunkHeader
}
func (*StacktraceChunkHeaders) MarshalBinary ¶
func (h *StacktraceChunkHeaders) MarshalBinary() ([]byte, error)
func (*StacktraceChunkHeaders) Size ¶
func (h *StacktraceChunkHeaders) Size() int64
func (*StacktraceChunkHeaders) UnmarshalBinary ¶
func (h *StacktraceChunkHeaders) UnmarshalBinary(b []byte) error
type StacktraceInserter ¶
StacktraceInserter accepts resolved locations for a given stack trace. The leaf is at locations[0].
Locations slice must not be retained by implementation. It is guaranteed, that for a given stacktrace ID InsertStacktrace is called not more than once.
type StacktraceInserterFn ¶
func (StacktraceInserterFn) InsertStacktrace ¶
func (fn StacktraceInserterFn) InsertStacktrace(stacktraceID uint32, locations []int32)
type StacktraceResolver ¶
type StacktraceResolver interface { // ResolveStacktraces resolves locations for each stack trace // and inserts it to the StacktraceInserter provided. // // The stacktraces must be ordered in the ascending order. // If a stacktrace can't be resolved, dst receives an empty // array of locations. // // Stacktraces slice might be modified during the call. ResolveStacktraces(ctx context.Context, dst StacktraceInserter, stacktraces []uint32) error Release() }
type StacktracesConfig ¶
type StacktracesConfig struct {
MaxNodesPerChunk uint32
}
type StacktracesRange ¶
type StacktracesRange struct {
// contains filtered or unexported fields
}
func SplitStacktraces ¶
func SplitStacktraces(s []uint32, n uint32) []StacktracesRange
SplitStacktraces splits the range of stack trace IDs by limit n into sub-ranges matching to the corresponding chunks and shifts the values accordingly. Note that the input s is modified in place.
stack trace ID 0 is reserved and is not expected at the input. stack trace ID % max_nodes == 0 is not expected as well.
type SymDB ¶
type SymDB struct {
// contains filtered or unexported fields
}
func (*SymDB) MemorySize ¶
func (*SymDB) SymbolsAppender ¶
func (s *SymDB) SymbolsAppender(partition uint64) SymbolsAppender
func (*SymDB) SymbolsResolver ¶
func (s *SymDB) SymbolsResolver(partition uint64) (SymbolsResolver, bool)
type SymbolsAppender ¶
type SymbolsAppender interface {
StacktraceAppender() StacktraceAppender
}
type SymbolsResolver ¶
type SymbolsResolver interface { StacktraceResolver() StacktraceResolver WriteStats(*Stats) }
type TOC ¶
type TOC struct {
Entries []TOCEntry
}
func (*TOC) MarshalBinary ¶
func (*TOC) UnmarshalBinary ¶
Click to show internal directories.
Click to hide internal directories.