Commit Graph

49614 Commits (chore/release-beta-2)

Author SHA1 Message Date
Praveen Kumar 94c29a23e4
chore: release beta 2 2025-03-24 20:45:04 +00:00
Trevor Hilton f5144b88a8
feat: version 2 catalog serialization (#26183)
This introduces a new version for the catalog file formats ([snapshot](3b57682214/influxdb3_catalog/src/snapshot/versions/mod.rs (L2)) files and [log](3b57682214/influxdb3_catalog/src/log/versions/mod.rs (L2)) files). The reason for introducing a new version is to change the serialization/deserialization format from [`bitcode`](https://docs.rs/bitcode/latest/bitcode/) to JSON. See #26180.

The approach taken was to copy the existing type definitions for both log and snapshot files into two places: a `v1` module and a `v2` module. Going forward:
* Types defined in `v1` should not be changed. They are only there to enable deserialization of existing bitcode-serialized catalog files. 
* Types defined in `v2` can be modified in a backward-compatible manor, and new types can be added to the `v2` modules

With this PR, old files are not overwritten. The server does not migrate any files on startup. See https://github.com/influxdata/influxdb/pull/26183#issuecomment-2748238191

Closes #26180
2025-03-24 12:41:00 -04:00
wayne f456fd4df3
feat: add BooleanValue::Toggle and FloatValue::SequentialWithInc (#26178) 2025-03-21 09:55:22 -06:00
praveen-influx d6abd8db66
chore: create release doc (#26171) 2025-03-20 20:06:28 +00:00
praveen-influx 823e792c67
chore: check if build is dirty and fail (#26172) 2025-03-20 20:05:32 +00:00
wayne 4fd0a3b05d
feat: support deterministic load generator values (#26174)
* simplify FieldValue types by making load generator functions should be
  generic over RngCore and passing the RNG in to methods rather than
  depending on it being available on every type instance that needs it
* expose influxdb3_load_generator as library crate
* export config, spec, and measurement types publicly to suppore use in
  the antithesis-e2e crate
* fix bug that surfaced whenever the cardinality value was less than the
  lines per sample value by forcing LP lines in a set of samples to be
  distinct from one another with nanosecond increments
2025-03-20 11:58:38 -06:00
Jackson Newhouse 7c02593fef
chore: Overhaul CLI tests for better ergonomics. (#26168)
* chore: Overhaul CLI tests for better ergonomics.

* chore: switch with_query() to with_sql().
2025-03-20 09:19:12 -07:00
praveen-influx 98bf325a46
chore: 3.0.0-beta.1 release ready (#26167) 2025-03-19 22:24:32 +00:00
Jamie Strandboge 8bb09e4b82
chore(ci): update to handle release tags (#26166)
* chore(ci): use most recent ci-support images

* fix: update release_filter (thanks Praveen) and pkg version for release
2025-03-19 10:46:44 -05:00
Michael Gattozzi b792f70960
fix: maybe fix flakiness for parquet cache test (#26159)
This adds a sleep so that the parquet cache has a little bit of time to
populate before we make another request to the query buffer. Sometimes
it does not populate and so we have a race condition where the new
request comes in and actually goes to object store. This is fine in
practice because it would also take time to fill the cache in production
as well. I haven't really seen the test fail since adding this, but
triggering it in the first place is really hard and in practice does not
happen all that often.
2025-03-18 11:31:30 -04:00
Michael Gattozzi 4e2cb630b3
fix: Prevent Catalog UUID races for new nodes (#26160)
When starting up a new cluster in Enterprise we might have multiple
nodes starting at the same time. We might have an issue wherby we have
multiple catalogs with different UUIDs in their in memory
representation.

For example:
- Let's say we have node0 and node1
- node0 and node1 start at the same time and both check object storage
  to see if there is a catalog to load
- They both see there is no catalog
- They both create a new one by generating a UUID and persisting it to
  object storage
- Whichever is written second is now the one with the correct UUID in
  their in memory representation while the other will not have the
  correct one until restarted likely

This in practice isn't an issue today as Trevor notes in
https://github.com/influxdata/influxdb_pro/issues/600, but it could be
once we start using `--cluster-id` for licensing purposes. In order to
prevent this we instead make the write to object storage use the Put
mode. If it exists then the write will fail and the node that lost the
race will instead just load the other's catalog.

For example if node1 wins the race then node0 will load the catalog
created by node1 and use that UUID instead.

As this is hard to create a test for as it involves a race condition to
happen I have not included one as we could never really be sure it was
taken care of and we rely on the underlying object store we are writing
to to handle this for us. It's also not likely to happen given this is
only on a new cluster being initiated for the first time decreasing the
chances of it occurring in the first place.
2025-03-18 11:25:08 -04:00
Trevor Hilton d2da058ded
chore: cleanup token create CLI message (#26158) 2025-03-18 10:08:16 -04:00
Trevor Hilton 863a6d0b4a
feat: ack catalog update broadcast (#26118)
This creates a CatalogUpdateMessage type that is used to send
CatalogUpdates; this type performs the send on the oneshot Sender so
that the consumer of the message does not need to do so.

Subscribers to the catalog get a CatalogSubscription, which uses the
CatalogUpdateMessage type to ACK the message broadcast from the catalog.

This means that catalog message broadcast can fail, but this commit does
not provide any means of rolling back a catalog update.

A test was added to check that it works.
2025-03-17 20:20:07 -04:00
peterbarnett03 98ca8dcb50
chore: Update install script for Docker with cluster changes (#26149)
* chore: update Docker install info

* fix: remove secondary script

* fix: bad copy

* fix: tiny bad copy

* fix: revert issue

* fix: adjust for Core

* fix: removing MUSL and fixing fi

* chore: whitespace updates for previous commits

---------

Co-authored-by: Jamie Strandboge <jamie@influxdata.com>
2025-03-17 14:45:34 -05:00
Trevor Hilton 3ad0670452
test: small change to distinct cache cli test (#26152)
Added one check to the distinct cache create test that checks duplicate
creation behaviour while investigating influxdb_pro#601
2025-03-17 11:05:25 -04:00
Paul Dix 1f9849be83
feat: Update README with beta info (#26151) 2025-03-17 10:33:13 -04:00
Jamie Strandboge 51123f2da0
fix: don't use modified .cargo/config.toml (#26148)
We need to both add and remove keys from rustflags, but modifying
.cargo/config.toml in place causes the version string to have -dirty
appended to it. Use ci-support that instead creates ./.cargo/config (a
historic filename that is preferred over ./.cargo/config.toml if it
exists) and then git ignore ./.cargo/config.

References:
- https://github.com/influxdata/influxdb/issues/26147
- https://doc.rust-lang.org/cargo/reference/config.html?highlight=rustflags#hierarchical-structure
2025-03-16 14:19:59 -05:00
Trevor Hilton f94c21025d
chore: re-enable release on merge to main (#26144) 2025-03-15 08:55:41 -04:00
Jamie Strandboge ba7e6c6986
feat(python): update to python-build-standalone 3.13.2 (#26125)
* feat(python): update to python-build-standalone 3.13.2

References:
- https://github.com/influxdata/influxdb/issues/26044

* fix: update fetch-python-standalone.bash to properly set 'executable'

* fix: use PYO3_CONFIG_FILE to find PYTHONHOME.

* fix: add comment about PYO3_CONFIG_FILE.

* fix: remove ensure_pyo3().

* fix: add some sleep so catalog is updated.

---------

Co-authored-by: Jackson Newhouse <jnewhouse@influxdata.com>
2025-03-14 14:44:05 -05:00
Jackson Newhouse e49f0e89fa
fix(processing_engine): Change how temporary plugin files are managed. (#26141) 2025-03-14 10:52:38 -07:00
Jackson Newhouse e1015f15f7
feat(processing_engine): proper escaping of LineBuilder arguments. (#26134) 2025-03-14 09:31:58 -07:00
Trevor Hilton 0c8d17fb89
refactor: use repositories in catalog (#26135)
* refactor: use repository in catalog

The catalog was refactored to use identifiers on everything, and store
everything in a consistent structure. This structure makes use of the
`Repository` type that holds a `SerdeVecMap` of Id to Resource, along
with the next Id, and a bi-map of Id to resource name.

The `Repository` type is used at each level of the catalog where a
resource is stored.

This simplified repeated logic for snapshot'ing, insert and update of
resources in the catalog, as well as accessor methods for getting by id
or name, and mapping names to ids and vice-versa.

In addition, the process for catalog batch verification and permit was
altered so that the permit process induces a retry if the catalog was
updated while the catalog batch function was producing the batch, i.e, if
the catalog sequence incremented while the caller was waiting for a permit.
This eliminated the need for verifying the catalog batch after it had been
generated, and allows for a single path to apply a catalog batch after it
has been persisted to object store.

This assumes that the generation of the catalog batch implies validity.

Irelevant tests were removed.

Last and Distinct cache's now rely more heavily on Ids, though the proc-
essing engine still needs to switch over to use Ids for starting/stopping
triggers.
2025-03-13 22:42:18 -04:00
Jamie Strandboge be2dc6ac35
fix(ci): update windows tarball to put dlls next to influxdb3.exe (#26137)
References:
- https://github.com/influxdata/influxdb/issues/26113
2025-03-13 21:35:58 -05:00
Jackson Newhouse 331f88533c
feat(processing_engine): Attach a node id to the processing engine and triggers for multi-node support compatibility. (#26136) 2025-03-13 16:10:02 -07:00
Jamie Strandboge 941e0e0f15
fix: updates for package validation with portable glibc builds (#26131)
* fix(circleci): add librt.so to list of acceptable libraries

* feat(circleci): check for glibc portability

* fix(circleci): remove rpm --nodeps workaround in rpm validate

Now that we have glibc portability in rpm builds, we no longer need the
'rpm --nodeps' workaround and can go back to 'yum localinstall'.

Closes #26011

* chore: update README_processing_engine.md for glibc portability
2025-03-13 12:25:31 -05:00
Michael Gattozzi 97b8c471f8
fix: Make sure JSON fully closes on empty records (#26130) 2025-03-12 14:01:40 -04:00
Michael Gattozzi 00aa90fe6f
feat: Add PeristedSnapshotVersion for snapshots (#26117)
Continuing our work of creating versioned files before Beta, this commit
adds a PersistedSnapshotVersion which is used at the boundary of
serializing and deserializing so that we can easily upgrade to a newer
version and handle old versions without breaking things for users.
2025-03-12 13:21:54 -04:00
Trevor Hilton b6cb6dd51e
chore: back-port catalog debug log cleanup from enterprise (#26128)
* chore: back-port debug log cleanup for catalog

* chore: back-port debug log cleanup for wal

* chore: back-port debug log cleanup for write
2025-03-12 13:20:21 -04:00
Jamie Strandboge 0983ecb542
feat(circleci): use portable glibc ci-cross-influxdb3 (#26124)
* feat(circleci): use portable glibc ci-cross-influxdb3

* chore: update build-dev job to conditionally persist debug builds
2025-03-12 11:10:08 -05:00
Trevor Hilton 1fb03b3daa
fix: off-by-one in catalog update logic (#26129) 2025-03-12 12:03:50 -04:00
Jackson Newhouse a455598be6
feat(processing_engine): Implement Processing Engine Cache. (#26111) 2025-03-11 15:48:47 -07:00
Trevor Hilton 503819468e
feat: catalog checkpoints (#26126) 2025-03-11 18:20:36 -04:00
Trevor Hilton 72dc4458fd
chore: backport changes to catalog from enterprise (#26116)
* chore: backport changes to influxdb3_catalog crate

* chore: backport changes to influxdb3_cache crate

* chore: backport changes to influxdb3_write crate

* chore: backport changes to influxdb3_proc_eng crate

* chore: backport influxdb3 crate changes for catalog

* chore: backport changes to influxdb3_id crate

* chore: backport changes to influxdb3_wal crate

* chore: backport changes to influxdb3_clap_blocks crate

* chore: backport changes to influxdb3_client crate

* chore: backport influxdb3_server crate changes

* chore: fix after full backport

* fix: ordering of catalog broadcast
2025-03-11 12:11:51 -04:00
Trevor Hilton 36fd6a5609
chore: ignore humantime RUSTSEC-2025-0014 (#26121) 2025-03-11 09:25:27 -04:00
Trevor Hilton 586204d3cc
chore: disable release on merge to main for beta (#26115) 2025-03-10 17:14:45 -04:00
Jackson Newhouse 5fa417c3f0
feat: remove system-py (#26087)
* feat: remove system-py

* chore: allow Apache-2.0 WITH LLVM-exception license.
2025-03-10 11:10:33 -07:00
praveen-influx 5fda7277e7
chore: fix cargo audit failures (#26112)
- update ring (ring v0.17.8 -> v0.17.13)
- added paste crate (unmaintained) to ignore list
2025-03-10 13:26:33 +00:00
Michael Gattozzi 329ef2f11b
feat: allow new tags in schema again (#26108)
This commit restores the old behavior we had where new tags can be added
to a schema. To do this we made tags nullable and brings us in line with
our other products. These changes were made in this PR:

https://github.com/influxdata/influxdb3_core/pull/41.

Changes to accomplish this new behavior were:

- Queries now do not return an empty string for null tags instead they
  are returned as null, or in many formats not at all.
- References to v1 for parsing and validating lines were removed as we
  only have one path for doing so these days shared amongst all the
  write_lp endpoints.
- We fixed failing tests that expected us to not be able to have new
  tags or depended on that functionality indirectly
- Tests had their snapshot files updated to reflect that tags are
  nullable by default
- Behavior for making a schema and checking whether a column can be null
  were updated in a separate repo and integrated here
- The series_key is updated whenever we get a new tag added to the
  schema
- New tests were added to show that you can add a new tag and that the
  series key is updated as part of that

With the above changes we can now allow tags to be added again by users
like they would expect, especially with v1 and v2 apis and Telegraf
plugins.
2025-03-06 13:59:15 -05:00
praveen-influx c724e06e3f
feat: query path instrumentation (#26106)
- spans added for buffer, parquet chunks along with number of files that
  are already in parquet cache along with the sql
2025-03-06 17:24:34 +00:00
Jackson Newhouse 85023f075b
fix(processing_engine): fix retry behavior on batches to try individual batch. (#26105) 2025-03-05 15:23:25 -08:00
Jackson Newhouse a1f0f2b691
fix: add error_behavior to test matching expression. (#26101) 2025-03-04 11:09:34 -08:00
Jackson Newhouse c930d9eef8
feat(processing_engine): error handling for triggers. (#26086) 2025-03-04 09:32:58 -08:00
Jackson Newhouse 357c05f3d0
feat(processing_engine): Support Flask semantics for responses from request plugins. (#26095) 2025-03-04 09:00:59 -08:00
praveen-influx e46d3b8881
chore: rust ci job fix to address rustup 1.28.0 changes (#26099)
- activate toolchain explicitly
- add clippy and rustfmt components
2025-03-04 11:44:58 +00:00
wayne 750387912e
fix: ensure active toolchain installation in Dockerfile (#26097) 2025-03-04 09:31:29 +00:00
wayne d1711d284a
fix: test case introduced by #26094 (#26096) 2025-03-03 17:27:23 -07:00
wayne e00e0f1a86
fix: allow equal sign in plugin trigger arguments (#26094) 2025-03-03 13:06:35 -07:00
wayne e2c3e7c8c8
feat: improve CLI list arg consistency (always use commas) (#26088)
* chore: eliminate SeparateList, use comma-delimited flag list options everywhere
* fix: remove num_args attribute from comma-delimited args
2025-03-03 12:52:13 -07:00
wayne a84c4a9a8b
fix: ensure "local" ObjectStore.list returns ordered elements (#26081) 2025-02-28 10:46:44 -07:00
Jackson Newhouse 208b82a32d
fix(processing_engine): Use default globals so that builtins are automatically included. (#26072) 2025-02-27 16:11:08 -08:00