Commit Graph

206 Commits

Author SHA1 Message Date
Francesco Mazzoli e1b8de02dc More assorted improvements 2023-02-15 14:03:53 +00:00
Francesco Mazzoli 51860fac3a Various improveents, nothing substantial 2023-02-14 22:39:38 +00:00
Francesco Mazzoli 7393282160 Small fixes 2023-02-14 14:05:33 +00:00
Francesco Mazzoli 4288189766 Reorganize logs, add req/resp to CLI, add last seen to UI 2023-02-14 12:21:48 +00:00
Francesco Mazzoli e580cd5fe9 Select right source address in CDC/Shard 2023-02-14 12:20:21 +00:00
Francesco Mazzoli 786939bf07 Add ways to view/set directory policies 2023-02-13 12:57:47 +00:00
Francesco Mazzoli a88e2aaa01 Add systemd services and utilities to deploy stuff on current cluster 2023-02-02 16:36:13 +00:00
Francesco Mazzoli 92132df827 Remove Python
We now have the WebUI so the main remaining use for it (the CLI)
is gone, although we probably want something to explicitly send
requests in the Go CLI.
2023-02-02 12:45:13 +00:00
Francesco Mazzoli 5bafbf03f6 Extend protocol to allow for double route for blocks services 2023-02-02 12:45:13 +00:00
Francesco Mazzoli fc9b27adaa Easier profiling 2023-02-02 09:43:29 +00:00
Francesco Mazzoli 342bcbd8a8 More WebUI stuff 2023-02-01 18:56:32 +00:00
Francesco Mazzoli c0872d7f7c Fix symlink creation in FUSE driver 2023-02-01 17:25:15 +00:00
Francesco Mazzoli 507f9b4565 More improvement to the web UI 2023-02-01 15:58:50 +00:00
Francesco Mazzoli 438e9763d4 Fix annoying bug in FUSE driver 2023-02-01 14:47:23 +00:00
Francesco Mazzoli 63b5b8d3f9 Start adding web UI, for now integrated with shuckle 2023-02-01 14:47:23 +00:00
Francesco Mazzoli f42ff2b219 Get rid of backtrace machinery
It is currently very fragile, due to:

* Differing versions of compilers/DWARF version result in a variety
    of breakages in the our code which analyzes the DWARF info;

* With musl, libunwind seems to be currently unable to traverse
    beyond signal handlers, due to the DWARF information not
    being present in the signal frame.
    See <https://maskray.me/blog/2022-04-10-unwinding-through-signal-handler>.
    Note that I have not verified that the problem in the blog
    post above is indeed what we're hitting, but it seems plausible.
2023-02-01 12:00:47 +00:00
Francesco Mazzoli 4243ff71e2 Assorted fixes 2023-02-01 12:00:44 +00:00
Francesco Mazzoli e90c1cadb8 Prompt termination in shard/cdc 2023-01-30 18:27:46 +00:00
Francesco Mazzoli 9802bc436e Small utility to start block services 2023-01-30 13:53:17 +00:00
Francesco Mazzoli df9efa481d Keep pinging shuckle 2023-01-30 12:18:46 +00:00
Francesco Mazzoli 85889266b1 Various housekeeping while I get ready to deploy...
...most notably we now produce fully static binaries in an alpine
image.

A few assorted thoughts:

* I really like static binaries, ideally I'd like to run EggsFS
    deployments with just systemd scripts and a few binaries.

* Go already does this, which is great.

* C++ does not, which is less great.

