Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merge pull request #23183 from vespa-engine/havardpe/stop-passing-nullptr | Håvard Pettersen | 2022-06-21 | 1 | -1/+3 |
|\ | | | | | stop passing nullptr | ||||
| * | stop passing nullptr | Håvard Pettersen | 2022-06-21 | 1 | -1/+3 |
| | | |||||
* | | too_big => throw_too_big | Henning Baldersheim | 2022-06-21 | 2 | -8/+8 |
| | | |||||
* | | Inline hot path and keep error handling in .cpp file. | Henning Baldersheim | 2022-06-21 | 2 | -31/+39 |
| | | |||||
* | | Inline return AttrDFW::get_attribute() and clean up some old code with ↵ | Henning Baldersheim | 2022-06-21 | 1 | -32/+0 |
|/ | | | | manual allocation. | ||||
* | avoid unaligned access | Håvard Pettersen | 2022-06-20 | 2 | -6/+14 |
| | |||||
* | enable making string handles directly from numbers | Håvard Pettersen | 2022-06-16 | 3 | -0/+32 |
| | | | | | used in peek/slice to avoid having to convert small numbers to strings before resolving the enum values. | ||||
* | support VESPA_SHARED_STRING_REPO_NO_RECLAIM flag | Håvard Pettersen | 2022-06-15 | 4 | -22/+78 |
| | |||||
* | Merge pull request #23052 from vespa-engine/havardpe/common-memory-tools | Henning Baldersheim | 2022-06-13 | 2 | -95/+206 |
|\ | | | | | common memory tools | ||||
| * | use guards for unlikely cases | Håvard Pettersen | 2022-06-13 | 1 | -8/+7 |
| | | |||||
| * | common memory tools | Håvard Pettersen | 2022-06-10 | 2 | -95/+207 |
| | | |||||
* | | shared string repo tweaks | Håvard Pettersen | 2022-06-13 | 2 | -14/+17 |
|/ | | | | | - 64 -> 256 partitions - 99999 -> 9999999 maximum small number | ||||
* | fix undefined behavior in unit tests | Håvard Pettersen | 2022-06-09 | 3 | -8/+26 |
| | |||||
* | fix undefined behavior in unit tests -- WIP | Håvard Pettersen | 2022-06-07 | 3 | -1/+12 |
| | |||||
* | Remove test that invokes undefined pthread behavior | Tor Brede Vekterli | 2022-06-07 | 2 | -12/+2 |
| | | | | | | It is not well-defined to call a pthread function with a thread that is no longer valid. Remove test and add a precondition comment to the function that IDs must be valid. | ||||
* | Remove vespalib::rmdir and vespalib::mkdir | Tor Egge | 2022-06-03 | 3 | -178/+23 |
| | |||||
* | Merge pull request #22874 from ↵ | Tor Brede Vekterli | 2022-06-03 | 2 | -0/+7 |
|\ | | | | | | | | | vespa-engine/vekterli/dump-stack-of-deadlocked-thread Let deadlock detector dump stack of potentially deadlocked threads | ||||
| * | Let deadlock detector dump stack of potentially deadlocked threads | Tor Brede Vekterli | 2022-06-02 | 2 | -0/+7 |
| | | | | | | | | | | | | | | | | | | | | | | Enable cross-thread stack tracing as part of signal handler init code in both storage and proton daemons. Make deadlock detector parameters live configurable. Remove existing `restart` config definition annotations to reflect this. Remove dumping of bucket DB locks which hasn't really worked for a long time now. | ||||
* | | Remove most use of vespalib::rmdir in vespalib. Deprecate vespalib::mkdir. | Tor Egge | 2022-06-02 | 5 | -9/+14 |
|/ | |||||
* | Merge pull request #22788 from ↵ | Tor Brede Vekterli | 2022-06-02 | 6 | -26/+232 |
|\ | | | | | | | | | vespa-engine/vekterli/add-cross-thread-stack-trace-dumping Add support for cross-thread stack dumping to vespalib | ||||
| * | Really, really, really don't inline the backtrace-test function | Tor Brede Vekterli | 2022-06-01 | 2 | -1/+2 |
| | | |||||
| * | Ensure names are visible in backtrace by moving functions to a shared library | Tor Brede Vekterli | 2022-06-01 | 4 | -15/+35 |
| | | | | | | | | Name resolving does not necessarily work for static functions. | ||||
| * | No need to specify noinline for signal handler landing pad function | Tor Brede Vekterli | 2022-06-01 | 1 | -3/+1 |
| | | |||||
| * | Use compare_exchange to check and un-set pending signal handler | Tor Brede Vekterli | 2022-06-01 | 1 | -3/+4 |
| | | |||||
| * | Enable cross-thread stack tracing once for all tests | Tor Brede Vekterli | 2022-06-01 | 1 | -5/+5 |
| | | |||||
| * | Simplify to just use seq_cst instead of rel/acq for signal handler completion | Tor Brede Vekterli | 2022-05-31 | 1 | -2/+2 |
| | | | | | | | | Matches the use of seq_cst for the rest of the stack dumping logic. | ||||
| * | Add support for cross-thread stack dumping to vespalib | Tor Brede Vekterli | 2022-05-30 | 4 | -26/+212 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no existing API for conveniently getting the stack trace of any other thread than your own, so we have to turn things around a bit and make the target thread dump its own stack in a way that we can then safely access and return it. We allow for hooking SIGUSR2 at process startup time and use this as our dedicated stack dump signal internally. The process of stack dumping is then basically: 1. Caller sends SIGUSR2 to the target thread. This happens within a global mutex that ensures no other callers can attempt to dump stack at the same time. This is because we use a single, globally shared state between caller and target (the same signal handler function is used by all threads). 2. Caller acquire-polls (with 1ms sleep) for target thread signal handler completion. Fancy technologies such as mutexes and condition variables are not safe to use from within a signal handler and therefore cannot be used. 3. Target thread suddenly finds itself in Narnia (signal handler). Since the signal is the magical SIGUSR2, it proceeds to dump its stack frame addresses in a shared buffer. It then toggles completion, with release semantics, before returning to its regularly scheduled programming. 4. Caller exits poll-loop and assembles a complete stack trace from the frame addresses in the shared buffer, demangled and shiny. Signal-safe stack frame dumping currently uses Boost.Stacktrace, which is a header-only dependency and appears to use libunwind under the hood. | ||||
* | | Merge pull request #22854 from vespa-engine/balder/inline-tensor-access-methods | Henning Baldersheim | 2022-06-02 | 2 | -10/+4 |
|\ \ | | | | | | | - Optimize get_tensor_ref optimizing for no branches on happy path. | ||||
| * | | - Optimize get_tensor_ref optimizing for no branches on happy path. | Henning Baldersheim | 2022-06-01 | 2 | -10/+4 |
| | | | | | | | | | | | | | | | - Also drop check for reference as that is done in the next called method. - Inline DirectTensorStore::get_tensor. | ||||
* | | | Merge pull request #22851 from ↵ | Geir Storli | 2022-06-02 | 3 | -59/+14 |
|\ \ \ | | | | | | | | | | | | | | | | | vespa-engine/toregge/convert-vespalib-rmdir-to-deprecated-shim Convert vespalib::rmdir to a deprecated shim. | ||||
| * | | | Convert vespalib::rmdir to a deprecated shim. | Tor Egge | 2022-06-01 | 3 | -59/+14 |
| | | | | |||||
* | | | | Avoid huge amounts of cold code in hot path. | Henning Baldersheim | 2022-06-02 | 1 | -0/+3 |
| | | | | |||||
* | | | | If all else is equal the compiler will assume the if branch is more likely ↵ | Henning Baldersheim | 2022-06-02 | 1 | -10/+10 |
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | than the else branch. This is based on experience since gcc 2.8 and til today, and is not a definitive truth. Just more likely. if (criteria) { most_likely_executed code } else { less_likely_executed code } While a single branched if is assumed less likely. | ||||
* | | | When you have no special needs, you should just take the default allocator. | Henning Baldersheim | 2022-06-01 | 2 | -1/+7 |
|/ / | |||||
* | | vesap | Andreas Eriksen | 2022-06-01 | 2 | -2/+2 |
| | | |||||
* | | Avoid pulling in stringfmt.h in by moving code to .cpp file. | Henning Baldersheim | 2022-05-31 | 2 | -2/+1 |
| | | |||||
* | | Fix forward declarations. | Tor Egge | 2022-05-31 | 1 | -1/+1 |
|/ | |||||
* | Avoid using vespalib::Identifiable. | Henning Baldersheim | 2022-05-27 | 1 | -1/+1 |
| | |||||
* | fix undefined behavior | Håvard Pettersen | 2022-05-27 | 1 | -1/+1 |
| | | | | more testing means uncovering more undefined behavior | ||||
* | Include searchcommon/attribut/config.h yourself and prepare for hiding large ↵ | Henning Baldersheim | 2022-05-25 | 1 | -0/+3 |
| | | | | | | implementation. Add setters to vespalib::GrowStrategy. | ||||
* | Merge pull request #22729 from ↵ | Henning Baldersheim | 2022-05-25 | 3 | -34/+45 |
|\ | | | | | | | | | vespa-engine/balder/introduce-concept-of-minimum-capacity - Introduce the concept of minimal capacity for rcu vectors. | ||||
| * | - Introduce the concept of minimal capacity for rcu vectors. | Henning Baldersheim | 2022-05-24 | 3 | -34/+45 |
| | | | | | | | | | | - This is to prevent shrinking down past what has been configured in proton.documentdb[].allocation.initialnumdocs - shrinking down past the configured value is not supported as that would counter the preallocation done to prevent resizing. | ||||
* | | avoid undefined behavior in vespalib unit tests | Håvard Pettersen | 2022-05-25 | 9 | -17/+27 |
| | | |||||
* | | fix undefined behavior in messagebus unit tests | Håvard Pettersen | 2022-05-25 | 1 | -1/+3 |
|/ | | | | | also avoids hanging/leaving processes after running all unit tests with UBSAN without recovery. | ||||
* | Reduce inclusion of rcuvector.hpp | Henning Baldersheim | 2022-05-23 | 2 | -1/+5 |
| | |||||
* | Move calcNewSize to implementation file. | Henning Baldersheim | 2022-05-23 | 2 | -7/+12 |
| | |||||
* | - Stick to using GrowStragey everywhere. | Henning Baldersheim | 2022-05-23 | 3 | -60/+20 |
| | | | | - Store the full config in the rcu vector. | ||||
* | Fold fastlib into vespalib and gc some unused code. | Henning Baldersheim | 2022-05-21 | 51 | -0/+171457 |
| | | | | Also move some code only used by juniper up into juniper test module. | ||||
* | Fold staging_vespalib into vespalib | Henning Baldersheim | 2022-05-20 | 143 | -1/+11006 |
| | |||||
* | Use method static instead of global to enable use in other static/global ↵ | Henning Baldersheim | 2022-05-20 | 1 | -3/+8 |
| | | | | constructions. |