Commit Graph

186 Commits (9328ba8c4508b8a25529b24b438f7d76a78288df)

Author SHA1 Message Date
Marco Neumann 36ba011653 docs: explain CI docker images 2021-12-16 12:31:55 +01:00
Marco Neumann f02d846389 test: `object_store` aws test using localstack
This removes 3 "nonexisting region" tests that where testing very
specific error behavior that no local emulator (minio and localstack)
replicate and that don't add much value. It's better to test our AWS
code at all than being to picky.
2021-12-16 10:10:06 +01:00
Marko Mikulicic b0c6713bd7 fix: Don't swallow exit code when hakari test fails 2021-12-14 14:49:14 +01:00
Marco Neumann 6153e3df0b chore: build docker image for data generator
Closes #3322.
2021-12-14 12:44:41 +01:00
Marco Neumann 9c0fd4360d ci: use lld to speedup linking 2021-12-14 12:44:08 +01:00
Carol (Nichols || Goulding) beede9bd4e
feat: Test and build releases with the Kafka feature enabled 2021-12-09 08:49:34 -05:00
Marco Neumann 43569c11c2 ci: improve perf image build time by pre-fetching correct rust version
This avoids that we have to pull rustc and friends twice (once via
image, once when actually executing it).
2021-12-07 09:26:05 +01:00
Marco Neumann c77637e552 ci: improve buildx output 2021-12-06 17:42:21 +01:00
Marco Neumann 5c9fb4699b ci: allow to trigger perf image build via CircleCI API 2021-12-06 17:37:02 +01:00
Marco Neumann 1706bc94a0 chore: provide a single way to build prod IOx images
Closes #3310.
2021-12-06 15:20:28 +01:00
Marco Neumann 0ff165045c ci: increase "no output" timeout for prod builds 2021-12-06 09:49:07 +01:00
Raphael Taylor-Davies b6ecec4d76
chore: tweak redpanda CI configuration (#3294) 2021-12-03 20:57:37 +00:00
Marco Neumann f1e9ac9ef2 ci: run shellcheck 2021-11-29 15:11:15 +01:00
Marco Neumann 86772a6d20 ci: run yamllint 2021-11-29 15:11:15 +01:00
Carol (Nichols || Goulding) 0ca02ea4d7
feat: Print cargo hakari commands to fix failing checks if they fail 2021-11-22 11:14:24 -05:00
Carol (Nichols || Goulding) 93d6c2becd
feat: Add CI jobs and documentation for the workspace-hack crate 2021-11-19 11:05:34 -05:00
Marco Neumann fef6cafa24 ci: explain some circle decisions 2021-11-18 10:55:36 +01:00
Marco Neumann c9168a2c13 ci: update CI image builder to use newer docker
This is a precondition to build ARM64 CI images.
2021-11-17 14:17:27 +01:00
Marco Neumann 640cd88df3 ci: update CI images from docker buster to bullseye
This will break `perf_image` until the new CI image is built due to the
newly required `--all-tags` parameter to `docker push` that isn't
available for the docker version we run on buster.
2021-11-17 10:00:31 +01:00
kodiakhq[bot] 49cfa046bb
Merge branch 'main' into crepererum/smaller_binaries 2021-11-12 11:17:09 +00:00
Marco Neumann f0136e9791 ci: run clippy for all features
This indeed fixes some issues in our object store implementation.

Closes #537.
2021-11-11 10:48:21 +01:00
Raphael Taylor-Davies f650962221
refactor: merge CI integration tests (#3049)
* refactor: merge CI integration tests

* chore: update docs
2021-11-10 16:48:16 +00:00
Marco Neumann 16fc610433 chore: faster and smaller IOx binaries
Use `codegen-units = 1`, thin-LTO and debug section compression to make our binary smaller (which is good for deploy and
test times) and faster.

# Summary

The binary size of `influxdb_iox` after building with:

```console
$ cargo build --release --no-default-features --features="aws,gcp,azure,jemalloc_replacing_malloc"
```

The profile was:

```toml
[profile.release]
debug = true
```

The commit was:

```text
89ece8b493
```

The size results are:

| Method                                     | Size  |
| ------------------------------------------ | ----- |
| baseline                                   | 833MB |
| baseline + dbg compression                 | 222MB |
| baseline + strip                           |  49MB |
| codegen-units                              | 520MB |
| codegen-units + strip                      |  40MB |
| codegen-units + dbg compression            | 143MB |
| thin LTO                                   | 715MB |
| thin LTO + strip                           |  49MB |
| thin LTO + dbg compression                 | 199MB |
| codegen-units + thin LTO                   | 449MB |
| codegen-units + thin LTO + strip           |  40MB |
| codegen-units + thin LTO + dbg compression | 130MB |

For the methods that were successfully measured I couldn't really see any compile time differences on my laptop.

# Methods

## Strip
Remove debug symbols. We don't really want this, so this is just to get an idea of the size

```console
$ strip baseline
```

## Debug Sections compression
Debug sections make a large amount of our binary size (a stripped executable is 49MB instead of 833MB). Since we like to
have debug symbols we cannot just strip them. However these symbols are only used for:

- backtrace generation (something went wrong, not BAU)
- profiling
- debugging

So in normal operation and most test scenarios, we're just wasting memory. So we could compress them:

```console
$ objcopy --compress-debug-sections baseline baseline-dbg_compressed
```

There is also elfutils:

```console
$ eu-elfcompress test
```

Elfutils nearly ends up with the same size (220MB instead of 222MB that objcopy achieves), but takes more time and is
probably not worth it.

Note that compressed debug sections exist since many years. The Rust ecosystem supports reading them since over a year,
see:

- <https://github.com/gimli-rs/gimli/issues/195>
- <https://github.com/rust-lang/backtrace-rs/issues/342>

## Codegen Units
The rust compiler parallelizes codegen work. This split into units however means that optimizations are somewhat
limited. This can be change by:

```toml
[profile.release]
...
codegen-units = 1
```

As a nice side effect this should also make our code faster.

## Thin LTO
Get LLVM to run "thin" Link Time Optimization:

```toml
[profile.release]
...
lto = "thin"
```

As a nice side effect this should also make our code faster.

## Fat LTO
Get LLVM to run "fat" Link Time Optimization:

```toml
[profile.release]
...
lto = "fat"
```

There are no results for this because this took a massive amount of memory and CPU time and did not finish on my system.
2021-11-10 15:49:19 +01:00
Marco Neumann 89ece8b493 ci: fix usage of old docker version
`--all-tags` as introduced for version 20.10 but appearently we're
running an older version.
2021-11-10 10:27:16 +01:00
Marco Neumann ae58ae9c81 ci: also push `:main` tag in addition to SHA-based ones 2021-11-10 09:06:19 +01:00
Marco Neumann d0df1a14b4
ci: fix quay login for image promotion (#3066)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-11-08 14:17:36 +00:00
Marco Neumann 6786fd5955 ci: fix `get-deploy-tags.sh` 2021-11-08 14:12:03 +01:00
Marco Neumann f751bb5426 ci: use new, public `quay.io/influxdb/iox` image 2021-11-08 11:18:53 +01:00
Raphael Taylor-Davies 60f0deaf1e
feat: remove flatbuffer entry (#3045) 2021-11-05 20:19:24 +00:00
Raphael Taylor-Davies 9d0f78788d
feat: unify workflows and add ability to manually trigger CI image (#3047)
* feat: unify workflows and add ability to manually trigger CI image

* chore: s/master/main/g

* chore: docs

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2021-11-05 18:06:30 +00:00
Raphael Taylor-Davies 898567e221
feat: migrate server to DbWrite (#2724) (#3035)
* feat: migrate server to DbWrite (#2724)

* chore: print perf log output

* fix: don't suppress CI status code

* chore: review feedback

* fix: don't error on empty line protocol write payloads

* fix: test

* fix: test
2021-11-05 11:09:33 +00:00
Marco Neumann 81ccf85104 refactor: integrate print-cpu into main binary
It's a less confusing structure and also allows us to have this
information available in our shipped binary.
2021-10-25 18:29:32 +02:00
Andrew Lamb c6858285e5
chore: Allow bypassing 'backwards compatibility' protobuf linting with a label (#2922)
* chore: Allow bypassing 'backwards compatibility' protobuf linting with label

* chore: feedback review

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-10-21 15:06:45 +00:00
Andrew Lamb 0247ffee1d
chore: Enable 'breaking backwards compatibility' protobuf linter (#2919)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-10-21 12:37:24 +00:00
Raphael Taylor-Davies 8267e19592
chore: compress CI docs (#2880)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-10-19 09:03:24 +00:00
Andrew Lamb 035654b4f9
refactor: do not rebuild query_test when .sql or .expected files change (#2816)
* feat: Do not rebuild query_tests if .sql or .expected change

* feat: Add CI check

* refactor: move some sql tests to .sql files

* tests: port tests / expected results to data files

* fix: restore old name check-flatbuffers
2021-10-12 19:34:54 +00:00
Raphael Taylor-Davies b13b092bbd
revert: "feat(iox): Enable heappy again" (#2641)
This reverts commit 6e2aa2eef3.
2021-09-27 16:31:19 +00:00
Andrew Lamb a55a21c644
chore: Update datafusion (#2635)
* chore: Update datafusion and sqlparser

* fix: remove STACK_SIZE workaround

* chore: update datafusion_util

* chore: update predicate

* chore: update query_tests

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-09-27 14:13:19 +00:00
Nga Tran 2399a932fb chore: Merge branch 'main' into ntran/more_delete_tests 2021-09-22 16:47:15 -04:00
Nga Tran 400ec93498 test: more delete tests 2021-09-22 16:38:27 -04:00
Raphael Taylor-Davies 92e6173f49
feat: implement jaeger-agent protocol directly (#2607)
* feat: implement jaeger-agent protocol directly

* chore: review feedback

* fix: remove jaeger feature flag
2021-09-22 17:30:37 +00:00
Andrew Lamb 823ff1029a
test: Add end to end tracing test with mock Jaeger agent (#2594) 2021-09-21 16:07:05 +00:00
Marco Neumann 98900af703 ci: add cargo audit
For now we ignore warnings (e.g. "crate is yanked" or "crate is
unmaintained") because:

- internal crates w/ names of crates.io crates (e.g. `query`) are
  treated like crates.io-crates even though they shouldn't, see
  https://github.com/rustsec/rustsec/issues/232
- many crates are currently unmaintained and require a bit of upstream
  work (e.g. `chrono` is currently not very active but uses an old
  version of `time` which uses the unmaintained `stdweb`)

Closes #2575.
2021-09-21 15:59:04 +02:00
Jacob Marble 6d762d2ba0 fix: emit traces to Jaeger in perf.py 2021-09-13 16:11:59 -07:00
Jacob Marble 083fd06d0c
fix: checksum rustup in CI (#2501)
* fix: checksum rustup in CI

* chore: integrate feedback

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-09-10 16:28:09 +00:00
Jacob Marble c415d357cc
fix: perf broken after Protobuf changes (#2479)
* fix: perf broken after proto changes

* feat: add perf to CI

* chore: try different python version selector script

* chore: several fixes to CI

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-09-09 14:24:24 +00:00
Marko Mikulicic 6e2aa2eef3
feat(iox): Enable heappy again 2021-08-27 11:13:30 +02:00
Marko Mikulicic 31521e076e
feat: Re-enable jemalloc
But without heappy
2021-08-25 14:46:28 +02:00
Marko Mikulicic 595b83d7bc
feat: Disable jemalloc/heappy and use system allocator 2021-08-25 10:49:46 +02:00
Raphael Taylor-Davies 3fdc0e9a6a
chore: remove orphaned code from trogging (#2371)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-08-24 10:12:59 +00:00
Marko Mikulicic 4a2f0b0a52
fix: Make heappy and nonheappy mutually exclusive
Closes #2288
2021-08-20 11:35:07 +02:00
Andrew Lamb 5e1cb244f7
feat: make pprof optional (#2331) 2021-08-18 15:13:37 +00:00
Raphael Taylor-Davies 70aca081ff
chore: fix dockerignore (#2300) (#2316)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-08-17 10:09:18 +00:00
Marko Mikulicic e1fe2ea27b fix: Enable heappy in our perf build 2021-08-13 17:21:55 +02:00
Andrew Lamb 05de6c0e31 chore: add heappy end to end tests 2021-08-13 08:20:08 -05:00
Andrew Lamb 697de875ca refactor: make heappy an optional feature, add to build image 2021-08-13 08:11:32 -05:00
Luke Bond 88e4bcd139
chore: update .circleci/get-deploy-tags.sh
Co-authored-by: Marko Mikulicic <mkm@influxdata.com>
2021-08-10 15:15:09 +01:00
Luke Bond 083423a629
chore: update image promotion script 2021-08-10 13:36:55 +01:00
Andrew Lamb 82677d9510
feat: add `jaeger` and `otlp` features, default to off (#2202)
* feat: add jaeger and otlp flags

* chore: add jaeger and otlp features to CI test and deploy image

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-08-06 13:26:59 +00:00
Andrew Lamb 4a44b14d4d
fix: use avx2 (#2140) 2021-07-28 20:58:38 +00:00
Edd Robinson 287d501aa2
chore: build with avx512 instructions (#2118)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-07-28 19:47:37 +00:00
Andrew Lamb a1fbac74d5
refactor: Tweak perf_build script (#2121)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-07-28 13:47:18 +00:00
Edd Robinson 6528cab16f
Merge branch 'main' into er/chore/roaringivy 2021-07-26 17:38:18 +01:00
Edd Robinson fd29d5ae05 chore: target architecture with avx2 2021-07-26 17:36:44 +01:00
Marko Mikulicic 16f867272d
fix: Fix typo in print_cpu command name 2021-07-26 17:55:52 +02:00
Andrew Lamb 4def5bd816
chore: Add print_cpu command line to perf build (#2114)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-07-26 15:26:34 +00:00
Andrew Lamb 1a79bf7e99
refactor: Make aws/azure/gcs optional features and stop compiling 100 dependencies during dev (#1933)
* feat: make aws, gcp, azure dependencies optional

* fix: only run object store tests if the features are enabled

* fix: clean up testing

* fix: rename step

* fix: add to list of jobs

* fix: remove test with object store

* fix: review comments
2021-07-09 11:38:30 +00:00
Carol (Nichols || Goulding) 3abb4ca12d chore: Add RUST_BACKTRACE=1 to tests in CI
Fixes #1736.
2021-06-23 16:16:47 -04:00
Carol (Nichols || Goulding) 4612afe65d chore: Instead of installing rustup components, print all their versions 2021-06-23 15:28:58 -04:00
Carol (Nichols || Goulding) f0efd20259 chore: Switch to rust-toolchain.toml to specify Rust components we need as well 2021-06-23 15:28:58 -04:00
Marko Mikulicic 60c1b68644
chore: Store generated rustdoc as circleci artifacts 2021-06-23 00:20:55 +02:00
Carol (Nichols || Goulding) a0583381a1 chore: Run kafka integration tests using docker-compose
And, importantly, using the CircleCI machine image to avoid running
Docker-in-Docker.
2021-06-21 09:36:35 -04:00
Marko Mikulicic 05e35537d8
fix: give xlarge image to perf_image build step 2021-06-07 14:03:55 +02:00
Marko Mikulicic c77e57b7dc
feat: Preserve full debug infos in release builds
The `Cargo.toml` file already says:

```toml
[profile.release]
debug = true
```

but we were overriding it in the circleci release script to include only line number info,
probably to shave off some time from the total build time.

The ability to debug a production binary outweighs the few seconds or even a minute overhead it takes to
add the debug infos. If building with full debug infos take much much longer, next time we disable them
it would be nice to include such a dramatic fact in the comments next to where we disable debug infos :-)
2021-06-03 15:50:01 +02:00
Raphael Taylor-Davies 10f89a3e8d
refactor: split entry out into separate crate (#1428)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-05-06 11:36:23 +00:00
Marco Neumann 7d2a48eb3b ci: disable incremental compilation
This is to avoid overhead. We are not preserving these files anyway.
2021-05-05 13:30:25 +02:00
Marko Mikulicic 6b42c9a5ea
fix(ci): Push each image into its own tag
Using the git sha as the tag
2021-04-29 17:54:09 +02:00
Marko Mikulicic 756e1b769e
feat: Build a perf_image image for every commit in main 2021-04-28 10:12:34 +02:00
Marco Neumann 91bccdfca3 ci: pass `--document-private-items` to `cargo doc` 2021-04-27 15:42:07 +02:00
kodiakhq[bot] e78a81ee59
Merge branch 'main' into crepererum/ci_doc 2021-04-27 12:03:04 +00:00
Marko Mikulicic a9852c2257
fix: Disable docker layer caching in CI 2021-04-27 13:33:25 +02:00
Marco Neumann 2ee12298ef ci: pass `--no-deps` to `cargo doc`
This should speed things up a bit.
2021-04-27 13:22:28 +02:00
Marco Neumann af031894a6 ci: run `cargo doc` in CI
This will prevent checking in broken docs.
2021-04-27 13:22:26 +02:00
Marko Mikulicic 9633550cb8
fix: Log sha256sum before running docker build (#1309)
If the layer is cached, docker build won't print the output of the RUN command.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-04-27 07:34:36 +00:00
Luke Bond 39abadba0d chore: logging to debug CI 2021-04-26 12:49:23 +01:00
Carol (Nichols || Goulding) ce645262c6 fix: Rename LOCAL env var to INFLUXDB_IOX_INTEGRATION_LOCAL 2021-04-21 14:59:08 +00:00
Carol (Nichols || Goulding) 96afb25d1a test: Run influxd in docker by default for integration tests 2021-04-21 14:59:08 +00:00
Carol (Nichols || Goulding) 63fdab4628 chore: Remove installation of InfluxDB 2.0 OSS from CI job
Because it's now in the Docker image.
2021-04-21 14:59:08 +00:00
Carol (Nichols || Goulding) 9cc5b1950a fix: Regenerate flatbuffers in a Docker container by default 2021-04-21 14:59:08 +00:00
Raphael Taylor-Davies 79e6963d9b
fix: specify stable version (#1267) 2021-04-20 19:29:14 +00:00
Edd Robinson b64a1bca01 chore: update circle runners 2021-04-20 16:17:05 +01:00
Carol (Nichols || Goulding) 56bdd58c2e fix: Make sure rustfmt is installed for the flatbuffer check 2021-04-19 08:51:55 -04:00
Marco Neumann fd0da7e74a chore: upgrade arrow and Rust
See https://github.com/apache/arrow/pull/10082 for upstream PR.
2021-04-19 14:00:04 +02:00
Carol (Nichols || Goulding) db639881be feat: Always rebuild flatbuffers so CI will fail until someone fixes it 2021-04-09 14:31:18 +00:00
Carol (Nichols || Goulding) 2f2ca866dc chore: Check in CI that generated flatbuffers code has been checked in 2021-04-08 11:19:44 -04:00
Carol (Nichols || Goulding) 07ce5efcb8 chore: Set up CI for running integration tests against InfluxDB 2.0 OSS 2021-04-07 14:11:02 -04:00
Carol (Nichols || Goulding) 9d2fb2ad7f chore: Move regular CI to CircleCI 2021-03-29 12:55:56 -04:00
Raphael Taylor-Davies 96f9395299 feat: smaller IOx build images 2021-02-25 15:05:54 +00:00
Wojciech Kocjan ebd7f4c1e4 chore: use docker image inspect in get-deploy-tags.sh 2021-02-17 09:12:56 +01:00
Dom 348aaab6dd ci: trigger image promotion for deployment
Once an image is built and ready, exec the binary defined in the env var
IMAGE_PROMOTION_COMMAND to promote it (if set).
2021-01-22 10:35:10 +00:00