Vitaliy Filippov
bf9a175efc
Move C/C++ sources to src subdirectory
2021-02-25 23:59:03 +03:00
Vitaliy Filippov
4a2dcf7b6b
Update the license to VNPL 1.1
...
VNPL 1.1 is slightly reworded to make it clear that proprietary software
interacting with Vitastor and providing some kind of service to end users isn't
a "Proxy Program" if it's not specially designed to be used with Vitastor.
For example, Windows OS running in a virtual machine stored in a Vitastor
cluster clearly isn't.
2021-02-25 23:55:33 +03:00
Vitaliy Filippov
915d04c446
Allow empty global configuration, report OSD statistics faster
2021-02-01 19:31:10 +03:00
Vitaliy Filippov
322a38a144
Fix non-preserved real_pg_count leading to inability to change pools online
2020-12-04 23:46:48 +03:00
Vitaliy Filippov
a4c46ba745
Add jerasure EC support (reed_sol_van, others are slower) (not tested yet)
2020-12-04 11:47:27 +03:00
Vitaliy Filippov
9abf3c17c9
Correct fix for "Pool %u PG %u configuration is invalid" during startup
...
Establish watcher connection after loading PGs
2020-10-20 21:09:14 +00:00
Vitaliy Filippov
70612e5df0
Do not handle change events before loading config
2020-10-17 11:18:39 +00:00
Vitaliy Filippov
0471b09b9c
Add license notices to all source code files
2020-09-17 23:07:06 +03:00
Vitaliy Filippov
a15bd23ebd
Missed a bad PG key
2020-09-11 17:56:18 +03:00
Vitaliy Filippov
168cc2c803
Add pool support to OSD, part 1
...
This just fixes all the code so it builds and works like before,
but doesn't yet bring the support for replicated pools.
2020-09-04 17:04:17 +03:00
Vitaliy Filippov
4cdad634b5
Add pool support to the cluster client
2020-09-03 00:52:41 +03:00
Vitaliy Filippov
a7929931eb
Implement PG epochs to prevent the "version split"
...
The "version split" is when:
- A block is written to 1 OSD out of 3, all of them die
- OSDs 2 and 3 come up, the same block is written to both of them
- The remaining OSD comes up. Now all 3 OSDs have the same version of the same object,
but with different data.
2020-07-04 00:55:27 +03:00
Vitaliy Filippov
2187d06eac
Add a parameter to pass the initial config to client
2020-06-07 00:10:12 +03:00
Vitaliy Filippov
c573bc6bb3
(Probably almost) implement cluster client
2020-06-07 00:09:36 +03:00
Vitaliy Filippov
36f995367f
Fix bind_address reporting
2020-05-27 10:58:40 +03:00
Vitaliy Filippov
0aca6e9ca8
Extract peer connect and read-write loop into a separate file (to be shared with the client library)
2020-05-26 22:11:30 +03:00
Vitaliy Filippov
fa98be6bc0
Allow to specify multiple etcd addresses
2020-05-25 16:30:05 +03:00
Vitaliy Filippov
9f842ec9a5
Remove connect callback because it is always the same
2020-05-22 12:45:12 +03:00
Vitaliy Filippov
f6a01a4819
Extract "state-watching" etcd client into a separate file
2020-05-22 12:38:40 +03:00
Vitaliy Filippov
6202260018
Extract HTTP client functions from osd_t
2020-05-21 11:39:01 +03:00
Vitaliy Filippov
19f25c7cd5
Handle integer overflow of the op_stat_count
2020-05-15 01:37:17 +03:00
Vitaliy Filippov
c2c2eefea4
Duplicate host in osd/state and osd/stats, take PGs from /config/pgs.items
2020-05-15 01:29:15 +03:00
Vitaliy Filippov
5084ff7c6c
Measure & report recovery op count and bandwidth
2020-05-15 01:29:15 +03:00
Vitaliy Filippov
f71d0c117b
Measure & report op bandwidth, include local blockstore ops in stats
2020-05-11 02:58:13 +03:00
Vitaliy Filippov
e7f897ed65
Report hostname to etcd
2020-05-09 02:33:43 +03:00
Vitaliy Filippov
6355b968f4
Track osd_set history and all_peers separately
2020-05-04 15:28:07 +03:00
Vitaliy Filippov
bd0fe6e4cc
Fix PGs not stopping during sync, fix state reporting autovivification of erased PGs
2020-05-01 01:33:14 +03:00
Vitaliy Filippov
7b57eeeeb3
Implement PG state locking and PG moving in response to etcd events
2020-04-29 22:23:38 +03:00
Vitaliy Filippov
ec4a52af48
Fix websocket (and timer!) bugs
2020-04-26 01:59:56 +03:00
Vitaliy Filippov
268b497c0b
Implement simple websocket client
2020-04-25 23:11:50 +03:00
Vitaliy Filippov
895a80dfc4
Fix etcd 3.2 compatibility (no compare.target == LEASE, /kv/lease/revoke), fix small bugs
2020-04-25 01:35:52 +03:00
Vitaliy Filippov
caa01c6aaf
Acquire etcd leases, prevent starting two OSDs with the same number
2020-04-25 01:35:52 +03:00
Vitaliy Filippov
d398ddfd3b
Use snake_case for etcd requests
2020-04-25 01:35:52 +03:00
Vitaliy Filippov
0f2b8dbf6f
Use a single timerfd_manager for all timers
2020-04-25 01:35:49 +03:00
Vitaliy Filippov
4f42e9659e
Use etcd instead of Consul
2020-04-24 01:03:55 +03:00
Vitaliy Filippov
9d22559bcf
Start peering immediately when loading PGs
2020-04-21 02:27:13 +03:00
Vitaliy Filippov
6a21ea207e
Check peer config (at least, number) after connecting
2020-04-21 00:08:54 +03:00
Vitaliy Filippov
642802b595
Auto-select port numbers
2020-04-20 17:45:27 +03:00
Vitaliy Filippov
ff38b464a5
Add consul & connect timeouts, report state before loading PGs, move init_primary to osd_cluster
2020-04-20 15:43:07 +03:00
Vitaliy Filippov
663153713b
Reconnect to peers after connecting drops
2020-04-19 01:01:26 +03:00
Vitaliy Filippov
dc57c5c362
Report PG states again, clear PG history on reaching active+clean
2020-04-19 00:48:23 +03:00
Vitaliy Filippov
f95299b769
Take PG history into account when starting PGs
2020-04-19 00:20:18 +03:00
Vitaliy Filippov
9126ffb0f9
Fix PG loading - now it works, at least once
2020-04-17 02:33:44 +03:00
Vitaliy Filippov
2a8e40835e
Fix reporting to Consul, report even if we are purely secondary
2020-04-17 01:59:06 +03:00
Vitaliy Filippov
309486d746
Implement loading PGs from Consul (in theory)
2020-04-16 23:22:32 +03:00
Vitaliy Filippov
582f485578
Extract http & getifaddr_list into a separate file
2020-04-15 15:47:06 +03:00
Vitaliy Filippov
089b4eb208
Retry consul connection attempts and then die
2020-04-15 15:33:18 +03:00
Vitaliy Filippov
37b27c3025
Implement basic OSD status reporting to Consul
2020-04-14 14:52:06 +03:00
Vitaliy Filippov
edf6d6f897
Fix http_request
2020-04-12 02:08:00 +03:00
Vitaliy Filippov
298b013eae
Add simple http request function
2020-04-11 12:05:58 +03:00