github.com/weaviate/weaviate@v1.24.6/adapters/repos/db/vector/hnsw/commit_logger_buffered_links_logger.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package hnsw 13 14 // type bufferedLinksLogger struct { 15 // base *hnswCommitLogger 16 // buf *bytes.Buffer 17 // } 18 19 // func (b *bufferedLinksLogger) ReplaceLinksAtLevel(nodeid uint64, 20 // level int, targets []uint64) error { 21 // b.base.writeCommitType(b.buf, ReplaceLinksAtLevel) 22 // b.base.writeUint64(b.buf, nodeid) 23 // b.base.writeUint16(b.buf, uint16(level)) 24 // targetLength := len(targets) 25 // if targetLength > math.MaxUint16 { 26 // // TODO: investigate why we get such massive connections 27 // targetLength = math.MaxUint16 28 // b.base.logger.WithField("action", "hnsw_current_commit_log"). 29 // WithField("id", b.base.id). 30 // WithField("original_length", len(targets)). 31 // WithField("maximum_length", targetLength). 32 // Warning("condensor length of connections would overflow uint16, cutting off") 33 // } 34 // b.base.writeUint16(b.buf, uint16(targetLength)) 35 // b.base.writeUint64Slice(b.buf, targets[:targetLength]) 36 37 // return nil 38 // } 39 40 // func (b *bufferedLinksLogger) AddLinkAtLevel(nodeid uint64, level int, 41 // target uint64) error { 42 // ec := &errorCompounder{} 43 // ec.add(b.base.writeCommitType(b.buf, AddLinkAtLevel)) 44 // ec.add(b.base.writeUint64(b.buf, nodeid)) 45 // ec.add(b.base.writeUint16(b.buf, uint16(level))) 46 // ec.add(b.base.writeUint64(b.buf, target)) 47 48 // if err := ec.toError(); err != nil { 49 // return errors.Wrapf(err, "write link at level %d->%d (%d) to commit log", 50 // nodeid, target, level) 51 // } 52 53 // return nil 54 // } 55 56 // func (b *bufferedLinksLogger) Close() error { 57 // b.base.Lock() 58 // defer b.base.Unlock() 59 60 // _, err := b.base.logWriter.Write(b.buf.Bytes()) 61 // if err != nil { 62 // return errors.Wrap(err, "flush link buffer to commit logger") 63 // } 64 65 // return nil 66 // }