8000 Feature/arm64 building 20211005 by KVS85 · Pull Request #14871 · arangodb/arangodb · GitHub
[go: up one dir, main page]

Skip to content

Feature/arm64 building 20211005 #14871

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 690 commits into from
Oct 5, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
690 commits
Select commit Hold shift + click to select a range
6f73a6a
Soft coordinator shutdown (#14264)
neunhoef Jun 10, 2021
d5be537
Backport rocksdb diskspace bugfix (#14352)
jsteemann Jun 11, 2021
1d82f5c
Fix URL request parsing. (#14357)
mpoeter Jun 11, 2021
0e20844
fixes warnings about potentially uninitialized vars with g++11 (#14366)
jsteemann Jun 14, 2021
ab350ce
Slightly improve specific warning messages for better readability. (#…
jsteemann Jun 14, 2021
657985c
Bug fix/fix devsup 753 (#14373)
Dronplane Jun 16, 2021
7f9c774
Apm 55 (#14364)
alexbakharew Jun 17, 2021
911c1cb
Bug fix/user manager version race (#14382)
mchacki Jun 22, 2021
ab8d5ce
Update CHANGELOG
KVS85 Jun 22, 2021
819b44c
Improve usability of hidden options: (#14393)
jsteemann Jun 22, 2021
9d2b175
hides wrong label in the statistics memory tooltip + node 16 build su…
hkernbach Jun 23, 2021
694867d
Fixes for shard synchronization (#14384)
jsteemann Jun 26, 2021
ab1b2e1
Fix potential use after free.
mpoeter Jun 27, 2021
f38e952
fix ownership issue
jsteemann Jun 28, 2021
678f568
Add `/_admin/metrics/v2` DocuBlock (#14324) (#14412)
Simran-B Jun 28, 2021
252b2c4
Fix DEVSUP-799 (#14401)
jsteemann Jun 28, 2021
dcb5581
Update arangosync to 2.4.0
KVS85 Jun 28, 2021
0a0cfcb
added test for addOperation returning an error (#14410)
jsteemann Jun 29, 2021
fb61d6a
Add new chaos test suite. (#14406)
mpoeter Jun 29, 2021
cc518a5
Add Intel Comet Lake to the microarchitecture detection script (#14414)
Jun 29, 2021
98a9744
Update ArangoDB Starter to 0.15.1-preview-1
KVS85 Jun 29, 2021
c055bcc
Bug fix/presupp 358 (#14404)
mchacki Jun 30, 2021
7584472
Introduce callstack splitting to avoid stackoverflows with large AQL …
mpoeter Jun 30, 2021
7155702
adjust wording as in 3.8 PR
jsteemann Jun 30, 2021
a236ac1
partial revert of commit 140beedd04aa036438ffe77dc003cf2c03358313
jsteemann Jun 30, 2021
237e6b2
also revert some added tests
jsteemann Jun 30, 2021
20d8f1d
Update ArangoDB Starter to 0.15.1-preview-2
KVS85 Jun 30, 2021
62422fa
Fix soft shutdown test on Windows (#14374)
KVS85 Jun 30, 2021
5976f89
Sort list of queries in web UI for display (#14428)
jsteemann Jul 1, 2021
cfe0871
Removed redirects for some cluster rest handler (#14425)
Jul 1, 2021
705b35e
Search 161 (#14413)
alexbakharew Jul 1, 2021
e9c6ee9
Revive startup parameter `--server.session-timeout` (#14118)
jsteemann Jul 1, 2021
830056d
added a TTL for Pregel conductors, plus GC (#14311)
jsteemann Jul 1, 2021
a8b8207
Added empty graph tests for generic traversal test. (#14271)
Jul 1, 2021
d8eeb9e
enable assertion in QueryContext::collections() (#14448)
jsteemann Jul 2, 2021
dfea7cb
Update ArangoDB Starter to 0.15.1-preview-3
KVS85 Jul 2, 2021
c4a3be5
Soft coordinator shutdown documentation (#14356)
neunhoef Jul 5, 2021
287b9f3
Fix numeric overflow in WINDOW cost estimtation (#14464)
jsteemann Jul 6, 2021
8270a7e
Enable -Og for debug builds (#14438)
goedderz Jul 6, 2021
ef1bcfc
[BTS-491][devel] ArangoRestore connect Retry (#14461)
Jul 6, 2021
0eaa3b4
Fix potential memleak in Pregel conductor garbage collection. (#14466)
jsteemann Jul 6, 2021
674dfde
enable process metrics on agents (#14453)
jsteemann Jul 6, 2021
4f32cb0
Following term id (#14405)
neunhoef Jul 7, 2021
b7b58a0
fix index selection with prefix indexes (#14424)
jsteemann Jul 7, 2021
c6931da
Fix ArangoAgency::version() (#14476)
jsteemann Jul 7, 2021
00b75b1
Added new command line-option `--version-json`. This will return the …
fceller Jul 7, 2021
01d73e7
APM-112: prevent invalid use of OPTIONS in AQL queries (#14467)
jsteemann Jul 8, 2021
b5f3894
add more output to assertion
jsteemann Jul 8, 2021
d894cce
fix macros (#14481)
Dronplane Jul 8, 2021
430f624
lower takeover leadership current log level (#14379)
kvahed Jul 8, 2021
170b13f
Bug fix/non recursive plan handling (#14475)
mpoeter Jul 8, 2021
5e917d4
Added (gauge) metric "rocksdb_read_only" (#14470)
jsteemann Jul 9, 2021
477186f
fix locking of write transactions on DB servers (#14450)
jsteemann Jul 9, 2021
b877321
fix typo
jsteemann Jul 9, 2021
d1a2e3e
Feature/guarded mutex (#13996)
goedderz Jul 12, 2021
4164c1c
quod licet iovi non licet bovi (#14490)
jsteemann Jul 12, 2021
57cb9e5
remove duplicate log message
jsteemann Jul 13, 2021
f98dd99
Upgrade non-breaking JS dependencies (#14152)
pluma Jul 13, 2021
8d6ead9
Remove please upgrade rest handler. Useless. (#14495)
Jul 14, 2021
07bab24
Replicated Logs Companion PR (#14484)
Jul 14, 2021
40af73e
improve shell-aql-query-setup-timeout test (#14489)
jsteemann Jul 14, 2021
2699e9d
Fix handling of empty WAL files with encryption at rest (#14477)
jsteemann Jul 14, 2021
ab53aa4
Fix invalid assertion and always remove blocker object on replication…
jsteemann Jul 14, 2021
ea62066
Add limits for AQL query complexity (#14480)
jsteemann Jul 14, 2021
506d802
Improve internal AQL and transaction timeouts (#14283)
jsteemann Jul 16, 2021
9a13d96
Remove chalk (#14505)
pluma Jul 16, 2021
7d34504
pragma oncify (#14507)
jsteemann Jul 16, 2021
6aebaaf
BTS-519: avoid holding 2 mutexes at the same time (#14511)
jsteemann Jul 16, 2021
bd5497f
remove stray semicolon
jsteemann Jul 16, 2021
5786402
fix a g++-9 compile warning for a potentially uninitialized var (#14509)
jsteemann Jul 16, 2021
14f612f
Fixed BTS-408 (#14513)
jsteemann Jul 19, 2021
ceaec2a
Improve startup file copying of JavaScript files (#14512)
jsteemann Jul 19, 2021
6d812e2
Restore media-typer, upgrade mocha to 6.2.3 (#14517)
pluma Jul 19, 2021
d9e2450
Fix duplicate log id in ExecutionBlockImpl (#14522)
goedderz Jul 19, 2021
e76f873
simplify blocker handling (#14508)
jsteemann Jul 20, 2021
9ff3c68
JavaScript file handling improvements: (#14529)
jsteemann Jul 22, 2021
1fd0ef9
Use lower defaultMaxNodesPerCallstack for Mac. (#14533)
mpoeter Jul 23, 2021
940369d
Code cleanup (linting, formatting, deduping, and minor refactoring. (…
adityamukho Jul 23, 2021
7b112f2
Improve query memory usage tracking for graph operations (#14535)
jsteemann Jul 23, 2021
dc3aa2d
Improving the router initialization checking logic: polling --> event…
adityamukho Jul 26, 2021
e6d96eb
APM-132: Clean up collection statuses (#14539)
jsteemann Jul 27, 2021
eb68014
Update ArangoDB Starter to 0.15.1-preview-4
KVS85 Jul 27, 2021
1c85cdf
Bug fix/refactor rocks db transaction state and rocks db methods (#14…
mpoeter Jul 27, 2021
b6d14b1
Update RestoreFeature.cpp
KVS85 Jul 28, 2021
aabea6b
Update CHANGELOG
KVS85 Jul 28, 2021
f34edd0
Update CHANGELOG
KVS85 Jul 28, 2021
aad0dd2
Remove mutexes from Logging (#14550)
jsteemann Jul 28, 2021
d491680
experiment to check if SyncWAL works on Windows (#14551)
jsteemann Jul 28, 2021
70ea80f
Agency hasAsXXX using std::optional (#14376)
Jul 29, 2021
48ea30f
do not use -n on echo, this might not be supported and is not nesecca…
fceller Jul 29, 2021
78c067e
attempt to pacify clang-1100 (#14554)
jsteemann Jul 29, 2021
0a13ac4
disable a test that only works with failure points enabled (#14552)
jsteemann Jul 29, 2021
ab4238e
Update arangosync to 2.5.0
KVS85 Jul 29, 2021
14196bd
Removed unused function declaration (#14556)
cpjulia Jul 29, 2021
c645947
Update ArangoDB Starter to 0.15.1
KVS85 Jul 29, 2021
49937d1
Search-216 - Distance functions in AQL (#14555)
alexbakharew Jul 29, 2021
d930127
fix a test which didn't run without failure tests
jsteemann Jul 30, 2021
2c73237
timely update of database servers in cluster cache (#14569)
kvahed Jul 30, 2021
038485f
Add test cases for _admin/metrics/v2 endpoint in cluster mode (#14446)
Jul 31, 2021
8b5efb5
Cleanup random stuff (#14563)
mpoeter Aug 2, 2021
c81be57
better URL-encoding in UI (#14252)
jsteemann Aug 2, 2021
91fa79b
only disable a startup warning for actually wrong configs (#14579)
jsteemann Aug 3, 2021
cd39be5
fixed path (#14586)
fceller Aug 4, 2021
adaa8a6
Feature/refactor arangobench (#14548)
cpjulia Aug 4, 2021
573f7eb
Reduce memory usage of Merkle trees (#14549)
jsteemann Aug 4, 2021
50c0da7
Follow-up for APM-79 (#14584)
jsteemann Aug 4, 2021
dc386da
Fix BTS-527 (#14538)
kvahed Aug 4, 2021
276bf69
Bug fix/UI logs view removed dom element (#14520)
hkernbach Aug 5, 2021
06a1544
Bug-fix eslint (#14335)
fceller Aug 6, 2021
4f05769
Repair GEO_INTERSECTS (#14492)
neunhoef Aug 6, 2021
d7b6fed
Update InstallArangoDBJSClient.cmake
KVS85 Aug 7, 2021
d26aa40
fix BTS-536 "Upgrading without rest-server is aborted by error". (#14…
jsteemann Aug 9, 2021
c7dcf04
Revert change from `-O0` to `-Og` (#14613)
jsteemann Aug 10, 2021
4e1c936
bts 542: huge memory use agent (#14614)
kvahed Aug 10, 2021
c3c390b
Introducing Replicated Logs (#14486)
Aug 10, 2021
69f22fa
Search-37 - optimizer rules (#14585)
alexbakharew Aug 10, 2021
d19d5e1
Fix BTS-539 (#14612)
Dronplane Aug 10, 2021
6c82524
Fixing immer gcc x.1 compilation issues. (#14620)
Aug 10, 2021
e69b73d
fixed issue #14592: IS_NULL(@x) isn't recognized as a constant expres…
jsteemann Aug 10, 2021
db449c9
Bug fix/replicated logs missing column family (#14622)
Aug 10, 2021
b45839f
Fix duplicate log id (#14625)
goedderz Aug 11, 2021
c624b0e
update README_maintainers (#14627)
ajurdak Aug 11, 2021
c814561
Disable replication 2.0. (#14629)
Aug 13, 2021
e9a5e9e
improve Pregel log messages by giving them more context (#14631)
jsteemann Aug 13, 2021
8b95339
Added more recent architectures to OptimizeForArchitecture (#14628)
jsteemann Aug 13, 2021
a33e95c
Bug fix/graph node keep all flags on clone (#14635)
mchacki Aug 16, 2021
94aba32
Bug fix/begin trx disjoint (#14641)
mchacki Aug 16, 2021
64bf322
Added ChangeLogEntry (#14647)
mchacki Aug 17, 2021
967afe0
use more sensible values for timeouts/renewals (#14638)
jsteemann Aug 17, 2021
93e5b32
Improvements for Pregel memory-mapped files (#14636)
jsteemann Aug 17, 2021
e01000d
Add -fstandalone-debug for Clang Debug builds (#14439)
goedderz Aug 17, 2021
cac9b3c
Suppress a useless warning (#14624)
goedderz Aug 17, 2021
33e42b7
make AQL modification operations async (#14644)
goedderz Aug 17, 2021
0bff56b
Fix erroneous "access after data-modification" errors (#14646)
jsteemann Aug 17, 2021
5eaf1d2
Fix shutdown in --console mode (#14621)
jsteemann Aug 17, 2021
7afb1d0
Fixed a velocypack type error in maintenance::reportInCurrent (#14361)
goedderz Aug 18, 2021
b0cd75d
Added MutexGuard::unlock(), fixed tryLockedGuard, added tests (#14652)
goedderz Aug 18, 2021
bb39d8a
Reduce the amount of exception macros (#14504)
goedderz Aug 18, 2021
be8b157
Feature/iresearch test latest format (#14542)
Dronplane Aug 18, 2021
e6b1770
Improve supportability (#14639)
jsteemann Aug 18, 2021
da700d2
fix a typo in a parse error message (#14666)
jsteemann Aug 18, 2021
a043d4f
Remove fixPrototypeChain agency migration (#14658)
neunhoef Aug 19, 2021
a34b0c9
suppress intentional failures for cppcheck tests (#14665)
jsteemann Aug 19, 2021
414dae6
Fix wrong assertion in fuerte (#14660)
neunhoef Aug 19, 2021
6f6be66
Revert JSUnity improvement, testCase names now need to be unique per …
mchacki Aug 20, 2021
7fd6a7f
docs for APM-132 (#14675)
jsteemann Aug 23, 2021
9276e58
improvements for index creation (#14653)
jsteemann Aug 24, 2021
2439a9c
Increase default number of threads for client tools (#14673)
jsteemann Aug 24, 2021
54b6e1e
Add more checks to YAML metrics script, cleanup (#14587)
Simran-B Aug 24, 2021
3d56230
implement APM-120 (#14677)
jsteemann Aug 24, 2021
f364629
reintroduce --cluster.index-create-timeout for testing (#14678)
jsteemann Aug 24, 2021
4eacbde
add missing "." to metric help text :thinking_face:
jsteemann Aug 25, 2021
67aed64
documentation/swagger-2021-08-24 (#14682)
Simran-B Aug 25, 2021
866a723
Protocol specific metrics (#14674)
neunhoef Aug 25, 2021
62872f2
fix potential issue during cluster index creation (#14692)
jsteemann Aug 25, 2021
59274d2
Docs: Correct database and user API statements (BTS-429) (#14617)
Simran-B Aug 25, 2021
dfbe4b9
Feature/remove shared ptrs from analyzers (#14694)
Dronplane Aug 25, 2021
f31afe1
Feature/minor cleanup (#14661)
goedderz Aug 26, 2021
1e970ee
TRI_ASSERT Log Stream (#14676)
Aug 26, 2021
5624179
properly renamed test
jsteemann Aug 26, 2021
c184b51
Update arangosync to 2.6.0
KVS85 Aug 26, 2021
1fefb9b
Lower priority of AQL lanes (#14695)
goedderz Aug 26, 2021
b716551
add a test for disabled statistics (#14704)
jsteemann Aug 26, 2021
0d87895
Update ArangoDB Starter to 0.15.2-preview-1
KVS85 Aug 26, 2021
45deb5e
Analyzers UI (#14599)
adityamukho Aug 28, 2021
909648b
Fix a rare shutdown race in RocksDBShaCalculatorThread (#14708)
jsteemann Aug 30, 2021
3e90e49
Add some arangosearch tests (#14664)
gnusi Aug 30, 2021
59964a3
add test for concurrent access to the typed analyzer (#14714)
Dronplane Aug 30, 2021
7055864
make iterator usage safer after intermediate commits (#14346)
jsteemann Aug 31, 2021
b81d313
Aardvark: Add missing word in tooltip
Simran-B Aug 31, 2021
73bf4d3
Bug fix/search 238 late materialization with constrained heap (#14722)
Dronplane Sep 1, 2021
3778371
Fix for memory leaks (#14727)
alexbakharew Sep 2, 2021
b6933c1
Feature/arangosearch link version (#14717)
gnusi Sep 2, 2021
b2d76d9
Update ArangoDB Starter to 0.15.2
KVS85 Sep 3, 2021
07bbd47
noexcept requirement ScopeGuard (#14713)
Sep 3, 2021
128d570
fix for old clang (#14733)
fceller Sep 5, 2021
a2eba02
prototype for forceOneShardAttributeValue (#14701)
jsteemann Sep 7, 2021
c4bc88e
deduplicated TestAnalyzer and TestAttribute (#14737)
goedderz Sep 8, 2021
2d6b0e1
disable RTTI for snappy compilation (#14747)
jsteemann Sep 9, 2021
8730e36
Fix cluster-internal network protocol to HTTP/1 (#14749)
jsteemann Sep 9, 2021
51c71fe
allow for long supervision job runtimes (#14741)
kvahed Sep 9, 2021
b12ef28
ReplicatedLog 2.0.1 Follow up PR (#14728)
Sep 9, 2021
0849e98
Feature/hybrid smart graph (#14602)
mchacki Sep 10, 2021
8c2374f
ZKD Indexes (#13650)
Sep 10, 2021
b9a2b16
Feature/search 213 optimize levenshtein startswith (#14744)
Dronplane Sep 10, 2021
65165c4
Fixes for Analyzers Web UI (#14739)
adityamukho Sep 10, 2021
8000
42ec01c
Fix: truncate must not trigger intermediate commits in streaming trx.…
jsteemann Sep 10, 2021
0168cd1
Allow startup of arangod with an existing database (#14760)
jsteemann Sep 10, 2021
08284b4
deprecate several extra arangobench testcases (#14756)
jsteemann Sep 13, 2021
c623c5e
Feature/add write pipe func (#14736)
dothebart Sep 13, 2021
244ddd2
Feature/apm 70 (#14748)
cpjulia Sep 13, 2021
b00cc4f
micro-optimize RocksDBComparator (#14758)
jsteemann Sep 13, 2021
41c82b3
ensure Query is created via shared_ptr (#14755)
jsteemann Sep 13, 2021
268df38
workaround for assertion failure (#14711)
jsteemann Sep 13, 2021
5170538
Update OpenSSL to 1.1.1l and OpenLDAP to 2.4.59 (#14768)
KVS85 Sep 13, 2021
d661234
fix example
jsteemann Sep 14, 2021
7721412
Fixed issue #14720 (#14773)
jsteemann Sep 14, 2021
d33f9c8
Bug fix/fix active failover foxx failover (#14754)
dothebart Sep 15, 2021
cd8d048
Fix windows unicode issues (#14757)
mpoeter Sep 15, 2021
aa9c736
properly detect MacOS (#14771)
jsteemann Sep 15, 2021
fef43cc
fix UB in DistributeExecutor (#14774)
jsteemann Sep 15, 2021
958ae77
Reduce nr of combinations and runtime of nightly chaos load tests. (#…
mpoeter Sep 15, 2021
4551e53
Adapt scheduler to support bounded and unbounded queue operations. (#…
mpoeter Sep 15, 2021
708154b
output database directory of instance for better reference (#14783)
dothebart Sep 15, 2021
e7783f3
docs: fix github docs link (#14787)
Zyqsempai Sep 16, 2021
8a65d8c
fix typo in URL
jsteemann Sep 16, 2021
0543b00
Avoid acquisition of recursive read lock on server shutdown (#14792)
jsteemann Sep 17, 2021
a293372
fix logId check (#14793)
jsteemann Sep 17, 2021
25798eb
Add `--datatype` option to arangoimport (#14761)
jsteemann Sep 17, 2021
d91bfd5
Fixed BTS-562 (#14800)
jsteemann Sep 19, 2021
4bd72d9
make AQL modification operations blocking again (#14795)
jsteemann Sep 19, 2021
1898ac4
prevent stealing of values from Aql const registers (#14798)
jsteemann Sep 19, 2021
b251a0c
Feature/apm 60 (#14700)
cpjulia Sep 20, 2021
a1e8b50
Remove sendRequestRetry in health API to contact agents. (#14785)
neunhoef Sep 20, 2021
4e555c6
add REST API endpoint GET /_admin/debug/failat/all (#14687)
jsteemann Sep 20, 2021
e6589a6
Stabilize Hybrid Smart Graph Test [EE only] (#14809)
mchacki Sep 22, 2021
817defd
dead code removal and cleanup (#14803)
jsteemann Sep 22, 2021
3b2180a
Hide help text fragment about VST connection strings (#14812)
jsteemann Sep 22, 2021
f6e3c7d
Make all synchronous transaction methods set skipScheduler for networ…
goedderz Sep 23, 2021
724054c
Fix BTS-548 array index wrong optimization (#14779)
neunhoef Sep 23, 2021
9b6c51b
APM-164: Add basic overload control to arangod. (#14796)
jsteemann Sep 23, 2021
ea7cada
add more documentation about how tests work (#14804)
dothebart Sep 23, 2021
0c2fbee
fixed TRI_ASSERT warnings (#14789)
fceller Sep 24, 2021
d4bea91
Feature/iresearch update (#14823)
Dronplane Sep 27, 2021
eec3f1c
Fix crash in optimizer rule remove-collect-variables (#14824)
goedderz Sep 27, 2021
9e3e291
enterprise license support (#14753)
kvahed Sep 28, 2021
4f9a712
Update CHANGELOG
KVS85 Sep 28, 2021
871396a
Fix memory leaks in replicated log tests (#14808)
goedderz Sep 29, 2021
09185d4
fixed issue #14819 (#14832)
jsteemann Sep 29, 2021
398faae
Feature/apm 121 (#14817)
cpjulia Sep 29, 2021
dd640df
attempt to first uninstall the old service on silent upgrade as well …
dothebart Sep 30, 2021
4fd30a6
Feature/escape unicode control chars (#14805)
cpjulia Sep 30, 2021
1e02f2b
Feature/apm 173 (#14830)
cpjulia Sep 30, 2021
a1acc5d
Bug fix/dont start license feature in upgrade (#14838)
kvahed Sep 30, 2021
549c8a7
DocuBlocks: Remove some direct and indirect MMFiles references (#14842)
Simran-B Oct 1, 2021
24d920f
willi (#14847)
jsteemann Oct 1, 2021
e05881d
Added support for adding ZKD index through Web UI. (#14845)
adityamukho Oct 1, 2021
1e6d135
Bug fix/analyzers UI test automation (#14841)
KVS85 Oct 4, 2021
81ad901
Added label to mark ZKD index as experimental. (#14855)
adityamukho Oct 4, 2021
2602f4e
Fixing CppCheck warnings. (#14854)
Oct 4, 2021
6e171d4
improve usage of `__has_include` (#14851)
jsteemann Oct 4, 2021
4825d2e
properly throw an exception in case an invalid state is encountered (…
jsteemann Oct 4, 2021
111ef66
Fix SEARCH-235 - Stored values copying in case of encryption (#14764)
Dronplane Oct 4, 2021
2feac3f
Micro-optimization for ArangoSearch executor (#14862)
gnusi Oct 5, 2021
60802cf
LCI was not properly deserialized and thus the coordinator did not di…
Oct 5, 2021
29dcd14
Update AqlItemBlock.h
KVS85 Oct 5, 2021
df5103e
[R2] Remove Dead WaitForQueue Code (#14858)
Oct 5, 2021
caceb41
Capture immutable fields during view creation through web UI. (#14726)
adityamukho Oct 5, 2021
d871342
Merge branch 'devel' of https://github.com/arangodb/arangodb into fea…
KVS85 Oct 5, 2021
dac9e79
ARM support update: 05.10.2021
Oct 5, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
APM-164: Add basic overload control to arangod. (#14796)
Co-authored-by: Jan <jsteemann@users.noreply.github.com>
Co-authored-by: Kaveh Vahedipour <kaveh@arangodb.com>
  • Loading branch information
jsteemann and kvahed authored Sep 23, 2021
commit 9b6c51b909a0309df00244c7b4d12b5bb0ca121e
22 changes: 22 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
devel
-----

* Add basic overload control to arangod.
This change adds the `x-arango-queue-time-seconds` header to all responses
sent by arangod. This header contains the most recent request dequeing time
(in seconds) as tracked by the scheduler. This value can be used by client
applications and drivers to detect server overload and react on it.
The new startup option `--http.return-queue-time-header` can be set to
`false` to suppress these headers in responses sent by arangod.

In addition, client applications and drivers can optionally augment their
requests sent to arangod with a header of the same name. If set, the
value of the header should contain the maximum queuing time (in seconds)
that the client is willing to accept. If the header is set in an incoming
request, arangod will compare the current dequeing time from its scheduler
with the maximum queue time value contained in the request. If the current
dequeing time exceeds the value set in the header, arangod will reject the
request and return HTTP 412 (precondition failed) with the new error code
21004 (queue time violated).

There is also a new metric `arangodb_scheduler_queue_time_violations_total`
that is increased whenever a request is dropped because of the requested
queue time not satisfiable.

* Fixed a bug for array indexes on update of documents. See BTS-548.

* Prevent some possible deadlocks under high load regarding transactions and
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: arangodb_scheduler_queue_time_violations_total
introducedIn: "3.9.0"
help: |
Number of tasks/requests dropped and not added to internal queue
due to the client-specified queue time requirements not being
satisfiable.
unit: number
type: counter
category: Scheduler
complexity: simple
exposedBy:
- coordinator
- dbserver
- agent
- single
description: |
Number of tasks/requests dropped because the client-specified queue time
requirements, as indicated by client applications in the request header
"x-arango-queue-time-seconds" could not be satisfied by the receiving
server instance. This happens when the actual time need to queue/dequeue
requests on the scheduler queue exceeds the maximum time value that the
client has specified in the request.
Whenever this happens, the client application will get an HTTP 412 error
response back with error code 21004 ("queue time violated").
Although the metric is exposed on all instance types, it will very likely
always be 0 on DB servers, simply because coordinators do not forward the
"x-arango-queue-time-seconds" when they send internal requests to DB
servers.
88 changes: 61 additions & 27 deletions arangod/GeneralServer/CommTask.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,31 +65,6 @@ inline bool startsWith(std::string const& path, char const* other) {
path.compare(0, size, other, size) == 0);
}

} // namespace

// -----------------------------------------------------------------------------
// --SECTION-- constructors and destructors
// -----------------------------------------------------------------------------

CommTask::CommTask(GeneralServer& server,
ConnectionInfo info)
: _server(server),
_connectionInfo(std::move(info)),
_connectionStatistics(ConnectionStatistics::acquire()),
_auth(AuthenticationFeature::instance()) {
TRI_ASSERT(_auth != nullptr);
_connectionStatistics.SET_START();
}

CommTask::~CommTask() {
_connectionStatistics.SET_END();
}

// -----------------------------------------------------------------------------
// --SECTION-- protected methods
// -----------------------------------------------------------------------------

namespace {
TRI_vocbase_t* lookupDatabaseFromRequest(application_features::ApplicationServer& server,
GeneralRequest& req) {
// get database name from request
Expand Down Expand Up @@ -127,8 +102,53 @@ bool resolveRequestContext(application_features::ApplicationServer& server,
// the "true" means the request is the owner of the context
return true;
}

bool queueTimeViolated(GeneralRequest const& req) {
// check if the client sent the "x-arango-queue-time-seconds" header
bool found = false;
std::string const& queueTimeValue = req.header(StaticStrings::XArangoQueueTimeSeconds, found);
if (found) {
// yes, now parse the sent time value. if the value sent by client cannot be
// parsed as a double, then it will be handled as if "0.0" was sent - i.e. no
// queuing time restriction
double requestedQueueTime = StringUtils::doubleDecimal(queueTimeValue);
if (requestedQueueTime > 0.0) {
// value is > 0.0, so now check the last dequeue time that the scheduler reported
double lastDequeueTime = static_cast<double>(
SchedulerFeature::SCHEDULER->getLastLowPriorityDequeueTime()) / 1000.0;

if (lastDequeueTime > requestedQueueTime) {
// the log topic should actually be REQUESTS here, but the default log level
// for the REQUESTS log topic is FATAL, so if we logged here in INFO level,
// it would effectively be suppressed. thus we are using the Scheduler's
// log topic here, which is somewhat related.
SchedulerFeature::SCHEDULER->trackQueueTimeViolation();
LOG_TOPIC("1bbcc", WARN, Logger::THREADS)
<< "dropping incoming request because the client-specified maximum queue time requirement ("
<< requestedQueueTime << "s) would be violated by current queue time (" << lastDequeueTime << "s)";
return true;
}
}
}
return false;
}

} // namespace

CommTask::CommTask(GeneralServer& server,
ConnectionInfo info)
: _server(server),
_connectionInfo(std::move(info)),
_connectionStatistics(ConnectionStatistics::acquire()),
_auth(AuthenticationFeature::instance()) {
TRI_ASSERT(_auth != nullptr);
_connectionStatistics.SET_START();
}

CommTask::~CommTask() {
_connectionStatistics.SET_END();
}

/// Must be called before calling executeRequest, will send an error
/// response if execution is supposed to be aborted

Expand Down Expand Up @@ -311,6 +331,12 @@ void CommTask::finishExecution(GeneralResponse& res, std::string const& origin)
// use "IfNotSet" to not overwrite an existing response header
res.setHeaderNCIfNotSet(StaticStrings::XContentTypeOptions, StaticStrings::NoSniff);
}

// add "x-arango-queue-time-seconds" header
if (_server.server().getFeature<GeneralServerFeature>().returnQueueTimeHeader()) {
res.setHeaderNC(StaticStrings::XArangoQueueTimeSeconds,
std::to_string(static_cast<double>(SchedulerFeature::SCHEDULER->getLastLowPriorityDequeueTime()) / 1000.0));
}
}

/// Push this request into the execution pipeline
Expand All @@ -336,8 +362,17 @@ void CommTask::executeRequest(std::unique_ptr<GeneralRequest> request,
LOG_TOPIC("2cece", WARN, Logger::REQUESTS)
<< "could not find corresponding request/response";
}

rest::ContentType const respType = request->contentTypeResponse();

// check if "x-arango-queue-time-seconds" header was set, and its value
// is above the current dequeing time
if (::queueTimeViolated(*request)) {
sendErrorResponse(rest::ResponseCode::PRECONDITION_FAILED,
respType, messageId, TRI_ERROR_QUEUE_TIME_REQUIREMENT_VIOLATED);
return;
}

// create a handler, this takes ownership of request and response
auto& server = _server.server();
auto& factory = server.getFeature<GeneralServerFeature>().handlerFactory();
Expand All @@ -351,7 +386,6 @@ void CommTask::executeRequest(std::unique_ptr<GeneralRequest> request,
VPackBuffer<uint8_t>());
return;
}

// forward to correct server if necessary
bool forwarded;
auto res = handler->forwardRequest(forwarded);
Expand Down
21 changes: 14 additions & 7 deletions arangod/GeneralServer/GeneralServerFeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ GeneralServerFeature::GeneralServerFeature(application_features::ApplicationServ
: ApplicationFeature(server, "GeneralServer"),
_allowMethodOverride(false),
_proxyCheck(true),
_returnQueueTimeHeader(true),
_permanentRootRedirect(true),
_redirectRootTo("/_admin/aardvark/index.html"),
_supportInfoApiPolicy("hardened"),
Expand Down Expand Up @@ -219,6 +220,11 @@ void GeneralServerFeature::collectOptions(std::shared_ptr<ProgramOptions> option
"if true, use a permanent redirect. If false, use a temporary",
new BooleanParameter(&_permanentRootRedirect))
.setIntroducedIn(30712);

options->addOption("--http.return-queue-time-header",
"if true, return the 'x-arango-queue-time-seconds' response header",
new BooleanParameter(&_returnQueueTimeHeader))
.setIntroducedIn(30900);

options->addOption("--frontend.proxy-request-check",
"enable proxy request checking",
Expand Down Expand Up @@ -282,9 +288,8 @@ void GeneralServerFeature::prepare() {
}

void GeneralServerFeature::start() {
_jobManager.reset(new AsyncJobManager);

_handlerFactory.reset(new RestHandlerFactory());
_jobManager = std::make_unique<AsyncJobManager>();
_handlerFactory = std::make_unique<RestHandlerFactory>();

defineHandlers();
buildServers();
Expand Down Expand Up @@ -321,17 +326,19 @@ void GeneralServerFeature::unprepare() {
_jobManager.reset();
}

double GeneralServerFeature::keepAliveTimeout() const {
double GeneralServerFeature::keepAliveTimeout() const noexcept {
return _keepAliveTimeout;
}

bool GeneralServerFeature::proxyCheck() const { return _proxyCheck; }
bool GeneralServerFeature::proxyCheck() const noexcept { return _proxyCheck; }

bool GeneralServerFeature::returnQueueTimeHeader() const noexcept { return _returnQueueTimeHeader; }

std::vector<std::string> GeneralServerFeature::trustedProxies() const {
return _trustedProxies;
}

bool GeneralServerFeature::allowMethodOverride() const {
bool GeneralServerFeature::allowMethodOverride() const noexcept {
return _allowMethodOverride;
}

Expand All @@ -350,7 +357,7 @@ Result GeneralServerFeature::reloadTLS() { // reload TLS data from disk
return res;
}

bool GeneralServerFeature::permanentRootRedirect() const {
bool GeneralServerFeature::permanentRootRedirect() const noexcept {
return _permanentRootRedirect;
}

Expand Down
10 changes: 6 additions & 4 deletions arangod/GeneralServer/GeneralServerFeature.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,14 @@ class GeneralServerFeature final : public application_features::ApplicationFeatu
void stop() override final;
void unprepare() override final;

double keepAliveTimeout() const;
bool proxyCheck() const;
double keepAliveTimeout() const noexcept;
bool proxyCheck() const noexcept ;
bool returnQueueTimeHeader() const noexcept;
std::vector<std::string> trustedProxies() const;
bool allowMethodOverride() const;
bool allowMethodOverride() const noexcept;
std::vector<std::string> const& accessControlAllowOrigins() const;
Result reloadTLS();
bool permanentRootRedirect() const;
bool permanentRootRedirect() const noexcept;
std::string redirectRootTo() const;
std::string const& supportInfoApiPolicy() const noexcept;

Expand Down Expand Up @@ -87,6 +88,7 @@ class GeneralServerFeature final : public application_features::ApplicationFeatu
double _keepAliveTimeout = 300.0;
bool _allowMethodOverride;
bool _proxyCheck;
bool _returnQueueTimeHeader;
bool _permanentRootRedirect;
std::vector<std::string> _trustedProxies;
std::vector<std::string> _accessControlAllowOrigins;
Expand Down
3 changes: 3 additions & 0 deletions arangod/Scheduler/Scheduler.h
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,9 @@ class Scheduler {

virtual void toVelocyPack(velocypack::Builder&) const = 0;
virtual QueueStatistics queueStatistics() const = 0;

/// @brief returns the last stored dequeue time [ms]
virtual uint64_t getLastLowPriorityDequeueTime() const noexcept = 0;

/// @brief approximate fill grade of the scheduler's queue (in %)
virtual double approximateQueueFillGrade() const = 0;
Expand Down
35 changes: 26 additions & 9 deletions arangod/Scheduler/SupervisedScheduler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,8 @@ DECLARE_GAUGE(
"Total number of ongoing RestHandlers coming from the low prio queue");
DECLARE_COUNTER(arangodb_scheduler_queue_full_failures_total,
"Tasks dropped and not added to internal queue");
DECLARE_COUNTER(arangodb_scheduler_queue_time_violations_total,
"Tasks dropped because the client-requested queue time restriction would be violated");
DECLARE_GAUGE(arangodb_scheduler_queue_length, uint64_t,
"Server's internal queue length");
DECLARE_COUNTER(arangodb_scheduler_threads_started_total,
Expand Down Expand Up @@ -238,6 +240,8 @@ SupervisedScheduler::SupervisedScheduler(application_features::ApplicationServer
arangodb_scheduler_threads_stopped_total{})),
_metricsQueueFull(server.getFeature<arangodb::MetricsFeature>().add(
arangodb_scheduler_queue_full_failures_total{})),
_metricsQueueTimeViolations(server.getFeature<arangodb::MetricsFeature>().add(
arangodb_scheduler_queue_time_violations_total{})),
_ongoingLowPriorityGauge(_server.getFeature<arangodb::MetricsFeature>().add(
arangodb_scheduler_ongoing_low_prio{})),
_metricsLastLowPriorityDequeueTime(
Expand Down Expand Up @@ -766,7 +770,8 @@ std::unique_ptr<SupervisedScheduler::WorkItemBase> SupervisedScheduler::getWork(
return nullptr;
};

// how often did we check for new work without success
// how often did we check for new work without success (note: this counter
// is used only to reduce the "last dequeue time" metric in case of inactivity)
uint64_t iterations = 0;
uint64_t maxCheckedQueue = 0;

Expand Down Expand Up @@ -822,13 +827,16 @@ std::unique_ptr<SupervisedScheduler::WorkItemBase> SupervisedScheduler::getWork(
}

// nothing to do for a long time, but the previously stored dequeue time
// is still set to something > 5ms (note: we use 5 here because a deque time
// of > 0ms is not very unlikely for any request)
if (maxCheckedQueue == LowPriorityQueue &&
iterations >= 10 &&
_metricsLastLowPriorityDequeueTime.load(std::memory_order_relaxed) > 5) {
// set the dequeue time back to 0.
setLastLowPriorityDequeueTime(0);
// is still set to something > 0ms.
// now gradually decrease the stored dequeue time, so that in a period
// of inactivity the dequeue time smoothly goes down back to 0, but not
// abruptly
if (maxCheckedQueue == LowPriorityQueue && iterations % 4 == 0) {
auto old = _metricsLastLowPriorityDequeueTime.load(std::memory_order_relaxed);
if (old > 0) {
// reduce dequeue time to 66%
setLastLowPriorityDequeueTime((old * 2) / 3);
}
}

if (state->_sleepTimeout_ms == 0) {
Expand Down Expand Up @@ -930,7 +938,7 @@ SupervisedScheduler::WorkerState::WorkerState(SupervisedScheduler& scheduler)
_sleeping(false),
_ready(false),
_lastJobStarted(clock::now()),
_thread(new SupervisedSchedulerWorkerThread(scheduler._server, scheduler)) {}
_thread(std::make_unique<SupervisedSchedulerWorkerThread>(scheduler._server, scheduler)) {}

bool SupervisedScheduler::WorkerState::start() { return _thread->start(); }

Expand Down Expand Up @@ -977,6 +985,15 @@ void SupervisedScheduler::trackEndOngoingLowPriorityTask() {
}
}

void SupervisedScheduler::trackQueueTimeViolation() {
++_metricsQueueTimeViolations;
}

/// @brief returns the last stored dequeue time [ms]
uint64_t SupervisedScheduler::getLastLowPriorityDequeueTime() const noexcept {
return _metricsLastLowPriorityDequeueTime.load();
}

void SupervisedScheduler::setLastLowPriorityDequeueTime(uint64_t time) noexcept {
// update only probabilistically, in order to reduce contention on the gauge
if ((_sharedPRNG.rand() & 7) == 0) {
Expand Down
6 changes: 6 additions & 0 deletions arangod/Scheduler/SupervisedScheduler.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ class SupervisedScheduler final : public Scheduler {
void trackBeginOngoingLowPriorityTask();
void trackEndOngoingLowPriorityTask();

void trackQueueTimeViolation();

/// @brief returns the last stored dequeue time [ms]
uint64_t getLastLowPriorityDequeueTime() const noexcept override;

/// @brief set the time it took for the last low prio item to be dequeued
/// (time between queuing and dequeing) [ms]
void setLastLowPriorityDequeueTime(uint64_t time) noexcept;
Expand Down Expand Up @@ -221,6 +226,7 @@ class SupervisedScheduler final : public Scheduler {
Counter& _metricsThreadsStarted;
Counter& _metricsThreadsStopped;
Counter& _metricsQueueFull;
Counter& _metricsQueueTimeViolations;
Gauge<uint64_t>& _ongoingLowPriorityGauge;

/// @brief amount of time it took for the last low prio item to be dequeued
Expand Down
4 changes: 2 additions & 2 deletions js/common/bootstrap/errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -345,10 +345,10 @@
"ERROR_AGENCY_CANNOT_REBUILD_DBS" : { "code" : 20021, "message" : "Cannot rebuild readDB and spearHead" },
"ERROR_AGENCY_MALFORMED_TRANSACTION" : { "code" : 20030, "message" : "malformed agency transaction" },
"ERROR_SUPERVISION_GENERAL_FAILURE" : { "code" : 20501, "message" : "general supervision failure" },
"ERROR_QUEUE_FULL" : { "code" : 21003, "message" : "named queue is full" },
"ERROR_QUEUE_FULL" : { "code" : 21003, "message" : "queue is full" },
"ERROR_QUEUE_TIME_REQUIREMENT_VIOLATED" : { "code" : 21004, "message" : "queue time violated" },
"ERROR_ACTION_OPERATION_UNABORTABLE" : { "code" : 6002, "message" : "this maintenance action cannot be stopped" },
"ERROR_ACTION_UNFINISHED" : { "code" : 6003, "message" : "maintenance action still processing" },
"ERROR_NO_SUCH_ACTION" : { "code" : 6004, "message" : "no such maintenance action" },
"ERROR_HOT_BACKUP_INTERNAL" : { "code" : 7001, "message" : "internal hot backup error" },
"ERROR_HOT_RESTORE_INTERNAL" : { "code" : 7002, "message" : "internal hot restore error" },
"ERROR_BACKUP_TOPOLOGY" : { "code" : 7003, "message" : "backup does not match this topology" },
Expand Down
Loading
0