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  // }