Skip to content

Commit 47cb0b8

Browse files
committed
Support error stats as a vector
1 parent 7db1bdb commit 47cb0b8

File tree

1 file changed

+15
-29
lines changed

1 file changed

+15
-29
lines changed

adapter/statsclient/stat_segment.go

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -212,21 +212,14 @@ func (c *statSegment) copyEntryData(dirEntry *statSegDirectoryEntry) adapter.Sta
212212
offsetVector := unsafe.Pointer(&c.sharedHeader[errOffset])
213213

214214
var errData adapter.Counter
215-
if c.legacyVersion {
216-
// error were not vector (per-worker) in VPP 19.04
217-
offset := uintptr(dirEntry.unionData) * unsafe.Sizeof(uint64(0))
218-
val := *(*adapter.Counter)(statSegPointer(offsetVector, offset))
219-
errData = val
220-
} else {
221-
vecLen := uint32(vectorLen(offsetVector))
222-
223-
for i := uint32(0); i < vecLen; i++ {
224-
cb := *(*uint64)(statSegPointer(offsetVector, uintptr(i)*unsafe.Sizeof(uint64(0))))
225-
offset := uintptr(cb) + uintptr(dirEntry.unionData)*unsafe.Sizeof(adapter.Counter(0))
226-
debugf("error index, cb: %d, offset: %d", cb, offset)
227-
val := *(*adapter.Counter)(statSegPointer(unsafe.Pointer(&c.sharedHeader[0]), offset))
228-
errData += val
229-
}
215+
vecLen := uint32(vectorLen(offsetVector))
216+
217+
for i := uint32(0); i < vecLen; i++ {
218+
cb := *(*uint64)(statSegPointer(offsetVector, uintptr(i)*unsafe.Sizeof(uint64(0))))
219+
offset := uintptr(cb) + uintptr(dirEntry.unionData)*unsafe.Sizeof(adapter.Counter(0))
220+
debugf("error index, cb: %d, offset: %d", cb, offset)
221+
val := *(*adapter.Counter)(statSegPointer(unsafe.Pointer(&c.sharedHeader[0]), offset))
222+
errData += val
230223
}
231224
return adapter.ErrorStat(errData)
232225

@@ -344,20 +337,13 @@ func (c *statSegment) updateEntryData(dirEntry *statSegDirectoryEntry, stat *ada
344337
offsetVector := unsafe.Pointer(&c.sharedHeader[errOffset])
345338

346339
var errData adapter.Counter
347-
if c.legacyVersion {
348-
// error were not vector (per-worker) in VPP 19.04
349-
offset := uintptr(dirEntry.unionData) * unsafe.Sizeof(uint64(0))
350-
val := *(*adapter.Counter)(statSegPointer(offsetVector, offset))
351-
errData = val
352-
} else {
353-
vecLen := uint32(vectorLen(unsafe.Pointer(&c.sharedHeader[errOffset])))
354-
355-
for i := uint32(0); i < vecLen; i++ {
356-
cb := *(*uint64)(statSegPointer(offsetVector, uintptr(i)*unsafe.Sizeof(uint64(0))))
357-
offset := uintptr(cb) + uintptr(dirEntry.unionData)*unsafe.Sizeof(adapter.Counter(0))
358-
val := *(*adapter.Counter)(statSegPointer(unsafe.Pointer(&c.sharedHeader[0]), offset))
359-
errData += val
360-
}
340+
vecLen := uint32(vectorLen(unsafe.Pointer(&c.sharedHeader[errOffset])))
341+
342+
for i := uint32(0); i < vecLen; i++ {
343+
cb := *(*uint64)(statSegPointer(offsetVector, uintptr(i)*unsafe.Sizeof(uint64(0))))
344+
offset := uintptr(cb) + uintptr(dirEntry.unionData)*unsafe.Sizeof(adapter.Counter(0))
345+
val := *(*adapter.Counter)(statSegPointer(unsafe.Pointer(&c.sharedHeader[0]), offset))
346+
errData += val
361347
}
362348
*stat = adapter.ErrorStat(errData)
363349

0 commit comments

Comments
 (0)