diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c9d5d9..efe745c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,120 @@ +v1.8.11-c1.2.0 [2024-09-08] +------------------- + +InfluxDB Cluster v1.8.11-c1.2.0 release + +### Features + +- chore: upgrade to go 1.21.13 (and support `GOMEMLIMIT` environment variable to set a soft memory limit includes the Go heap and all other memory managed by the runtime) +- feat(gossip): gossip `/announce` will try to request other nodes when network failed +- refactor(pool): optimize connection pool to reduce the number of `TCP` and `TIME_WAIT` +- refactor(meta-executor): optimize meta executor with connection pool +- feat(config): support `shard-reader-timeout` in data node configuration +- chore(write): optimize logger output under write `timeout` failed + +### Bugfixes + +- fix(cluster): fix nil pointer dereference in marshal binary of join cluster response [#15](https://github.com/chengshiwen/influxdb-cluster/issues/15) +- fix(hinted-handoff): fix null pointer from hh caused panic [#28](https://github.com/chengshiwen/influxdb-cluster/pull/28) +- fix(hinted-handoff): fix possible deadlock in node_processor [#42](https://github.com/chengshiwen/influxdb-cluster/issues/42) +- fix(pool): fix possible deadlock in client_pool +- fix(copy-shard): fix read tcp i/o timeout in `copy-shard` [#39](https://github.com/chengshiwen/influxdb-cluster/issues/39) +- fix(meta-client): fix data race in meta client +- fix(show-shards): remove any expired shards and give empty expiry time for inf duration shards from the `/show-shards` output +- fix(influxd): fix influxd close and reset issue +- fix(coordinator): fix closing opened twice in points writer +- fix(tsm1): Fix data race of seriesKeys in deleteSeriesRange +- chore(config): fix indent and typo in config.sample.toml and meta.config.sample.toml + +InfluxDB OSS v1.8.11 release + +### Features + +- [#24764](https://github.com/influxdata/influxdb/pull/24764): chore: upgrade to influxdata/influxql v1.2.0 +- [#20793](https://github.com/influxdata/influxdb/pull/20793): feat: Add WITH KEY to show tag keys +- [#21983](https://github.com/influxdata/influxdb/pull/21983): feat: SHOW TAG VALUES should produce results from one specific RP +- [#22388](https://github.com/influxdata/influxdb/pull/22388): feat: show measurements database and retention policy wildcards +- [#22620](https://github.com/influxdata/influxdb/pull/22620): feat: add thread-safe access to CountingWriter byte total +- [#22638](https://github.com/influxdata/influxdb/pull/22638): feat: optionally dump queries to log on SIGTERM +- [#23055](https://github.com/influxdata/influxdb/pull/23055): feat: configurable DELETE concurrency +- [#23320](https://github.com/influxdata/influxdb/pull/23320): feat: log slow queries even without query logging +- [#23425](https://github.com/influxdata/influxdb/pull/23425): feat: log the log level regardless of log level +- [#23795](https://github.com/influxdata/influxdb/pull/23795): feat: add version number to debug/vars +- [#23978](https://github.com/influxdata/influxdb/pull/23978): feat: add the ability to log queries killed by `query-timeout` +- [#18146](https://github.com/influxdata/influxdb/pull/18146): refactor(query): reuse matchAllRegex +- [#19514](https://github.com/influxdata/influxdb/pull/19514): refactor: Use filepath.Walk +- [#19323](https://github.com/influxdata/influxdb/pull/19323): refactor: Use binary.Read() instead of io.ReadFull() + +### Bugfixes + +- [#22754](https://github.com/influxdata/influxdb/pull/22754): fix: detect misquoted tag values and return an error +- [#17685](https://github.com/influxdata/influxdb/pull/17685): fix(tsm1): Fix temp directory search bug +- [#18004](https://github.com/influxdata/influxdb/pull/18004): fix(httpd): Fixes key collisions when serializing /debug/vars +- [#18129](https://github.com/influxdata/influxdb/pull/18129): fix(tsdb): Fix variables masked by a declaration +- [#18429](https://github.com/influxdata/influxdb/pull/18429): fix(httpd): add option to authenticate prometheus remote read +- [#19631](https://github.com/influxdata/influxdb/pull/19631): fix(CORS): allow PATCH +- [#20694](https://github.com/influxdata/influxdb/pull/20694): fix: consistent error for missing shard +- [#20802](https://github.com/influxdata/influxdb/pull/20802): fix(tsm1): fix data race and validation in cache ring +- [#21558](https://github.com/influxdata/influxdb/pull/21558): fix: do not send non-UTF-8 characters to subscriptions +- [#21592](https://github.com/influxdata/influxdb/pull/21592): fix: avoid rewriting fields.idx unnecessarily +- [#21659](https://github.com/influxdata/influxdb/pull/21659): fix: do not close connection twice in DigestWithOptions +- [#21666](https://github.com/influxdata/influxdb/pull/21666): fix: do not panic on cleaning up failed iterators +- [#21792](https://github.com/influxdata/influxdb/pull/21792): fix: error instead of panic for statement rewrite failure +- [#21795](https://github.com/influxdata/influxdb/pull/21795): fix: show shards gives empty expiry time for inf duration shards +- [#22040](https://github.com/influxdata/influxdb/pull/22040): fix: copy names from mmapped memory before closing iterator +- [#22038](https://github.com/influxdata/influxdb/pull/22038): test: fix order of index teardown +- [#22273](https://github.com/influxdata/influxdb/pull/22273): fix: return correct count of ErrNotExecuted +- [#22353](https://github.com/influxdata/influxdb/pull/22353): fix: correct error return shadowing +- [#22348](https://github.com/influxdata/influxdb/pull/22348): fix: flux error properly read by cloud +- [#22492](https://github.com/influxdata/influxdb/pull/22492): fix: For Windows, close temp file before removing +- [#22566](https://github.com/influxdata/influxdb/pull/22566): fix(tsdb): sync series segment to disk after writing +- [#22601](https://github.com/influxdata/influxdb/pull/22601): fix: create shards without overlaps +- [#22661](https://github.com/influxdata/influxdb/pull/22661): chore: fix deadlock in `influx_inspect dumptsi` +- [#22703](https://github.com/influxdata/influxdb/pull/22703): fix: extend snapshot copy to filesystems that cannot link +- [#22796](https://github.com/influxdata/influxdb/pull/22796): fix(restore): fix race condition which causes restore command to fail +- [#21932](https://github.com/influxdata/influxdb/pull/21932): fix(tsi): sync index file before close +- [#22929](https://github.com/influxdata/influxdb/pull/22929): fix: use defer for unlock +- [#22998](https://github.com/influxdata/influxdb/pull/22998): fix: `influxd-ctl backup` will create a working backup when only `-shard` given +- [#23217](https://github.com/influxdata/influxdb/pull/23217): fix: return underlying error creating a subscription +- [#23197](https://github.com/influxdata/influxdb/pull/23197): fix(influx_inspect): multiple retention policies bug in influx_inspect export +- [#21125](https://github.com/influxdata/influxdb/pull/21125): chore: fix typo in config.sample.toml +- [#21746](https://github.com/influxdata/influxdb/pull/21746): fix(httpd): abort processing write request when encountering a precision error +- [#23286](https://github.com/influxdata/influxdb/pull/23286): fix: MeasurementsCardinality should not be less than 0 +- [#23336](https://github.com/influxdata/influxdb/pull/23336): fix: remove data directory appending for influx_inspect verify +- [#23387](https://github.com/influxdata/influxdb/pull/23387): fix: replace unprintable and invalid characters in errors +- [#23396](https://github.com/influxdata/influxdb/pull/23396): fix: do not rename files on mmap failure +- [#23430](https://github.com/influxdata/influxdb/pull/23430): fix: fully clean up partially opened TSI +- [#23437](https://github.com/influxdata/influxdb/pull/23437): fix: remember shards that fail Open(), avoid repeated attempts +- [#23461](https://github.com/influxdata/influxdb/pull/23461): fix: lost TSI reference / close TagValueSeriesIDIterator in error case +- [#23467](https://github.com/influxdata/influxdb/pull/23467): fix: eliminate race condition on Monitor.globalTags +- [#23532](https://github.com/influxdata/influxdb/pull/23532): fix: improve error messages opening index partitions +- [#23539](https://github.com/influxdata/influxdb/pull/23539): fix: create TSI MANIFEST files atomically +- [#23557](https://github.com/influxdata/influxdb/pull/23557): fix: add paths to tsi log and index file errors +- [#23566](https://github.com/influxdata/influxdb/pull/23566): fix: add reporttsi to the help text +- [#23580](https://github.com/influxdata/influxdb/pull/23580): fix: generalize test for Windows +- [#23785](https://github.com/influxdata/influxdb/pull/23785): fix: use copy when a rename spans volumes +- [#23787](https://github.com/influxdata/influxdb/pull/23787): fix: add tests for file rename across volumes +- [#23822](https://github.com/influxdata/influxdb/pull/23822): fix: log errors in continuous query statistics storage +- [#23727](https://github.com/influxdata/influxdb/pull/23727): fix: don't write skipped shard messages to the line protocol output destination +- [#23916](https://github.com/influxdata/influxdb/pull/23916): fix: series file index compaction +- [#24311](https://github.com/influxdata/influxdb/pull/24311): fix: do not escape CSV output +- [#24509](https://github.com/influxdata/influxdb/pull/24509): fix: avoid SIGBUS when reading non-std series segment files +- [#24565](https://github.com/influxdata/influxdb/pull/24565): fix: panic index out of range for invalid series keys +- [#24784](https://github.com/influxdata/influxdb/pull/24784): fix: do not panic when empty tags are queried +- [#24602](https://github.com/influxdata/influxdb/pull/24602): fix: improved shard deletion +- [#24957](https://github.com/influxdata/influxdb/pull/24957): fix: ensure TSMBatchKeyIterator and FileStore close all TSMReaders +- [#24975](https://github.com/influxdata/influxdb/pull/24975): fix: return MergeIterator.Close errors +- [#25037](https://github.com/influxdata/influxdb/pull/25037): fix: ignore empty index error deleting last measurement +- [#25082](https://github.com/influxdata/influxdb/pull/25082): fix: GROUP BY queries with offset that crosses a DST boundary fail. +- [#25146](https://github.com/influxdata/influxdb/pull/25146): fix: Store.validateArgs wrongfully overwriting start, end unix time +- [#25182](https://github.com/influxdata/influxdb/pull/25182): fix(tsi1): fix data race between appendEntry and FlushAndSync tsi1.(*LogFile) +- [#22283](https://github.com/influxdata/influxdb/pull/22283): fix: require database authorization to see continuous queries + +**Note**: Why does [v1.8.11](https://github.com/chengshiwen/influxdb/tree/1.8.11) exist? + +> Because [v1.8.10](https://github.com/influxdata/influxdb/tree/v1.8.10) is the last version of 1.8 and has been out of maintenance for a long time. +> [v1.8.11](https://github.com/chengshiwen/influxdb/tree/1.8.11) is based on [v1.8.10](https://github.com/influxdata/influxdb/tree/v1.8.10), and applied important bug fixes from [1.9](https://github.com/influxdata/influxdb/tree/1.9) to [1.11](https://github.com/influxdata/influxdb/tree/1.11). For details of the commits, see https://github.com/chengshiwen/influxdb/compare/v1.8.10...1.8.11 + v1.8.10-c1.1.2 [2022-12-11] ------------------- diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 20f206b..88bfe1d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -136,7 +136,7 @@ bash build.sh --help bash build.sh --package # Or to build all release packages by specifying the platform, arch, branch and version -bash build.sh --platform all --arch all --branch master --version 1.8.10-c1.1.2 --clean --release --package +bash build.sh --platform all --arch all --branch master --version 1.8.11-c1.2.0 --clean --release --package ``` To run the tests, execute the following command: @@ -162,7 +162,8 @@ Build and Push Multi-Arch Docker Images To build and push multi-arch docker images, run the following command: ```bash -INFLUXDB_VERSION=1.8.10-c1.1.2 +INFLUXDB_VERSION=1.8.11-c1.2.0 +docker buildx create --name multi-platform --driver docker-container --use cd docker/data docker buildx build --platform linux/amd64,linux/arm64 --build-arg INFLUXDB_VERSION=${INFLUXDB_VERSION} --push -f Dockerfile -t chengshiwen/influxdb:${INFLUXDB_VERSION}-data . docker buildx build --platform linux/amd64,linux/arm64 --build-arg INFLUXDB_VERSION=${INFLUXDB_VERSION} --push -f Dockerfile_alpine -t chengshiwen/influxdb:${INFLUXDB_VERSION}-data-alpine . diff --git a/README.md b/README.md index 21bbd42..ede32ce 100644 --- a/README.md +++ b/README.md @@ -15,13 +15,13 @@ InfluxDB Cluster is an open source **time series database** with **no external dependencies**. It's useful for recording metrics, events, and performing analytics. -InfluxDB Cluster is inspired by [InfluxDB Enterprise](https://docs.influxdata.com/enterprise_influxdb/v1.8/), [InfluxDB v1.8.10](https://github.com/influxdata/influxdb/tree/v1.8.10) and [InfluxDB v0.11.1](https://github.com/influxdata/influxdb/tree/v0.11.1), aiming to replace InfluxDB Enterprise. +InfluxDB Cluster is inspired by [InfluxDB Enterprise](https://docs.influxdata.com/enterprise_influxdb/v1/), [InfluxDB v1.8.10](https://github.com/influxdata/influxdb/tree/v1.8.10) and [InfluxDB v0.11.1](https://github.com/influxdata/influxdb/tree/v0.11.1), aiming to replace InfluxDB Enterprise. InfluxDB Cluster is easy to maintain, and can be updated in real time with upstream [InfluxDB 1.x](https://github.com/influxdata/influxdb/tree/master-1.x). ## Features -* Built-in [HTTP API](https://docs.influxdata.com/influxdb/latest/guides/writing_data/) so you don't have to write any server side code to get up and running. +* Built-in [HTTP API](https://docs.influxdata.com/enterprise_influxdb/v1/guides/write_data/) so you don't have to write any server side code to get up and running. * Data can be tagged, allowing very flexible querying. * SQL-like query language. * Clustering is supported out of the box, so that you can scale horizontally to handle your data. **Clustering is currently in production state.** @@ -34,7 +34,7 @@ InfluxDB Cluster is easy to maintain, and can be updated in real time with upstr > **Note**: The clustering of InfluxDB Cluster is exactly the same as that of InfluxDB Enterprise. -Please see: [Clustering in InfluxDB Enterprise](https://docs.influxdata.com/enterprise_influxdb/v1.8/concepts/clustering/) +Please see: [Clustering in InfluxDB Enterprise](https://docs.influxdata.com/enterprise_influxdb/v1/concepts/clustering/) Architectural overview: @@ -57,10 +57,10 @@ Complete the following steps to install an InfluxDB Cluster in your own environm ## Docker Quickstart -Download [docker-compose.yml](./docker/quick/docker-compose.yml), then start 3 meta nodes and 2 data nodes by `docker-compose`: +Download [docker-compose.yml](./docker/quick/docker-compose.yml), then start 3 meta nodes and 2 data nodes by `docker compose`: ``` -docker-compose up -d +docker compose up -d docker exec -it influxdb-meta-01 bash influxd-ctl add-meta influxdb-meta-01:8091 influxd-ctl add-meta influxdb-meta-02:8091 @@ -73,7 +73,7 @@ influxd-ctl show Stop and remove them when they are no longer in use: ``` -docker-compose down -v +docker compose down -v ``` ## Getting Started @@ -85,6 +85,7 @@ curl -XPOST "http://influxdb-data-01:8086/query" --data-urlencode "q=CREATE DATA ``` ### Insert some data + ``` curl -XPOST "http://influxdb-data-01:8086/write?db=mydb" \ -d 'cpu,host=server01,region=uswest load=42 1434055562000000000' @@ -99,12 +100,14 @@ curl -XPOST "http://influxdb-data-02:8086/write?db=mydb&consistency=quorum" \ > **Note**: `consistency=[any,one,quorum,all]` sets the write consistency for the point. `consistency` is `one` if you do not specify consistency. See the [Insert some data / Write consistency](https://github.com/chengshiwen/influxdb-cluster/wiki/Home-Eng#insert-some-data) for detailed descriptions of each consistency option. ### Query for the data + ``` curl -G "http://influxdb-data-02:8086/query?pretty=true" --data-urlencode "db=mydb" \ --data-urlencode "q=SELECT * FROM cpu WHERE host='server01' AND time < now() - 1d" ``` ### Analyze the data + ``` curl -G "http://influxdb-data-02:8086/query?pretty=true" --data-urlencode "db=mydb" \ --data-urlencode "q=SELECT mean(load) FROM cpu WHERE region='uswest'" @@ -113,9 +116,9 @@ curl -G "http://influxdb-data-02:8086/query?pretty=true" --data-urlencode "db=my ## Documentation * View the wiki: [English Document](https://github.com/chengshiwen/influxdb-cluster/wiki/Home-Eng) / [中文文档](https://github.com/chengshiwen/influxdb-cluster/wiki/Home). -* Read more about the [design goals and motivations of the project](https://docs.influxdata.com/enterprise_influxdb/v1.8/). -* Follow the [getting started guide](https://docs.influxdata.com/enterprise_influxdb/v1.8/introduction/getting-started/) to learn the basics in just a few minutes. -* Learn more about [clustering](https://docs.influxdata.com/enterprise_influxdb/v1.8/concepts/clustering/) and [glossary](https://docs.influxdata.com/enterprise_influxdb/v1.8/concepts/glossary/). +* Read more about the [design goals and motivations of the project](https://docs.influxdata.com/enterprise_influxdb/v1/). +* Follow the [getting started guide](https://docs.influxdata.com/enterprise_influxdb/v1/introduction/getting-started/) to learn the basics in just a few minutes. +* Learn more about [clustering](https://docs.influxdata.com/enterprise_influxdb/v1/concepts/clustering/) and [glossary](https://docs.influxdata.com/enterprise_influxdb/v1/concepts/glossary/). ## Contributing diff --git a/docker/quick/docker-compose.yml b/docker/quick/docker-compose.yml index 8d984b7..97b3ea2 100644 --- a/docker/quick/docker-compose.yml +++ b/docker/quick/docker-compose.yml @@ -1,9 +1,9 @@ -version: "3.5" +name: "influxdb-cluster" services: influxdb-meta-01: - image: chengshiwen/influxdb:1.8.10-c1.1.2-meta + image: chengshiwen/influxdb:1.8.11-c1.2.0-meta container_name: influxdb-meta-01 hostname: influxdb-meta-01 restart: unless-stopped @@ -11,7 +11,7 @@ services: - influxdb-cluster influxdb-meta-02: - image: chengshiwen/influxdb:1.8.10-c1.1.2-meta + image: chengshiwen/influxdb:1.8.11-c1.2.0-meta container_name: influxdb-meta-02 hostname: influxdb-meta-02 restart: unless-stopped @@ -19,7 +19,7 @@ services: - influxdb-cluster influxdb-meta-03: - image: chengshiwen/influxdb:1.8.10-c1.1.2-meta + image: chengshiwen/influxdb:1.8.11-c1.2.0-meta container_name: influxdb-meta-03 hostname: influxdb-meta-03 restart: unless-stopped @@ -27,7 +27,7 @@ services: - influxdb-cluster influxdb-data-01: - image: chengshiwen/influxdb:1.8.10-c1.1.2-data + image: chengshiwen/influxdb:1.8.11-c1.2.0-data container_name: influxdb-data-01 hostname: influxdb-data-01 ports: @@ -37,7 +37,7 @@ services: - influxdb-cluster influxdb-data-02: - image: chengshiwen/influxdb:1.8.10-c1.1.2-data + image: chengshiwen/influxdb:1.8.11-c1.2.0-data container_name: influxdb-data-02 hostname: influxdb-data-02 ports: