featurebase/dax
Seebs cf97a0dcb8 overhaul: switch over to using QueryContext
We switch everything to use QueryContext/QueryRead/etc instead
of Qcx/Tx.

We drop the short_txkey subpackage (it's now handled by either
keys or querycontext).

We drop all the dbshard stuff, and all the tx/txfactory stuff.

We remove all the things that related to the old "Block" concept,
which was mostly used by the anti-entropy code, but had one
fragmentary usage left in the ImportRoaringOverwrite case of
ImportRoaring. That's replaced by using a rewriter that deletes
all bits (not just bits in specific columns) from an existing
thing, but writes in new bits. Actually we could probably do that
better with a custom "eradicate-rewriter" that doesn't try to
be clever, and just eliminates things.

This includes a number of minor bug fixes that were
exposed by getting the testing to work. For example:
* When checking whether an operation "requires write", we
  now consider a Delete a kind of a Write, because it is.
* Several tests were relying on the fact that writes through
  Qcx were being committed whether or not the Qcx was ever
  told to finish. With QueryContext, you actually have to
  reach a Commit() or the writes don't happen (except for
  special cases in Delete).
* Replaced a lot of panics with t.Fatalf in tests.

There's also some minor staticcheck fixes, like deleting the
unused "db" member of a boltdb transaction wrapper.
2023-01-11 12:57:56 -06:00
..
boltdb first cut at removing all the shard/field/partition versioning 2023-01-03 15:31:32 -06:00
computer overhaul: switch over to using QueryContext 2023-01-11 12:57:56 -06:00
http Introduce ServiceManager and Refactor DAX Integration tests (#2320) 2022-12-05 14:49:17 -06:00
mds clean up TODOs. adds a control channel for on-demand snapshotting 2023-01-03 15:31:32 -06:00
queryer implemented DISTINCT (fb-1562) (#2388) 2023-01-03 22:13:31 -06:00
server first cut at automatic snapshotting 2022-12-21 07:42:04 -06:00
snapshotter clean up unused code/comments 2022-12-14 14:23:12 -06:00
storage first cut at automatic snapshotting 2022-12-21 07:42:04 -06:00
test Implement DELETE (fb 1557) (#2382) 2022-12-19 16:34:28 -06:00
writelogger clean up unused code/comments 2022-12-14 14:23:12 -06:00
address.go Introduce ServiceManager and Refactor DAX Integration tests (#2320) 2022-12-05 14:49:17 -06:00
address_test.go Introduce ServiceManager and Refactor DAX Integration tests (#2320) 2022-12-05 14:49:17 -06:00
dax.go Add DAX - full list of squashed commits below 2022-11-16 11:19:40 -06:00
directive.go first cut at removing all the shard/field/partition versioning 2023-01-03 15:31:32 -06:00
docker-compose.yml several fixes and debug logging 2022-12-14 14:23:12 -06:00
errors.go Add DAX - full list of squashed commits below 2022-11-16 11:19:40 -06:00
Makefile first cut at automatic snapshotting 2022-12-21 07:42:04 -06:00
node.go Make interfaces more specific than "MDS" (#2352) 2022-12-12 13:14:17 -06:00
README.md Add DAX - full list of squashed commits below 2022-11-16 11:19:40 -06:00
role.go first cut at removing all the shard/field/partition versioning 2023-01-03 15:31:32 -06:00
schema.go Make interfaces more specific than "MDS" (#2352) 2022-12-12 13:14:17 -06:00
service_manager.go implement closing on dax, remove all locks when shutting down 2022-12-14 14:23:12 -06:00
snapshot.go remove version/directive stuff from other snapshot endpoints 2022-12-14 14:23:12 -06:00
table.go implemented DISTINCT (fb-1562) (#2388) 2023-01-03 22:13:31 -06:00
table_test.go Fix formatting in CLI results with custom SQLResonse.UnmarshalJSON (#2305) 2022-11-21 18:43:53 -06:00
time.go Add DAX - full list of squashed commits below 2022-11-16 11:19:40 -06:00
versioned_partition.go first cut at removing all the shard/field/partition versioning 2023-01-03 15:31:32 -06:00
versioned_shard.go first cut at removing all the shard/field/partition versioning 2023-01-03 15:31:32 -06:00
workerjob.go first cut at removing all the shard/field/partition versioning 2023-01-03 15:31:32 -06:00
workerjob_test.go Add DAX - full list of squashed commits below 2022-11-16 11:19:40 -06:00

DAX

DAX encapsulates anything which covers all of the services which make up the "disaggregation of storage and compute" project. Initially, this will include integration tests which pull in things like Metadata Services (MDS), including the Controller, as well as FeatureBase and IDK-based ingesters.

Setting up the tests

The DAX test currently requires docker images for: featurebase and datagen.

If at any point you run into problems with go mod failing to reference a private repo, make sure that you have gitlab.com/molecula in your GOPRIVATE environment variable.

Note that during the docker image build step, go mod vendor is run, which creates a vendor directory in the root directory, and copies that to docker during the build stage. Just be aware of this; you may want to remove that vendor directory after you're done building docker images.

Possible Configuruation

The following were relevent when the dax code was in a separate repository. These may no longer be relevant.

I needed to but this in my ~/.profile file:

export GOPRIVATE=github.com/molecula,gitlab.com/molecula

And this in my ~/.gitconfig

[url "ssh://git@github.com/"]
	insteadOf = https://github.com/
[url "ssh://git@gitlab.com/"]
	insteadOf = https://gitlab.com/

Then make docker ran successfully.

Build the FeatureBase docker image

  • Check out the dax branch of the featurebase repository.
  • Run make docker-image-featurebase to build the docker image
  • You should now have an image in docker named dax/featurebase with the tag latest.

Build the Datagen docker image

  • cd <featurebase_repo_root>/idk
  • Run make docker-image-datagen to build the docker image
  • You should now have an image in docker named dax/datagen with the tag latest.

Running the tests

  • Check out the dax branch of the featurebase repository.
  • Change into the dax directory: cd dax
  • Run make test-integration.