Hi all, I'm looking at `OnHeapHnswGraph` code and noticed that the volatile field `graphRamBytesUsed` is modified in `addNode` in a racy way:
long bytesUsed = graphRamBytesUsed; graphRamBytesUsed = bytesUsed + l; This is equivalent to `graphRamBytesUsed += l`. This code is susceptible to lost update due to non-atomic read-modify-write operation. I guess the it's not really a problem, because this code is in fact single-threaded when documents are added to the index. It might be concurrent during merging, but then `ramBytesUsed()` isn't called, and it's a wasted work. If the above assumption is correct, then this field should not be volatile to improve performance. If it's not, it should be replaced with `AtomicLong` or `LongAdder`. Viliam
