Skip to content

Commit

Permalink
Prepare v1.20.0 release
Browse files Browse the repository at this point in the history
  • Loading branch information
AlekSi committed Feb 19, 2024
1 parent 9547b1e commit be98b9f
Show file tree
Hide file tree
Showing 54 changed files with 125 additions and 22 deletions.
41 changes: 40 additions & 1 deletion CHANGELOG.md
Expand Up @@ -2,14 +2,53 @@

<!-- markdownlint-disable MD024 MD034 -->

## v1.20.0 (not released yet)
## [v1.20.0](https://github.com/FerretDB/FerretDB/releases/tag/v1.20.0) (2024-02-19)

### What's Changed

#### Docker images changes

Production Docker images now use a non-root user with UID 1000 and GID 1000.

### Documentation 📄

- Add blog post on Ubicloud managed postgres by @Fashander in https://github.com/FerretDB/FerretDB/pull/4010
- Add release blog post for v1.19.0 by @Fashander in https://github.com/FerretDB/FerretDB/pull/4020
- Truncate release blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/4047
- Add blog post on Disaster Recovery for FerretDB with Elotl Nova by @Fashander in https://github.com/FerretDB/FerretDB/pull/4038
- Update Codapi by @Fashander in https://github.com/FerretDB/FerretDB/pull/4039
- Add blogpost on FerretDB stack on Tembo by @Fashander in https://github.com/FerretDB/FerretDB/pull/4037

### Other Changes 🤖

- Add tests for new SCRAM-SHA-256 authentication support by @henvic in https://github.com/FerretDB/FerretDB/pull/4012
- Add `TODO` comments for logging by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4015
- Add `bson2` helpers for conversions and logging by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4019
- Setup MySQL backend by @adetunjii in https://github.com/FerretDB/FerretDB/pull/4003
- Expose new authentication enabling flag by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4029
- Bump deps and speed-up `checkcomments` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4030
- Display `envtool run test` progress with run and/or skip flags by @fadyat in https://github.com/FerretDB/FerretDB/pull/3999
- Use Ubicloud for CI runners by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4027
- Implement `database.Stats` for MySQL backend by @adetunjii in https://github.com/FerretDB/FerretDB/pull/4034
- Minor cleanups by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4046
- Add experimental pushdown for dot notation by @noisersup in https://github.com/FerretDB/FerretDB/pull/4049
- Bump Go to 1.21.7 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4059
- Add utility for hashing SCRAM-SHA-256 password by @henvic in https://github.com/FerretDB/FerretDB/pull/4031
- Use rootless `scratch` containers for production Docker images by @ahmethakanbesel in https://github.com/FerretDB/FerretDB/pull/4004
- Prepare query statements for MySQL by @adetunjii in https://github.com/FerretDB/FerretDB/pull/4064
- Implement `bson2.RawDocument` checking by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4076
- Add helper for decoding document sequences by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4080
- Add SCRAM-SHA-256 authentication support by @henvic in https://github.com/FerretDB/FerretDB/pull/3989
- Remove SCRAM-SHA-256 implementation TODO links by @henvic in https://github.com/FerretDB/FerretDB/pull/4086
- Update telemetry host by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4085

### New Contributors

- @ahmethakanbesel made their first contribution in https://github.com/FerretDB/FerretDB/pull/4004

[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/62?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v1.19.0...v1.20.0).

## [v1.19.0](https://github.com/FerretDB/FerretDB/releases/tag/v1.19.0) (2024-01-29)

