Skip to content

Chaos-Engineering-Style CI Pipelines to make sure Weaviate handles whatever the real world throws at it.

License

Notifications You must be signed in to change notification settings

andrewisplinghoff/weaviate-chaos-engineering

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

weaviate-chaos-engineering Weaviate logo

Chaos-Engineering-Style pipelines to make sure Weaviate behaves correctly, even when we try to sabotage it a bit.

What this does

Currently there are two independent pipelines:

Pipeline 1: Importing while Crashing

This pipelines is a Chaos-Monkey-style pipeline where we aim to import a large dataset, but an external source constantly introduces crashes. The goal is to make sure that every crash is recoverable and after the importer is through all objects were indeed imported.

Pipeline 2: Compare Recall after restarts

This pipelines imports a specific dataset (which will be generated as part of the CI) and meassures the recall on it. Then Weaviate is stopped and restarted with all state coming from disk and the recall is measured again. This pipeline makes sure that all async operations we perform on commit logs (combining, condensing, etc.) do not degrade the quality of the vector index.

How to Run

Requirements

  • Bash
  • Docker / Docker Compose
  • jq

Run the scripts

Everything is entirely containerized and all pipelines can be started with simple bash scripts. You can find the scripts in the root folder, such as ./import_while_crashing.sh and ./compare_recall_after_restart.sh. Or simply check the Github actions YAML files for examples.

Links

About

Chaos-Engineering-Style CI Pipelines to make sure Weaviate handles whatever the real world throws at it.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 41.5%
  • Go 38.5%
  • Shell 18.5%
  • Dockerfile 1.5%