Reading the repo
Opening the box…
Reading the repo
Opening the box…
How to install on Linux
Scalable datastore for metrics, events, and real-time analytics
Saved setup from 3 h ago
Will it work on Linux?
Also: Docs ↗
The maintainers included run-tests.sh. Run it from the cloned folder after reading it.
bash run-tests.sh
CONTRIBUTING.mdThank you for thinking of contributing! We very much welcome contributions from the community. To make the process easier and more valuable for everyone involved we have a few rules and guidelines to follow.
Anyone with a Github account is free to file issues on the project. However, if you want to contribute documentation or code then you will need to sign InfluxData's Individual Contributor License Agreement (CLA), which can be found with more information on our website.
Before you file an issue, please search existing issues in case the same or similar issues have already been filed. If you find an existing open ticket covering your issue then please avoid adding "👍" or "me too" comments; Github notifications can cause a lot of noise for the project maintainers who triage the back-log. However, if you have a new piece of information for an existing ticket and you think it may help the investigation or resolution, then please do add it as a comment! You can signal to the team that you're experiencing an existing issue with one of Github's emoji reactions (these are a good way to add "weight" to an issue from a prioritisation perspective).
The New Issue page has templates for both bug reports and feature requests. Please fill one of them out! The issue templates provide details on what information we will find useful to help us fix an issue. In short though, the more information you can provide us about your environment and what behaviour you're seeing, the easier we can fix the issue. If you can push a PR with test cases that trigger a defect or bug, even better! P.S, if you have never written a bug report before, or if you want to brush up on your bug reporting skills, we recommend reading Simon Tatham's essay How to Report Bugs Effectively.
As well as bug reports we also welcome feature requests (there is a dedicated issue template for these). Typically, the maintainers will periodically review community feature requests and make decisions about if we want to add them. For features we don't plan to support we will close the feature request ticket (so, again, please check closed tickets for feature requests before submitting them).
InfluxDB 3 is written mostly in idiomatic Rust. Please refer to the Rust API Guidelines for more details.
All code must adhere to the rustfmt format, and pass all of the clippy checks we run in CI (there are more details further down this README).
The good first issue and the help wanted labels are used to identify issues where we encourage community contributions. They both indicate issues for which we would welcome independent community contributions, but the former indicates a sub-set of these that are especially good for first-time contributors. If you want some clarifications or guidance for working on one of these issues, or you simply want to let others know that you're working on one, please leave a comment on the ticket.
If you're planning to submit significant changes, even if it relates to existing tickets please talk to the project maintainers first! The easiest way to do this is to open up a new ticket, describing the changes you plan to make and why you plan to make them. Changes that may seem obviously good to you, are not always obvious to everyone else. Example of changes where we would encourage up-front communication:
unsafe code;We are always excited to have community involvement but we can't accept everything. To avoid having your hard work rejected the best approach to start a discussion first. Further, please don't expect us to accept significant changes without new test coverage, and/or in the case of performance changes benchmarks that show the improvements.
To open a PR you will need to have a Github account.
Fork the influxdb repo and work on a branch on your fork.
When you have completed your changes, or you want some incremental feedback make a Pull Request to InfluxDB here.
If you want to discuss some work in progress then please prefix [WIP] to the
PR title.
For PRs that you consider ready for review, verify the following locally before you submit it:
clippy checks pass; andThere are some tips on verifying the above in the next section.
After submitting a PR, you should:
Testing influxdb3 requires the use of cargo-nextest which can be installed
via:
cargo install cargo-nextest --locked
You can then run all tests in the workspace:
cargo nextest run --workspace
To enable logging to stdout/stderr during a run of cargo nextest set the Rust TEST_LOG, RUST_LOG,
and RUST_LOG_SPAN_EVENTS environment variables. For example, to see all INFO messages:
TEST_LOG= RUST_LOG=info RUST_LOG_SPAN_EVENTS=full cargo nextest run --workspace --nocapture
TEST_LOG will emit logs from the running test server (see End-to-End Tests).
Since this feature uses EnvFilter internally, you can use all the features of that
crate. For example, to disable the (somewhat noisy) logs in some h2 modules, you can use a value of
RUST_LOG such as:
RUST_LOG=debug,hyper::proto::h1=info,h2=info RUST_LOG_SPAN_EVENTS=full cargo nextest run --workspace --nocapture
Many tests use the test-log crate to enable this logging
behaviour, which requires the use of the RUST_LOG_SPAN_EVENTS environment variable.
There are end-to-end tests that spin up a server and make requests via the client library and API.
They can be found in influxdb3/tests/
When running these tests, you can have the logs of the running server emitted to stdout by adding
the TEST_LOG environment variable, for example:
TEST_LOG= cargo nextest run -p influxdb3 --nocapture
rustfmt and clippyCI will check the code formatting with rustfmt and Rust best practices with clippy.
To automatically format your code according to rustfmt style, first make sure rustfmt is installed using rustup:
rustup component add rustfmt
Then, whenever you make a change and want to reformat, run:
cargo fmt --all
Similarly with clippy, install with:
rustup component add clippy
And run with:
cargo clippy --all-targets --workspace -- -D warnings
InfluxDB 3 is built with Rust. Use rustup to install a recent Rust toolchain.
You can clone and build the influxdb3 binary:
git clone https://github.com/influxdata/influxdb.git
cd influxdb
cargo build
influxdb3 requires a working installation of python3. See README_processing_engine.md
for more details on the system requirements.
influxdb3 requires a working protoc Protocol Buffers compiler installed.
The default build profile used when running cargo build will build quickly, but will not produce
an optimized binary. To build a more optimized build, you can use a different --profile:
cargo build --profile <PROFILE>
The following profiles are available:
release: this profile optimizes for runtime performance and small binary size at the expense
of longer build times. It's most suitable for final release builds.quick-release: this profile optimizes for short build times at the expense of larger binary
size and slower runtime performance. It's most suitable for development iterations.quick-bench: this profile extends the quick-release profile with debuginfo turned on in
order to produce more human friendly symbols for profiling tools.The default profiles supported by cargo can also be used.
Then run bash setup.sh. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
git clone https://github.com/influxdata/influxdb.git cd influxdb
Rust 1.98.1
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup show # installs the pinned toolchain
cargo build
cargo test
Docker images, Debian packages, RPM packages, and tarballs are available on the InfluxData downloads page.
main-2.x branch.master-1.x branch.If you are interested in building from source, see the building from source guide for contributors.
No reports for Linux yet.
GitManual AI Agent reads the 6 key files and writes a step-by-step guide for Linux. Once written, it's saved for everyone.