### New Features 🎉
Expand Down
2 changes: 1 addition & 1 deletion website/docusaurus.config.js
Expand Up @@ -49,7 +49,7 @@ const config = {

versions: {
// the latest minus one minor
'v1.18': {
'v1.19': {
banner: 'none',
},
},
Expand Down
Expand Up @@ -21,13 +21,14 @@ Some default values are overridden in [our Docker image](../quickstart-guide/doc

## General

| Flag | Description | Environment Variable | Default Value |
| -------------- | ----------------------------------------------------------------- | -------------------- | ------------------------------ |
| `-h`, `--help` | Show context-sensitive help | | false |
| `--version` | Print version to stdout and exit | | false |
| `--handler` | Backend handler | `FERRETDB_HANDLER` | `pg` (PostgreSQL) |
| `--mode` | [Operation mode](operation-modes.md) | `FERRETDB_MODE` | `normal` |
| `--state-dir` | Path to the FerretDB state directory<br />(set to `-` to disable) | `FERRETDB_STATE_DIR` | `.`<br />(`/state` for Docker) |
| Flag | Description | Environment Variable | Default Value |
| ----------------- | ----------------------------------------------------------------- | ------------------------ | ------------------------------ |
| `-h`, `--help` | Show context-sensitive help | | false |
| `--version` | Print version to stdout and exit | | false |
| `--handler` | Backend handler | `FERRETDB_HANDLER` | `pg` (PostgreSQL) |
| `--mode` | [Operation mode](operation-modes.md) | `FERRETDB_MODE` | `normal` |
| `--state-dir` | Path to the FerretDB state directory<br />(set to `-` to disable) | `FERRETDB_STATE_DIR` | `.`<br />(`/state` for Docker) |
| `--repl-set-name` | Replica set name<br />(should be set for OpLog to work correctly) | `FERRETDB_REPL_SET_NAME` | empty |

## Interfaces

Expand Down
@@ -0,0 +1,57 @@
---
sidebar_position: 4
slug: /configuration/oplog-support/
---

# OpLog support

FerretDB currently has a basic implementation of the OpLog (operations log).

The OpLog is a special capped collection which stores all operations that modify your data.
A capped collection is a fixed-sized collection that overwrites its entries when it reaches its maximum size.
Naturally, OpLog is a capped collection so as to ensure that data does not grow unbounded.

:::note
At the moment, only basic OpLog tailing is supported.
Replication is not supported yet.
:::

Oplog support is critical for the Meteor framework to build real-time applications.
Such applications require notifications on real-time events and can use the OpLog to build a simple pub/sub system.

## Enabling OpLog functionality

FerretDB will not create the oplog automatically; you must do so manually.

To enable OpLog functionality, manually create a capped collection named `oplog.rs` in the `local` database.

```js
// use local
db.createCollection('oplog.rs', { capped: true, size: 536870912 })
```

You may also need to set the replica set name using [`--repl-set-name` flag / `FERRETDB_REPL_SET_NAME` environment variable](flags.md#general).

:::tip
**`--repl-set-name` flag / `FERRETDB_REPL_SET_NAME`** environment variable allow clients and drivers to perform an initial replication handshake.
We do not perform any replication but clients and drivers will assume that the replication protocol is being used.
The purpose of this flag is to allow access to the OpLOg.
:::

```sh
docker run -e FERRETDB_REPL_SET_NAME=rs0 ...
```

To query the OpLog:

```js
db.oplog.rs.find()
```

To query OpLog for all the operations in a particular namespace (`test.foo`), run:

```js
db.oplog.rs.find({ ns: 'test.foo' })
```

If something does not work correctly or you have any question on the OpLog functionality, [please inform us here](https://github.com/FerretDB/FerretDB/issues/new?assignees=ferretdb-bot&labels=code%2Fbug%2Cnot+ready&projects=&template=bug.yml).
Expand Up @@ -41,10 +41,10 @@ Use ❌ for commands and arguments that are not implemented at all.
| | `min` | ⚠️ | Ignored |
| | `returnKey` || Unimplemented |
| | `showRecordId` || |
| | `tailable` | | [Issue](https://github.com/FerretDB/FerretDB/issues/2283) |
| | `oplogReplay` | | Unimplemented |
| | `noCursorTimeout` || Unimplemented |
| | `awaitData` | | [Issue](https://github.com/FerretDB/FerretDB/issues/2283) |
| | `tailable` | | |
| | `oplogReplay` | ⚠️ | Ignored |
| | `noCursorTimeout` || [Issue](https://github.com/FerretDB/FerretDB/issues/4035) |
| | `awaitData` | | |
| | `allowPartialResults` || Unimplemented |
| | `collation` || Unimplemented |
| | `allowDiskUse` | ⚠️ | Ignored |
Expand All @@ -66,7 +66,7 @@ Use ❌ for commands and arguments that are not implemented at all.
| | `let` | ⚠️ | Unimplemented |
| `getMore` | || Basic command is fully supported |
| | `batchSize` || |
| | `maxTimeMS` | ⚠️ | [Issue](https://github.com/FerretDB/FerretDB/issues/2984) |
| | `maxTimeMS` | | |
| | `comment` | ⚠️ | Unimplemented |
| `insert` | || Basic command is fully supported |
| | `documents` || |
Expand Down Expand Up @@ -171,7 +171,7 @@ Related [issue](https://github.com/FerretDB/FerretDB/issues/78).

| Command | Argument | Status | Comments |
| -------------------------- | -------------------------------- | ------ | --------------------------------------------------------- |
| `createUser` | | | [Issue](https://github.com/FerretDB/FerretDB/issues/1491) |
| `createUser` | | | |
| | `pwd` | ⚠️ | |
| | `customData` | ⚠️ | |
| | `roles` | ⚠️ | |
Expand All @@ -181,10 +181,10 @@ Related [issue](https://github.com/FerretDB/FerretDB/issues/78).
| | `mechanisms` | ⚠️ | |
| | `digestPassword` | ⚠️ | |
| | `comment` | ⚠️ | |
| `dropAllUsersFromDatabase` | | | [Issue](https://github.com/FerretDB/FerretDB/issues/1492) |
| `dropAllUsersFromDatabase` | | | |
| | `writeConcern` | ⚠️ | |
| | `comment` | ⚠️ | |
| `dropUser` | | | [Issue](https://github.com/FerretDB/FerretDB/issues/1493) |
| `dropUser` | | | |
| | `writeConcern` | ⚠️ | |
| | `comment` | ⚠️ | |
| `grantRolesToUser` | || [Issue](https://github.com/FerretDB/FerretDB/issues/1494) |
Expand All @@ -204,7 +204,7 @@ Related [issue](https://github.com/FerretDB/FerretDB/issues/78).
| | `mechanisms` | ⚠️ | |
| | `digestPassword` | ⚠️ | |
| | `comment` | ⚠️ | |
| `usersInfo` | | | [Issue](https://github.com/FerretDB/FerretDB/issues/1497) |
| `usersInfo` | | | |
| | `showCredentials` | ⚠️ | |
| | `showCustomData` | ⚠️ | |
| | `showPrivileges` | ⚠️ | |
Expand Down Expand Up @@ -265,6 +265,12 @@ Related [issue](https://github.com/FerretDB/FerretDB/issues/78).
| | `writeConcern` | ⚠️ | |
| | `comment` | ⚠️ | |

### Replication Commands

| Command | Argument | Status | Comments |
| ----------------- | -------- | ------ | --------------------------------------------------------- |
| `replSetInitiate` | || [Issue](https://github.com/FerretDB/FerretDB/issues/3936) |

## Session Commands

Related [issue](https://github.com/FerretDB/FerretDB/issues/8).
Expand Down Expand Up @@ -562,7 +568,7 @@ Related [issue](https://github.com/FerretDB/FerretDB/issues/1917).
| | `expireAfterSeconds` | | ⚠️ | [Issue](https://github.com/FerretDB/FerretDB/issues/2415) |
| | `clusteredIndex` | | ⚠️ | |
| | `changeStreamPreAndPostImages` | | ⚠️ | |
| | `autoIndexId` | | ⚠️ | Ignored |
| | `autoIndexId` | | ⚠️ | [Issue](https://github.com/FerretDB/FerretDB/issues/3922) |
| | `size` | | ✅️ | |
| | `max` | || |
| | `storageEngine` | | ⚠️ | Ignored |
Expand Down
Expand Up @@ -5,7 +5,7 @@ slug: /telemetry/ # referenced in many places; must not change

# Telemetry reporting

FerretDB collects basic anonymous usage data and sends them to our telemetry service ([FerretDB Beacon](https://beacon.ferretdb.io)),
FerretDB collects basic anonymous usage data and sends them to our telemetry service ([FerretDB Beacon](https://beacon.ferretdb.com)),
which helps us understand its usage, and how we can further increase compatibility and enhance our product.
It also enables us to provide you information about available updates.

Expand Down
4 changes: 2 additions & 2 deletions website/versions.json
@@ -1,5 +1,5 @@
[
"v1.20",
"v1.19",
"v1.18",
"v1.17"
"v1.18"
]

0 comments on commit be98b9f

Please sign in to comment.