* Linking statically against `glibc` works, but is unsupported.
    Not only stuff like NSS (which `gethostbyname` requires)
    straight up does not work, unless you build `glibc` with
    unsupported and currently apparently broken flags
    (`--enable-static-nss`), but also other stuff is subtly
    broken (I couldn't remember exactly what was broken,
    but see comments such as
    <https://github.com/haskell/haskell-language-server/issues/2431#issuecomment-985880838>).

* So we're left with alternative libcs -- the most popular being
    musl.

* The simplest way to build a C++ application using musl is to just
    build on a system where musl is already the default libc -- such
    as alpine linux.

The backtrace support is in a bit of a bad state. Exception stacktraces
work on musl, but DWARF seems to be broken on the normal release build.

Moreover, libunwind doesn't play well with musl's signal handler:
<https://maskray.me/blog/2022-04-10-unwinding-through-signal-handler>.

Keeping it working seems to be a bit of a chore, and I'm going to revisit
it later.

In the meantime, gdb stack traces do work fine.
2023-01-29 21:41:40 +00:00
Francesco Mazzoli 9adca070ba Convert build system to cmake
Also, produce fully static binaries. This means that `gethostname`
does not work (doesn't work with static glibc unless you build it
with `--enable-static-nss`, which no distro builds glibc with).
2023-01-26 23:20:58 +00:00
Francesco Mazzoli 0031bd719d Automated test for FUSE driver 2023-01-25 16:12:23 +00:00
Francesco Mazzoli 227e0e6c6b Go FUSE EggsFS, more direct IO in blockservice stuff 2023-01-24 16:37:29 +00:00
Francesco Mazzoli aac9e275d7 Go blockservice, and a bunch of shuckle improvements 2023-01-24 11:44:46 +00:00
Francesco Mazzoli 92302db43a pprof in integrationtest 2023-01-23 18:54:02 +00:00
Francesco Mazzoli adfa282dbd Test inline bodies in integration test 2023-01-23 18:22:18 +00:00
Francesco Mazzoli 51d0769cb3 Test block migration 2023-01-19 14:25:47 +00:00
Francesco Mazzoli 11b6a0a8e4 Various improvements to integration test 2023-01-18 11:25:15 +00:00
Francesco Mazzoli 5acefed1a7 Implement loop check in rename directory 2023-01-18 10:46:11 +00:00
Francesco Mazzoli ac99f10f94 Add artificial packet drop to integration tests...
...and fixup many places in the code to allow for such drops to
happen somewhat smoothly.
2023-01-16 22:54:51 +00:00
Francesco Mazzoli 4d03035e00 Forgot to close the door 2023-01-11 14:04:11 +00:00
Francesco Mazzoli 89e640d7dd Remove OpenSSL dependency 2023-01-11 13:53:30 +00:00
Francesco Mazzoli e9ab9d58bd Clean up various things including README, preparing for merge 2023-01-11 11:16:13 +00:00
Francesco Mazzoli 781bf9f228 Add a simple FS test involving many directories
Fix some bugs in the process
2023-01-10 16:56:30 +00:00
Francesco Mazzoli 9c1b44111b As always, my laziness immediately bites me 2023-01-04 09:42:44 +00:00
Francesco Mazzoli b91b9c3e74 C++ CDC, happy path somewhat tested, but a lot to go 2023-01-03 17:41:33 +00:00
Francesco Mazzoli 8e59a68708 Begin C++ CDC 2022-12-15 18:22:35 +00:00
Francesco Mazzoli c66fc4f4a5 Seemingly functional span adding/removal...
...much more testing needed.
2022-12-15 13:36:15 +00:00
Francesco Mazzoli 053248018f Do not repeatedly download blocks 2022-12-14 09:51:31 +00:00
Francesco Mazzoli c1434ae040 Read/write spans 2022-12-13 22:48:35 +00:00
Francesco Mazzoli ba0f8a7a91 Move things around a bit in preparation for cpp CDC
Also, make log preparation in shard read-only, in preparation for
distributed consensus.
2022-12-11 20:08:31 +00:00
Francesco Mazzoli f94c911f14 Push the log-handling logic outside ShardDB
As I'm thinking what to do of the CDC for now, I got thinking
a bit more about how to handle the log entry/state persisting split.

I think this makes more sense, it'll allow the log consensus module
to be bolted on top fairly cleanly.
2022-12-10 12:36:03 +00:00
Francesco Mazzoli fc0cee0e07 C++ shard
Most operations apart from spans-related ones work. Using this as
a checkpoint -- the Python code is currently not really working,
I'm working to migrate to pretty much a full C++/go world.
2022-12-10 10:55:25 +00:00
Francesco Mazzoli adba0ff39d Bulk migration 2022-11-05 22:34:25 +00:00
Francesco Mazzoli 40753d8fe4 Use separate blocks table rather than JSON
I wanted to make the constraints clearer and enforced by the
schema.
2022-11-05 18:58:19 +00:00
Francesco Mazzoli 4491c6216c More progress towards migration 2022-11-05 12:01:20 +00:00
Francesco Mazzoli 49036030ce wip 2022-11-03 18:11:45 +00:00
Francesco Mazzoli 5d94c8129b Refactoring block-related stuff
Mostly, we now have ext block ids everywhere, and block service
requests take the block id.

Also, gearing up to explicit blacklists for block services,
in case a client detects failures.
2022-11-03 14:46:18 +00:00
Francesco Mazzoli 351cbb9c78 Remove size constraints on spans & blocks
See comments in `msgs.go`
2022-11-01 09:11:16 +00:00