* Create a template to simplify executing tests without repetition.
* Run cross-compilation tests for Windows on Ubuntu (Linux), as every
platform is being cross-compiled as a sanity check, it could also be
done using Linux, and simplify the template.
* Remove the GolangCI lint action, as it is linting in Linux (as this is
not using QEMU, but only cross-compilation), and there's no benefit to
adding this step, as it's already checked in other workflows.
Signed-off-by: Ivan Valdes <ivan@vald.es>
metalock is supposed to protect meta page, but it looks like the only place
where we're modifying it is not protected in fact. Since page update is not
atomic a concurrent reader (RO transaction) can get an inconsistent page. It's
likely to fall back to the other one in this case, but still we better not
allow this to happen.
Signed-off-by: Roman Khimov <roman@nspcc.ru>
I think most Bolt users never care about this data, so we're just wasting
time for nothing. This is also one of the exclusive locks that we have on
the View() path. While this patch doesn't change much on its own, because
the other lock is still here (subject to a different patch), once that lock
is removed the difference in concurrent View() test is pretty clear. With
NoStatistics=false:
workers samples min avg 50% 80% 90% max
1 10 123.905µs 969.042µs 1.062529ms 1.065585ms 1.071537ms 1.071537ms
10 100 34.636µs 178.176µs 89.7µs 110.439µs 943.753µs 1.055165ms
100 1000 31.79µs 280.166µs 51.358µs 526.992µs 1.034306ms 2.47819ms
1000 10000 30.608µs 818.098µs 86.464µs 935.799µs 2.681115ms 10.595186ms
10000 100000 30.569µs 3.060826ms 64.132µs 6.56151ms 11.199984ms 64.855384ms
NoStatistics=true:
workers samples min avg 50% 80% 90% max
1 10 68.049µs 962.039µs 1.060335ms 1.064633ms 1.066087ms 1.066087ms
10 100 34.846µs 315.346µs 90.943µs 862.499µs 1.00516ms 1.08366ms
100 1000 31.45µs 225.53µs 36.88µs 236.63µs 939.115µs 1.466286ms
1000 10000 30.539µs 207.383µs 43.643µs 110.841µs 408.146µs 5.689001ms
10000 100000 30.488µs 152.603µs 39.636µs 90.622µs 145.266µs 9.28235ms
The default behavior is kept for compatibility. In future the option can be
extended to avoid collecting transaction statistics as well.
Now that stats is a pointer we can also revert a part of 26f89a595140f163a4e8a7c86b689990f6335788
and make the structure cleaner.
Signed-off-by: Roman Khimov <roman@nspcc.ru>
The test ARM64 workflow was running on a regular Ubuntu machine. Specify
the ARM suffix to ensure that the tests run on the ARM architecture.
Signed-off-by: Ivan Valdes <ivan@vald.es>
Seems like it was more useful before 263e75d0594f5397905c21e17cd34b68d68441d5,
but now it's only used for statistics which can easily be managed in a
different way. I see no other valid purposes for this list, a reference can
have some value for GC, but if DB user loses a reference to transaction that
is not closed there is not much DB can do. This improves ConcurrentView test
from
workers samples min avg 50% 80% 90% max
1 10 49.323µs 974.287µs 1.068978ms 1.112882ms 1.131938ms 1.131938ms
10 100 32.592µs 685.315µs 980.5µs 1.125385ms 1.137678ms 1.169789ms
100 1000 31.49µs 219.084µs 77.427µs 353.651µs 656.916µs 1.785808ms
1000 10000 30.668µs 1.639366ms 99.128µs 3.086665ms 5.031354ms 16.315849ms
10000 100000 30.818µs 40.893475ms 36.963667ms 78.650583ms 111.553136ms 302.412177ms
to
workers samples min avg 50% 80% 90% max
1 10 78.358µs 964.847µs 1.059159ms 1.073256ms 1.07551ms 1.07551ms
10 100 32.802µs 304.922µs 80.924µs 674.54µs 1.069298ms 1.220625ms
100 1000 30.758µs 304.541µs 64.192µs 397.094µs 1.101991ms 2.183302ms
1000 10000 30.558µs 1.05711ms 92.426µs 2.111896ms 3.317894ms 11.790014ms
10000 100000 30.548µs 10.98898ms 90.742µs 21.740659ms 33.020076ms 135.33094ms
Signed-off-by: Roman Khimov <roman@nspcc.ru>
* add support for data file size limit
closes#928
Signed-off-by: Matthew Sainsbury <matthew@sainsbury.io>
* respond to PR feedback
Signed-off-by: Matthew Sainsbury <matthew@sainsbury.io>
---------
Signed-off-by: Matthew Sainsbury <matthew@sainsbury.io>