MCPcopy Create free account
hub / github.com/brimdata/super / CommitCompact

Method CommitCompact

db/branch.go:237–278  ·  view source on GitHub ↗
(ctx context.Context, src, rollup []*data.Object, rollupVecs []ksuid.KSUID, author, message, meta string)

Source from the content-addressed store, hash-verified

235}
236
237func (b *Branch) CommitCompact(ctx context.Context, src, rollup []*data.Object, rollupVecs []ksuid.KSUID, author, message, meta string) (ksuid.KSUID, error) {
238 if len(rollup) < 1 {
239 return ksuid.Nil, errors.New("compact: one or more rollup objects required")
240 }
241 sctx := super.NewContext()
242 appMeta, err := loadMeta(sctx, meta)
243 if err != nil {
244 return ksuid.Nil, err
245 }
246 return b.commit(ctx, func(parent *branches.Config, retries int) (*commits.Object, error) {
247 base, err := b.pool.commits.Snapshot(ctx, parent.Commit)
248 if err != nil {
249 return nil, err
250 }
251 patch := commits.NewPatch(base)
252 for _, o := range rollup {
253 if err := patch.AddDataObject(o); err != nil {
254 return nil, err
255 }
256 }
257 for _, id := range rollupVecs {
258 if err := patch.AddVector(id); err != nil {
259 return nil, err
260 }
261 }
262 for _, o := range src {
263 if err := patch.DeleteObject(o.ID); err != nil {
264 return nil, err
265 }
266 }
267 if message == "" {
268 var b strings.Builder
269 fmt.Fprintf(&b, "compacted %d object%s\n\n", len(src), plural.Slice(src, "s"))
270 printObjects(&b, src, maxMessageObjects)
271 fmt.Fprintf(&b, "\ncreated %d object%s\n\n", len(rollup), plural.Slice(rollup, "s"))
272 printObjects(&b, rollup, maxMessageObjects-len(src))
273 message = b.String()
274 }
275 commit := patch.NewCommitObject(parent.Commit, retries, author, message, appMeta)
276 return commit, nil
277 })
278}
279
280func (b *Branch) mergeInto(ctx context.Context, parent *Branch, author, message string) (ksuid.KSUID, error) {
281 if b == parent {

Callers 1

CompactFunction · 0.80

Calls 13

commitMethod · 0.95
AddDataObjectMethod · 0.95
AddVectorMethod · 0.95
DeleteObjectMethod · 0.95
NewCommitObjectMethod · 0.95
NewContextFunction · 0.92
NewPatchFunction · 0.92
SliceFunction · 0.92
loadMetaFunction · 0.85
printObjectsFunction · 0.85
NewMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected