Compare commits

...
1210 Commits
Author SHA1 Message Date
NotAlexNoyle c645ed1adf Exclude CODEOWNERS from language statistics 2026-11-01 09:18:32 -05:00
NotAlexNoyle 87234d9f76 Add CODEOWNERS (one staff approval) 2026-11-01 09:18:32 -05:00
Alexey Palazhchenko 0d5eb3343a Prepare v2.7.0 release (#5538) 2025-11-10 21:18:24 +04:00
Alexey Palazhchenko 52ad11f0af Bump deps (#5537) 2025-11-10 20:45:21 +04:00
Alexey Palazhchenko 71b6eb3a08 Bump DocumentDB (#5536) 2025-11-09 22:46:54 +04:00
5cb62a1155 Add MCP tools (#5452)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-11-09 20:36:10 +04:00
Alexey Palazhchenko 867537dd01 Use Go 1.25.4 (#5534) 2025-11-08 09:35:59 +04:00
487880fd19 Add basic MCP server (#5279)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-11-06 09:08:44 +04:00
Chi FujiiandAlexey Palazhchenko 3b29cece0c Refactor DataAPI with graceful shutdown and add OpenAPI specification endpoint (#5357)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-10-27 18:55:12 +04:00
Alexey Palazhchenko c1bb0b6db6 Update DocumentDB (#5528) 2025-10-22 18:46:58 +04:00
Alexey Palazhchenko a04b20a58f Use forked lazyerrors (#5527) 2025-10-22 16:13:02 +04:00
Josh Soref 2b2ce550d4 Fix CODEOWNERS grammar (#5495)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-10-21 12:51:38 +04:00
Alexey Palazhchenko 87293d3434 Skip flaky test for now (#5526) 2025-10-21 12:50:19 +04:00
Alexey Palazhchenko 7b0d200262 Use Go 1.25.3 (#5525) 2025-10-21 11:43:35 +04:00
Patryk KwiatekandAlexey Palazhchenko d1d037a030 Add a test for *documentdb.Conn finalizing (#5484)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-10-21 11:28:03 +04:00
Alexey Palazhchenko c37a62b0a2 Bump dependencies (#5519) 2025-10-09 17:57:31 +04:00
Alexey Palazhchenko cff1577d19 Improve proxy mode observability (#5440) 2025-10-03 19:53:25 +04:00
Alexey Palazhchenko efa50d4877 Add tracing of SQL queries (#5514) 2025-10-02 21:02:46 +04:00
Alexey Palazhchenko 067eb2f143 Rename OpenTelemetry spans (#5512) 2025-09-29 14:58:13 +04:00
Alexey Palazhchenko 4e8e51751d Minor observability cleanup (#5511) 2025-09-28 22:32:36 +03:00
Alexey Palazhchenko ae0b94de12 Bump deps (#5509) 2025-09-28 20:56:00 +03:00
Alexey Palazhchenko 2c24483c06 Use Go 1.25.1 (#5508) 2025-09-28 15:48:00 +03:00
Josh Soref 221d5cbd08 Fix spelling in .go files (#5492)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-09-08 10:33:12 +09:00
Alexey Palazhchenko 62ce1019b1 Simplify licensing 2025-09-07 12:08:29 +04:00
Josh Soref ef9934e3ed Replace malicious container registry references with ghcr (#5486) 2025-09-03 20:05:21 +04:00
Alexey Palazhchenko e78eaffb58 Finalize PostgreSQL metrics (#5485) 2025-09-03 15:25:44 +04:00
Chi FujiiandAlexey Palazhchenko 370b1586c5 Add PostgreSQL metrics (#5427)
Closes #5402.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-09-02 14:50:16 +04:00
Alexander Tobi FashakinandCopilot 1f8d160296 Update cloud installation docs (#5466)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-01 19:52:16 +04:00
3656ebd1c4 Use generated structs in Data API (#5382)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-09-01 13:24:21 +04:00
Patryk KwiatekandAlexey Palazhchenko e3a7406b9e Update wire dependency (#5465)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-09-01 12:48:10 +04:00
Alexey Palazhchenko 4847e59e25 Update dependencies (#5479) 2025-09-01 11:55:26 +04:00
Alexey Palazhchenko b6fa806add Move to documentdb/documentdb (#5468) 2025-08-27 12:35:57 +04:00
Chi FujiiandAlexey Palazhchenko 5394f00550 Avoid hijacking connections from the pool and immediately closing them (#5443)
Closes #5402.
Closes FerretDB/FerretDB-DocumentDB#270.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-08-27 11:37:26 +04:00
Alexey Palazhchenko 9a48b7132c Add helpers for lazy logging (#5467) 2025-08-27 10:26:35 +04:00
Alexey Palazhchenko 4cea93524d Fix FerretDB Cloud link 🤦 2025-08-26 19:38:39 +04:00
Alexey Palazhchenko 3cd4554d87 Add Cease and Desist Notice (#5462) 2025-08-25 18:50:08 +04:00
Alexey Palazhchenko 2e6ca25078 Add FerretDB Cloud blog post (#5461) 2025-08-25 17:04:31 +04:00
Alexey Palazhchenko 901a8f6030 Add MongoDB's complaint (#5460) 2025-08-25 12:45:03 +04:00
Alexey Palazhchenko b1feb6377d Add documentation page stub for MCP server (#5451) 2025-08-22 07:49:36 +00:00
Alexey Palazhchenko 3fd8c982a5 Bump deps (#5455) 2025-08-22 11:32:52 +04:00
Alexander Tobi FashakinandCopilot c05de8bdea Document cloud instance deployment and setup (#5424)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-21 20:15:06 +04:00
Alexey Palazhchenko d97f2612b8 Add TODO comment about Debian 13 Trixie (#5450)
Refs FerretDB/FerretDB#5449.
2025-08-21 13:42:59 +04:00
Alexey Palazhchenko 6d8e86b774 Remove flaky test (#5444) 2025-08-20 12:17:35 +04:00
Alexander Tobi Fashakin 7a117e768d Update compatible apps (#5442) 2025-08-20 05:51:21 +00:00
Alexander Tobi FashakinandCopilot bfd1650ee2 Update content guide (#5441)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-19 19:09:52 +04:00
Alexey Palazhchenko d9a14c883e Add comments to supervisord config (#5430) 2025-08-19 14:07:17 +04:00
Alexey Palazhchenko 2b652dae20 Use middleware (#5377) 2025-08-19 13:57:06 +04:00
Alexey Palazhchenko 6631594402 Add middleware (#5437) 2025-08-19 07:38:31 +04:00
c5f69fe962 Add blog post on Formio (#5395)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-08-18 22:39:46 +04:00
Alexey Palazhchenko a65042d381 Update expected PostgreSQL version (#5438) 2025-08-18 20:12:33 +04:00
Alexey Palazhchenko 24981ad991 Tweak conninfo (#5435) 2025-08-18 12:23:23 +04:00
Alexey Palazhchenko 2078f859f3 Make Run wait for all Handle calls to finish (#5434) 2025-08-18 11:52:42 +04:00
Chi FujiiandAlexey Palazhchenko 16670ff34f Upload YugabyteDB log files (#5401)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-08-18 09:27:56 +04:00
Alexey Palazhchenko b994d18792 Update DocumentDB (#5431) 2025-08-14 19:21:04 +04:00
Alexey Palazhchenko 4ea90be4aa Use QEMU on arm64 for Yugabyte for now (#5429) 2025-08-14 12:32:49 +04:00
3770c1e4eb Add release blog post for FerretDB v2.5.0 (#5412)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-08-14 12:06:53 +04:00
Chi Fujii 5fd75c160a Bump YugabyteDB to stable version (#5428) 2025-08-14 10:55:16 +04:00
Alexey Palazhchenko c60131a69c Update documentation to point to the next release (#5423) 2025-08-14 10:54:45 +04:00
Alexey Palazhchenko b4eda04f37 Prepare v2.5.0 release (#5414) 2025-08-12 15:06:25 +04:00
Alexey Palazhchenko 6e2d3affd9 Update DocumentDB (#5411) 2025-08-12 10:25:34 +04:00
Alexey Palazhchenko 2cbf8cac53 Update Prometheus metrics (#5403) 2025-08-11 19:51:18 +04:00
Patryk Kwiatek b933b1f365 Test flaky tests detection (#5393) 2025-08-06 14:12:10 +04:00
Alexey Palazhchenko 96d34a4615 Enable MongoDB test commands (#5400) 2025-08-04 11:17:26 +04:00
Alexey Palazhchenko 1a5a6ec3c3 Update DocumentDB (#5398) 2025-08-01 18:29:12 +04:00
Chi Fujii 997c02f379 Run all YugabyteDB integration tests (#5283) 2025-08-01 14:31:33 +04:00
Alexey Palazhchenko 2412bf3595 Make a resource.Untrack thread-safe (#5396) 2025-08-01 12:10:01 +04:00
Alexey Palazhchenko 20697b6b74 Small tweaks (#5394) 2025-07-31 09:53:28 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko cb18c69dcc Add WeKan blog post (#5381)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-30 19:32:21 +04:00
Alexey Palazhchenko e99a07db05 Bump DocumentDB version (#5392) 2025-07-30 19:13:25 +04:00
Chi FujiiandAlexey Palazhchenko b1189f2594 Add YugabyteDB integration tests (#5274)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-30 16:53:31 +04:00
Alexey Palazhchenko 783d39086c Encapsulate PostgreSQL pool in the Handler (#5389) 2025-07-30 11:28:47 +04:00
Alexey Palazhchenko c87f9e3c18 Small cleanup (#5388) 2025-07-30 11:02:43 +04:00
Patryk Kwiatek e5615b35ca Use Codecov for flaky integration tests detection (#5361) 2025-07-30 05:51:39 +00:00
Alexey PalazhchenkoandCopilot 327a8fb759 Extract wiring into a separate package (#5383)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-30 09:23:06 +04:00
Alexander Tobi Fashakin 319128c43f Enable full visibility for images on zoom (#5346) 2025-07-28 20:21:27 +04:00
Alexey Palazhchenko bccd6276dd Update DocumentDB (#5380) 2025-07-28 12:17:48 +04:00
Alexey Palazhchenko 1b5913f2bf Simplify flags handling (#5378) 2025-07-28 09:16:48 +04:00
Chi Fujii 66f9bc149d Make accessing YugabyteDB logs easier (#5362)
Closes #85.
2025-07-25 08:12:33 +00:00
Chi Fujii f06bf851a9 Skip YugabyteDB setup for arm64 (#5372)
Closes #85.
2025-07-25 07:06:06 +00:00
Alexey Palazhchenko c891abbdf6 Refactor normal and error responses (#5326) 2025-07-24 19:24:29 +04:00
Alexey PalazhchenkoandChi Fujii f65c7b643a Tweak Ollama and MCPHost setup (#5375)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-07-24 09:06:14 +04:00
Alexander Tobi Fashakin bc0e9128e3 Add Vault blog post (#5368)
Closes #5152.
2025-07-23 19:44:59 +04:00
Patryk Kwiatek e1ea96acf4 Add components in codecov (#5364) 2025-07-23 11:06:56 +04:00
Alexey Palazhchenko f64490cf94 Update DocumentDB (#5353) 2025-07-17 12:14:08 +04:00
Alexander Tobi Fashakin 5a05644fed Add release blogpost for 2.4.0 (#5354) 2025-07-16 19:56:04 +04:00
Alexey Palazhchenko 9a45f6bc26 Prepare v2.4.0 release (#5344) 2025-07-16 11:31:22 +04:00
d9d3a9f8dd Add HyperDX blog post (#5334)
Closes #5226.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-15 20:19:07 +04:00
Alexey Palazhchenko 91feb6e54a Update DocumentDB (#5342) 2025-07-15 17:13:59 +04:00
Alexander Tobi Fashakin fc1ec1ad61 Add compatible applications (#5335) 2025-07-10 08:06:09 +00:00
Chi Fujii b1afd1f15a Add YugabyteDB to local setup (#5258)
Closes #85.
2025-07-09 09:44:12 +00:00
Alexey PalazhchenkoandCopilot 746c84a0d6 Split command handling and handlers (#5328)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-09 11:05:44 +04:00
2936407d35 Add DBeaver compatibility blogpost (#5321)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-08 20:06:47 +04:00
Alexey Palazhchenko 07449f2391 Avoid extra marshaling (#5327) 2025-07-08 19:28:47 +04:00
Chi FujiiandAlexey Palazhchenko c62a0ec6ba Allow users to perform user management commands (#5314)
Closes #85.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-08 09:11:38 +04:00
Alexander Tobi Fashakin 9ae0a666e9 Add GrowthBook to compatible apps (#5319) 2025-07-04 08:10:04 +00:00
Chi Fujii 13b36b44ef Update TODO URL for dropUsers test (#5324) 2025-07-04 11:59:07 +04:00
Alexey Palazhchenko 1916b89173 Remove must.NotFail(wire[bson].NewXXX( pattern (#5318) 2025-07-04 08:49:53 +09:00
d558f38ee8 Add Heyform compatibility blog post (#5316)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-03 18:39:38 +04:00
Alexey Palazhchenko 7eacf8cefc Refactor responses handling (#5310) 2025-07-03 14:57:18 +04:00
Chi Fujii d6245127ac Update TODO URLs (#5317) 2025-07-02 09:43:56 +04:00
Alexey Palazhchenko f23e436f39 Do not use deprecated method (#5312) 2025-07-01 19:57:09 +04:00
Alexey Palazhchenko a630f68a9f Refactor requests handling (#5292) 2025-06-30 13:22:54 +04:00
Alexey Palazhchenko 7f7072c83a Bump deps (#5307) 2025-06-29 16:25:31 +02:00
Alexander Tobi Fashakin f248bb1356 Add Growthbook blogpost (#5304) 2025-06-27 17:57:33 +02:00
Alexey Palazhchenko b4bd17b678 Minor refactoring of Data API (#5302) 2025-06-27 11:23:57 +02:00
Alexey PalazhchenkoandCopilot 2f974ee36e Extend middleware requests and responses (#5301)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-27 08:47:14 +02:00
Chi Fujii cec3175583 Cleanup NodeBB blog post (#5294) 2025-06-26 10:53:19 +00:00
Alexey Palazhchenko 969cf59ef3 Add Dependabot configuration for mcphost (#5296) 2025-06-26 11:02:38 +02:00
Chi Fujii 169e5d3800 Bring back Codecov and Coveralls integration (#5276) 2025-06-26 09:57:18 +02:00
Chi Fujii 1618cf7b19 Add mcphost as tool (#5287) 2025-06-26 09:56:31 +02:00
Alexander Tobi Fashakin 0d84f2c324 Add NodeBB to compatible apps (#5293) 2025-06-25 16:52:11 +02:00
Alexander Tobi Fashakin 871f60d169 Add NodeBB compatibility blog post (#5285) 2025-06-25 14:39:00 +02:00
Alexander Tobi Fashakin e66693f38b Add Librechat to compatibility section (#5286) 2025-06-25 09:30:36 +02:00
Alexander Tobi Fashakin 30bdf62714 Add blog post on setting up LibreChat with FerretDB (#4999) 2025-06-23 16:42:37 +02:00
Alexander Tobi Fashakin c4b9de7f45 Add PayloadCMS to compatible apps (#5270) 2025-06-23 12:22:54 +00:00
Alexey Palazhchenko 211b1348a5 Update DocumentDB (#5282) 2025-06-20 16:38:45 +04:00
Alexey Palazhchenko eb59f61d73 Wrap long lines in a blog post (#5280) 2025-06-20 13:44:29 +04:00
Alexander Tobi Fashakin d539b13641 Add Compass to compatible apps (#5275) 2025-06-19 12:29:17 +04:00
Alexander Tobi Fashakin 117d335fa3 Add blog post on using Compass GUI (#5263) 2025-06-18 19:43:51 +04:00
Alexey Palazhchenko 0dc0844eb3 Use debug-level log messages for continuations (#5266)
Closes #5265.
2025-06-17 13:35:06 +00:00
Alexey Palazhchenko c58bcdb8e8 Remove skipping of bypassEmptyTsReplacement (#5267) 2025-06-17 11:19:38 +00:00
Alexander Tobi Fashakin c765a2fb06 Add blog post for Payload CMS (#5257) 2025-06-17 10:20:03 +04:00
Alexey Palazhchenko 89eb76043c Update DocumentDB (#5268) 2025-06-16 17:35:10 +04:00
Alexander Tobi Fashakin 84f3b9cf7c Fix social links (#5264) 2025-06-16 07:05:48 +00:00
Alexey Palazhchenko 51335dc57f Update DocumentDB (#5261) 2025-06-16 10:21:56 +04:00
Alexey Palazhchenko 0ad2ad90fa Revert "Remove hack for bypassEmptyTsReplacement (#5217)" (#5256) 2025-06-12 17:03:53 +04:00
Alexey Palazhchenko a3132614c4 Prepare v2.3.0 release (#5254) 2025-06-11 15:33:19 +04:00
Alexey Palazhchenko 761df3603b Improve telemetry settings for embedded package (#5252) 2025-06-11 14:52:45 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 6adbbf8847 Create compatible apps section (#5108)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-06-11 14:39:27 +04:00
Alexey Palazhchenko e089a11124 Remove hack for bypassEmptyTsReplacement (#5217) 2025-06-11 13:35:30 +04:00
Alexey Palazhchenko 14f728e94c Build production Docker images for PRs (#5251) 2025-06-11 12:57:58 +04:00
Alexey Palazhchenko 7a8bb089ad Use DocumentDB's compat command (#5242) 2025-06-11 12:38:00 +04:00
Alexey Palazhchenko b16ee73b52 Update DocumentDB (#5240) 2025-06-10 11:40:22 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 416c6384fa Add blog post for Novu compatibility (#5195)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-06-06 16:50:20 +04:00
Alexey Palazhchenko a6c9a8e731 Bump Go and deps (#5236) 2025-06-06 12:44:50 +04:00
Alexey Palazhchenko 74448bee91 Update TODO comments (#5223) 2025-06-05 22:42:55 +04:00
Alexander Tobi Fashakin 7fdf7b333a Add blog post on Mongo Express compatibility (#5194) 2025-06-04 21:03:38 +04:00
Alexey Palazhchenko e10e211fb7 Small documentation tweaks (#5218) 2025-06-04 15:39:34 +04:00
Alexey Palazhchenko 1c8b3650a3 Use Ollama in local setup (#5215) 2025-06-04 12:13:49 +04:00
Alexey Palazhchenko 41a3a30976 Update CTS tool to wrap long lines (#5202) 2025-06-04 05:45:38 +00:00
Alexey Palazhchenko 6a3bb8b22d Disable Markdownlint rule that clashes with MDX (#5210) 2025-06-04 09:35:42 +04:00
Alexey Palazhchenko 04255c2385 Unskip test (#5211) 2025-06-04 09:59:09 +09:00
Alexey Palazhchenko 77d1db5833 Refactor resource tracking tests (#5208) 2025-06-03 15:15:37 +02:00
Alexey Palazhchenko 6231d4efe7 Add test for inserting zero timestamp (#5199) 2025-05-30 10:10:29 +09:00
Alexey Palazhchenko f68073e012 Update DocumentDB (#5201) 2025-05-29 16:55:21 +04:00
Alexey Palazhchenko 92e1c5de00 Update DocumentDB (#5197) 2025-05-28 20:27:57 +04:00
Alexey Palazhchenko 7add88cda3 Do not format MDX as Markdown (#5186) 2025-05-27 20:00:56 +04:00
Alexey Palazhchenko 639484df81 Add permissions to GitHub Actions workflows (#5182) 2025-05-27 08:25:20 +04:00
Alexander Tobi Fashakin a6364fc036 Improve insert operations in guides (#5131)
Closes #5130.
2025-05-26 23:20:31 +04:00
Alexey Palazhchenko a313e974ff Add Dependabot configuration for main-v1 (#5098) 2025-05-26 21:36:07 +04:00
Alexey Palazhchenko 21aeda399f Bump deps (#5170) 2025-05-26 21:12:50 +04:00
Alexey Palazhchenko cb89e5e021 Revert "Update CODEOWNERS" (#5169) 2025-05-26 13:25:39 +04:00
Chi Fujii 2095a33886 Make conninfo a resource (#5166)
Closes #5048.
2025-05-26 08:39:14 +09:00
Balou9 7222581d61 Enable onInlineAuthors in blog settings (#5079)
Closes #4587.
2025-05-23 09:04:30 +09:00
Şahin AKYOL 968d8e5600 Use runtime.Cleanup for resource tracking (#5077)
Closes #5047.
2025-05-22 06:15:36 +00:00
YiandAlexey Palazhchenko a2369501ef Add enableTelemetry config for embedded FerretDB (#5109)
Signed-off-by: jyz0309 <45495947@qq.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-05-22 11:37:33 +09:00
Chi Fujii 0858ca0c3b Bump deps (#5159) 2025-05-21 14:57:44 +02:00
Alexander Tobi Fashakin 14feeaaf71 Update tags for next release (#5157) 2025-05-14 17:07:11 +02:00
Alexander Tobi Fashakin 5a94d0f11c Update docker tags in docs (#5156) 2025-05-14 12:31:13 +00:00
Alexey Palazhchenko 4757a853ce Update CODEOWNERS 2025-05-14 16:17:54 +04:00
Alexey Palazhchenko 21fa2fa078 Update versions to point to the next release (#5144) 2025-05-11 15:52:00 +04:00
Alexander Tobi Fashakin 7a4dbf27fd Publish FerretDB v2.2.0 release blog post (#5136) 2025-05-09 22:50:37 +04:00
Alexey Palazhchenko d2d96a7c5e Prepare v2.2.0 release (#5138) 2025-05-09 22:03:55 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko bef234172f Document update of FerretDB image (#5124)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-05-09 17:27:03 +00:00
Alexander Tobi Fashakin 3329903a8f Document Data API usage (#5063)
Closes #4734.
2025-05-09 15:30:17 +00:00
Alexey Palazhchenko 2235b122f5 Update DocumentDB (#5142) 2025-05-09 19:20:02 +04:00
Alexey Palazhchenko 66d2226c83 Update DocumentDB (#5141) 2025-05-09 16:16:07 +04:00
Alexey Palazhchenko 3ccbcf0a8b Remove old TODOs (#5132)
Closes #4726.
2025-05-07 12:42:48 +00:00
Alexey Palazhchenko cc6805ee14 Add full arm64 support (#5113)
Closes #4726.
2025-05-07 16:23:58 +04:00
Patryk KwiatekandAlexey Palazhchenko e1c72fc798 Hook CTS into CI (#5120)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-05-06 16:24:52 +04:00
Patryk Kwiatek f972bbec4a Run CTS tests against Vector Search guide examples (#5122) 2025-05-05 20:54:39 +04:00
Patryk Kwiatek bcd9bbcd10 Run CTS tests against Full Text Search guide examples (#5121) 2025-05-05 17:05:01 +04:00
Patryk Kwiatek eb09b681f0 Run CTS tests against TTL Indexes guide examples (#5123) 2025-05-05 12:37:11 +04:00
Chi Fujii 3bee9cdae9 Decode dropIndexes response (#5117)
Closes #5116.
2025-05-02 14:28:00 +04:00
Vartan Babayan 2396a6caf1 Rename binaries and packages (#5078) 2025-05-01 12:27:04 +00:00
Alexey Palazhchenko b42906983a Update DocumentDB (#5115) 2025-05-01 08:18:14 +04:00
Patryk Kwiatek e1a0d1c6fc Reorgonize cts output files (#5082) 2025-04-25 11:24:20 +00:00
Chi Fujii 383cdf9dac Cleanup evaluation docker image (#5076)
Closes #4976.
2025-04-25 15:14:11 +04:00
Alexey Palazhchenko 908651fc64 Document required features (#5086) 2025-04-25 06:39:42 +04:00
Chi Fujii 8ceec7963e Use volume for state directory (#5083)
Closes #4976.
2025-04-24 16:06:26 +04:00
Alexey Palazhchenko a48f8344be Fix Docker tags for pre-release git tags (#5099) 2025-04-24 12:47:07 +02:00
Alexey Palazhchenko cb364f9c3b Use new wire helpers (#5094) 2025-04-24 00:29:23 +00:00
Alexey Palazhchenko e2f6cf9cf4 Update DocumentDB (#5096) 2025-04-23 16:59:20 +04:00
Alexey Palazhchenko c6a392e062 Revert "Use new wire helpers (#5056)"
This reverts commit 206acd429f.
2025-04-23 10:50:13 +04:00
Alexey Palazhchenko 206acd429f Use new wire helpers (#5056) 2025-04-22 16:11:32 +04:00
Alexey Palazhchenko fb60e03502 Skip bypassEmptyTsReplacement parameters for now (#5080) 2025-04-22 16:10:01 +04:00
Chi Fujii ba5729d60b Unexport handlers (#5084)
Closes #5046.
2025-04-22 12:17:56 +02:00
Chi Fujii c609724261 Use Handle function in clientconn (#5070)
Closes #5046.
2025-04-21 11:14:04 +00:00
Patryk Kwiatek accf86b4df Unconvert syntax examples in documentation (#5072) 2025-04-21 08:36:56 +00:00
Chi Fujii d70dba9c91 Use Handle function in Data API (#5069)
Closes #5046.
2025-04-21 07:20:59 +00:00
Chi Fujii da64b62c31 Define docker tags for ferretdb-eval image (#5068)
Closes #4976.
2025-04-21 10:53:51 +04:00
Chi Fujii 9a79f7e1f4 Implement handler Handle function (#5055)
Closes #5046.
2025-04-17 23:49:52 +00:00
Alexey Palazhchenko 3b8b13f322 Update DocumentDB (#5074) 2025-04-17 18:27:45 +04:00
Chi Fujii 38e619706e Create ferretdb-eval docker image with production build (#5051)
Closes #4976.
2025-04-17 13:30:44 +00:00
Chi Fujii 4ae2259179 Fix docker health check on evaluation image (#5067)
Closes #4976.
2025-04-17 11:21:08 +00:00
Alexander Tobi Fashakin 1739460adc Backport .deb installation guide (#5066) 2025-04-17 12:29:29 +04:00
Alexander Tobi Fashakin 75bc1130b4 Update DocumentDB debian packages (#4959)
Closes #4954.
2025-04-16 20:06:51 +04:00
Alexander Tobi Fashakin 3cad4c3236 Add blog post on migrating to FerretDB with dsync (#5033) 2025-04-16 19:40:24 +04:00
Alexey Palazhchenko 5baca45a6d Update OpenAPI spec description (#5062) 2025-04-16 15:31:24 +00:00
Alexey Palazhchenko a60bba2c20 Rename and move code files in guides (#5057) 2025-04-16 15:20:21 +00:00
Alexey Palazhchenko 0e8fa61a69 Update redirects (#5060) 2025-04-16 17:19:21 +04:00
Patryk Kwiatek 9f7d281d23 Hook CTS tool into documentation building (#4990) 2025-04-16 11:14:56 +00:00
Chi Fujii 459a9fd904 Supervise services in evaluation image (#5041)
Closes #4976.
2025-04-16 15:02:56 +04:00
Alexander Tobi Fashakin 4829440254 Backport Kubernetes docs to 2.1 (#5053) 2025-04-15 23:52:38 +00:00
Alexey Palazhchenko f64f75a60f Update DocumentDB (#5054) 2025-04-15 22:35:29 +04:00
55ddc4bbd4 Remove MongoDB driver v1 (#4961)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2025-04-14 16:18:21 +00:00
Chi Fujii 7b5830d298 Rename evaluation image to eval-dev (#5040) 2025-04-14 11:06:04 +00:00
a549d79a4d Add Kubernetes installation guide (#4971)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-04-11 20:53:30 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 878728bdae Add blog post on FerretDB and CNPG (#4998)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-04-11 20:25:37 +04:00
Alexey Palazhchenko 503e59c531 Use "PostgreSQL with DocumentDB extension" phrase (#5050) 2025-04-11 19:19:26 +04:00
Alexey Palazhchenko d4e0978b3f Update DocumentDB (#5045) 2025-04-11 15:49:34 +04:00
Alexey Palazhchenko da2006bef6 Update wire (#5042) 2025-04-11 07:04:34 +00:00
Alexey Palazhchenko 1bf9d907a0 Make proxy handler implement an interface (#5036) 2025-04-10 08:12:19 +00:00
Alexey Palazhchenko a2499f6b66 Bump deps (#5027) 2025-04-09 18:52:20 +00:00
Alexey Palazhchenko bbab5c4b6f Move findAndModify integration tests (#5037) 2025-04-09 17:23:37 +00:00
Alexey Palazhchenko 1941560800 Merge Msg and Query into a single type (#5032) 2025-04-08 09:41:02 +04:00
Alexey Palazhchenko fb76e21b64 Minor tweaks for proxy code (#5025) 2025-04-08 09:05:56 +04:00
Alexey Palazhchenko 526554e081 Update deps (#5024) 2025-04-08 09:05:39 +04:00
Alexey Palazhchenko fe980d0bcd Move tests for sessions (#5026) 2025-04-08 09:05:16 +04:00
Alexey Palazhchenko d6757ee63a Update DocumentDB (#5020) 2025-04-07 11:36:11 +04:00
Alexey Palazhchenko 29556167bc Do not send zero values to telemetry (#5016) 2025-04-07 09:49:54 +04:00
Alexey Palazhchenko a89ba41c53 Update Docker images (#5015) 2025-04-04 14:11:51 +04:00
Alexander Tobi Fashakin ffe987aa75 Add blogpost on FerretDB v2.1.0 release (#5004) 2025-04-03 22:12:41 +04:00
Alexey Palazhchenko 05ed2b952c Prepare v2.1.0 release (#5013) 2025-04-03 19:34:04 +04:00
Alexey Palazhchenko 1187aac976 Update changelog generator (#4810) 2025-04-03 18:53:51 +04:00
Alexey Palazhchenko 1630cbd4a2 Disable commit check for now (#5012) 2025-04-03 14:11:34 +04:00
Alexey Palazhchenko d95475ba57 Create redirects for /v2.0/ documentation URLs (#5011) 2025-04-03 13:21:22 +04:00
Alexey Palazhchenko f78160a69d Remove error middleware for now (#5008)
Closes #4965.
2025-04-03 08:44:01 +04:00
Alexey Palazhchenko 5f890da6ac Use Go 1.24.2 (#5005) 2025-04-02 17:11:16 +04:00
Alexey Palazhchenko 6f86e9098d Partially revert middleware changes (#4995) 2025-04-02 11:42:06 +04:00
Alexey Palazhchenko b962266a1a Fix version detection for embeddable package (#4936)
Closes #4889.
2025-04-01 18:18:46 +04:00
Alexey Palazhchenko 3ff4172ee9 Add more tests for error handling (#4996) 2025-04-01 07:18:35 +04:00
Alexander Tobi Fashakin 869b4cf727 Update feature blog post (#4991) 2025-03-27 21:41:15 +04:00
Alexey Palazhchenko b1277aea38 Add basic documentation for supported commands (#4970) 2025-03-27 21:38:16 +04:00
a520043a58 Add post on MongoDB queries and operations on FerretDB (#4732)
Closes FerretDB/engineering#235.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-03-27 21:20:48 +04:00
Alexey Palazhchenko f320ffb026 Do not decode incoming document twice (#4981) 2025-03-27 17:54:26 +04:00
Alexey Palazhchenko c3a8118d86 Add TODOs (#4986) 2025-03-27 11:22:06 +04:00
Alexey Palazhchenko 2c0cadf502 Update DocumentDB (#4982) 2025-03-26 13:16:12 +04:00
Alexey Palazhchenko 09eddc89b2 Disable tracing in benchmarks for now (#4980)
Closes #4934.
2025-03-26 11:14:00 +04:00
Alexey Palazhchenko f501409464 Update DocumentDB (#4975) 2025-03-25 13:58:00 +04:00
Alexey PalazhchenkoandChi Fujii 5d7626b627 Update DocumentDB (#4941)
Closes #4966.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-03-25 12:26:56 +04:00
Alexey Palazhchenko 077b782f31 Use ERROR level logging for failed tests (#4974) 2025-03-25 10:58:50 +04:00
Chi Fujii 82604f8b51 Implement error middleware (#4951)
Closes #1997.
2025-03-24 23:39:25 +04:00
Alexey Palazhchenko 9c1ce6280e Backport documentation changes to v2.0 (#4952) 2025-03-21 16:42:53 +04:00
Alexander Tobi Fashakin 4d0e2eb47f Update deb and rpm installation docs (#4927) 2025-03-21 10:35:32 +00:00
krishna sindhur a3cba3361d Add support for reading PostgreSQL URL from a file (#4937)
Closes #4877.
2025-03-21 10:00:49 +00:00
Alexey Palazhchenko fc64cd0de5 Update/backport full-text and TTL indexes guides (#4948) 2025-03-21 01:03:48 +00:00
Chi Fujii 6e03fb1b0a Handle OP_QUERY in middleware using interface (#4947)
Closes #1997.
2025-03-20 23:39:50 +04:00
Alexey Palazhchenko d89cfc980f Add a note to documentation about PR titles (#4944) 2025-03-20 00:18:22 +00:00
Alexander Tobi Fashakin b444c5a778 Add TTL index guide (#4926) 2025-03-19 19:06:17 +04:00
Alexey Palazhchenko df3c5d52ce Improve integration benchmarks (#4925) 2025-03-18 21:15:22 +04:00
Alexey PalazhchenkoandChi Fujii fa3d68f682 Change the way OP_MSG handlers are invoked (#4923)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-03-18 21:12:32 +04:00
Alexey Palazhchenko 150ecb8186 Sync flags grouping with docs (#4933)
Closes #4746.
2025-03-18 15:11:00 +04:00
krishna sindhur 96bb7392cd refactored: help command flags into groups (#4918) 2025-03-17 17:01:23 +04:00
Alexey Palazhchenko 2809469f2a Configure connection pool size in tests (#4932) 2025-03-17 10:50:04 +04:00
Alexander Tobi Fashakin 9a706578a2 Add guide for Compass as a compatible app (#4906) 2025-03-14 19:54:09 +04:00
Patryk Kwiatek e814886570 Add colorized levels to console logger (#4904) 2025-03-14 00:17:17 +00:00
Chi Fujii 1b78786599 Move message processing in clientconn to a function (#4919)
Closes #1997.
2025-03-14 00:07:38 +00:00
Alexander Tobi Fashakin f0bcec5e09 Add full text search guide (#4886) 2025-03-13 23:03:52 +04:00
Alexey Palazhchenko b2816b362f Add basic structure for middlewares (#4908) 2025-03-13 12:22:00 +04:00
Alexey Palazhchenko 553741c8ed Bump deps (#4916) 2025-03-13 12:21:23 +04:00
Chi Fujii ec52fef14b Refactor clientconn (#4907)
Closes #1997.
2025-03-12 19:46:42 +04:00
Alexey Palazhchenko 125e16c240 Make production builds of the main branch (#4911) 2025-03-12 05:43:23 +04:00
Alexey Palazhchenko fd460f08fe Add TODO comments for observability tasks (#4896) 2025-03-10 16:15:55 +04:00
Alexey Palazhchenko c1e0a595ba Add example telemetry report to documentation (#4861)
Closes #4721.
2025-03-08 11:35:15 +00:00
Chi Fujii a5eb60bdb4 Check issue URLs in documentation (#4890)
Closes #4715.
2025-03-07 12:20:54 +01:00
Patryk Kwiatek 27b210bbda Update TODO URLs for listDatabase tests (#4863)
Closes #4722.
2025-03-07 14:49:54 +04:00
Patryk Kwiatek c7ee74e83c Document non-enforced format of log messages in envtool package (#4867) 2025-03-07 10:51:59 +04:00
Alexey Palazhchenko ebd085685f Start working on a new release (#4885) 2025-03-06 22:32:57 +04:00
Alexey Palazhchenko fb4d59f6a9 Adjust pool connection timeout (#4888)
Closes #4876.
2025-03-06 10:21:18 +04:00
Alexey Palazhchenko a9c0b5bd5f Add FerretDB v2 GA blog post (#4884) 2025-03-05 19:08:29 +04:00
Alexey Palazhchenko 2214721e51 Prepare 2.0.0 GA release! (#4881) 2025-03-05 16:26:16 +04:00
Alexey Palazhchenko 84fc64c1a6 Final preparations (#4874) 2025-03-05 15:47:35 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko aad81dcf9d Add basic troubleshooting guide (#4854)
Closes #4844.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-05 14:48:21 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 2c9143eb37 Add migration guide from v1.x to v2.x (#4850)
Closes #4789.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-05 14:27:06 +04:00
Alexey Palazhchenko 077887e634 Bump Go and safe deps (#4875) 2025-03-05 10:07:54 +04:00
Chi Fujii 14e72a10b2 Skip flaky currentOp test and add TODO (#4872) 2025-03-05 09:12:01 +04:00
Alexey Palazhchenko cebdfb845e Use GitHub-hosted CI runners (#4866) 2025-03-04 21:53:11 +04:00
Alexey Palazhchenko 4051629d92 Unskip tests that refer to closed issue (#4865) 2025-03-04 20:28:24 +04:00
Alexey Palazhchenko 224ad9242b Prepare release (#4859) 2025-03-04 16:45:04 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko ae554b683f Recommend using full tags/versions (#4834)
Closes #4833.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-04 15:37:39 +04:00
Alexey Palazhchenko f32f80a771 Improve messages about DocumentDB version (#4832)
Closes #4724.
2025-03-04 15:08:06 +04:00
Chi FujiiandAlexey Palazhchenko 942ee8d3b4 Implement currentOp command (#4855)
Closes #4794.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-04 14:31:42 +04:00
Chi FujiiandAlexey Palazhchenko 5a144ed783 Remove DocumentDB building from this repo (#4852)
Closes #4725.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-04 13:25:25 +04:00
Alexey PalazhchenkoandPatryk Kwiatek 64ff290f79 Use new DocumentDB API for listDatabases (#4841)
Closes #4722.

Co-authored-by: Patryk Kwiatek <patryk.kwiatek@ferretdb.io>
2025-03-04 12:45:08 +04:00
Alexey PalazhchenkoandChi Fujii ee32bc86ed Remove old code for tracking operations (#4842)
Closes #4794.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-03-04 12:43:15 +04:00
Chi FujiiandAlexey Palazhchenko 7773990627 Update DocumentDB Docker image (#4853)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-04 11:50:29 +04:00
Alexey Palazhchenko 0882beff7b Update URL to join Slack (#4851) 2025-03-03 15:36:24 -05:00
a0936cb7e6 Add Data API blogpost (#4739)
Closes FerretDB/engineering#237.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-02-28 20:33:37 +04:00
Alexey Palazhchenko de87a39474 Make Data API without authentication if requested (#4849) 2025-02-28 20:24:25 +04:00
Alexey Palazhchenko 044ab23b9e Filter out sensitive information from debug archive (#4836)
`cmdline` may include credentials in PostgreSQL URL, etc.

Closes #4838.
2025-02-28 11:24:31 +00:00
Alexey Palazhchenko da89bec0d3 Move comment in docs to fix DocCard (#4845) 2025-02-28 11:07:48 +00:00
Patryk Kwiatek e61766b6db Enforce log messages format for debug build and integration tests (#4754) 2025-02-28 08:09:26 +04:00
Alexey Palazhchenko 375b23c4e5 Publush build info, state, and CLI flags in expvar (#4837)
Those expvars are added to the debug archive that we could ask users to give us for debugging.

Closes #4838.
2025-02-27 13:55:48 +01:00
Alexey Palazhchenko 584dde053c Bump DocumentDB for development (#4839)
Unblocks `currentOp` implementation.

Closes #4794.
2025-02-27 13:32:46 +01:00
Alexey Palazhchenko a6806efd1d Update TODO comment (#4831) 2025-02-26 17:07:06 +04:00
Patryk KwiatekandAlexey Palazhchenko 84b3efd41c Change dbStats tests TODO links (#4823)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-02-26 09:38:28 +04:00
6267c4eb64 Add blog post for rc2 release (#4817)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-25 22:35:41 +04:00
Alexey Palazhchenko eb1ef1ed2c Prepare v2.0.0-rc.2 release (#4816) 2025-02-25 21:43:26 +04:00
Alexander Tobi Fashakin d170db2b07 Update blogs to use js instead of json5 (#4801) 2025-02-24 18:29:39 +04:00
Alexey Palazhchenko 1453898cbc Enable Docker Hub and quay.io (#4815) 2025-02-24 18:16:31 +04:00
Alexey Palazhchenko 6c958980bb Update Docker tags (#4812) 2025-02-24 17:45:54 +04:00
Alexey Palazhchenko c927df3df1 Update DocumentDB (#4811) 2025-02-24 17:19:35 +04:00
Alexey Palazhchenko 840308b6b4 Enable building FerretDB as PostgreSQL background worker (#4802) 2025-02-24 13:23:57 +04:00
Patryk Kwiatek 04de99a54d Implement dbStats command (#4804) 2025-02-24 13:20:20 +04:00
Alexey PalazhchenkoandCopilot b330166403 Fix envtool for Go 1.24 (#4809)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-24 13:07:18 +04:00
Chi FujiiandAlexey Palazhchenko 210cafb4b5 Update release checklist and .deb installation guide (#4767)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-02-24 11:40:51 +04:00
Alexey Palazhchenko e8bb57932b Make embeddable package logging configurable (#4807) 2025-02-24 09:58:54 +04:00
Alexey Palazhchenko 3a9706658a Tweak Docusaurus configuration (#4805) 2025-02-24 09:38:03 +04:00
Alexey Palazhchenko 39c4ab5552 Re-introduce embeddable package (#4778) 2025-02-21 14:26:47 +00:00
Alexey Palazhchenko e3039ac2c9 Bump Go deps (#4803) 2025-02-21 14:45:53 +04:00
Patryk Kwiatek 04c2cfb016 Add mongo slog format (#4716) 2025-02-21 06:49:35 +00:00
Alexander Tobi Fashakin ddbfc7260b Convert json5 to js responses with single quotes (#4800) 2025-02-21 05:57:20 +00:00
Alexey Palazhchenko 63c1f21a22 Add test helper (#4799) 2025-02-21 09:50:11 +04:00
Alexey Palazhchenko 174b472cbc Make handler take over the pool (#4795) 2025-02-21 09:49:52 +04:00
Alexey Palazhchenko cfe9f56456 Update Docker image tag in v1 docs (#4796) 2025-02-20 19:23:23 +04:00
Alexey Palazhchenko 6f38b9a26b Reformat request/response .js files (#4787) 2025-02-20 18:49:04 +04:00
Alexey PalazhchenkoandChi Fujii ca39e0c41f Update DocumentDB (#4788)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-02-20 11:50:17 +04:00
Alexey Palazhchenko c1f0fef933 Use directories instead of files for state and telemetry (#4784) 2025-02-19 10:05:15 +09:00
Alexey Palazhchenko 6adc30a2bc Tweak CLI for disabling interfaces (#4781) 2025-02-18 09:32:25 -05:00
Alexey Palazhchenko f812de58e1 Use Go 1.24.0 (#4775) 2025-02-17 19:20:13 +04:00
Alexey Palazhchenko d94e91b1fd Consistently use / in MongoDB URIs (#4759) 2025-02-13 02:31:10 +00:00
Alexey Palazhchenko 6bc29eb0b6 Set GOARM64 explicitly (#4760) 2025-02-13 00:34:18 +00:00
Alexey Palazhchenko 00aff27c5c Remove golang.org/x/exp/maps package (#4711) 2025-02-13 00:25:21 +00:00
Alexey Palazhchenko 524394fafb Add/update TODO comments for some issues (#4723) 2025-02-12 15:28:21 +01:00
Alexander Tobi Fashakin 04f5c06df0 Update TLS docs (#4752) 2025-02-12 06:36:44 +00:00
Alexander Tobi Fashakin 9b4720b550 Update config flags (#4740) 2025-02-12 06:27:56 +00:00
Chi Fujii e561e88d78 Implement reIndex command (#4735)
Closes #1516.
2025-02-12 10:20:14 +04:00
Tomáš Linhart a9c4b8c639 Add missing space in command (#4753) 2025-02-11 12:45:02 +04:00
Alexey Palazhchenko b085d709b5 Remove "all backends" from the issue template (#4751) 2025-02-11 00:29:03 +00:00
Alexey Palazhchenko ae1d2ccfea Add explicit platform: linux/amd64 to docs (#4749) 2025-02-10 21:17:17 +00:00
Alexander Tobi Fashakin 95eb803046 Add replication blog post (#4717) 2025-02-10 18:29:05 +04:00
Chi Fujii aac25390a7 Use wireclient for readiness probe to avoid calling endsessions on unauthenticated client (#4718)
Closes #4692.
2025-02-10 12:39:17 +00:00
Chi FujiiandAlexey Palazhchenko f569ea500b Check DocumentDB issues in checkcomments and checkdocs (#4714)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-02-10 16:29:47 +04:00
Chi Fujii 06697e2db9 Refactor and generate using genwrap tool (#4705)
Closes #4700.
2025-02-10 09:38:10 +00:00
Alexey Palazhchenko 2976b96d70 Bump deps (#4743) 2025-02-07 17:05:58 +04:00
Alexey Palazhchenko 0cf6ca0344 Do not use a global variable for logging (#4727) 2025-02-03 01:18:14 +00:00
Patryk Kwiatek 8cfa10ebc1 Introduce smoke test for Data API (#4712) 2025-02-02 07:12:19 +01:00
Chi Fujii fc7d64802e Refactor extract and convert in genwrap tool (#4703)
Closes #4700.
2025-01-29 05:58:33 +00:00
Alexey Palazhchenko adc44a2f03 Do not use Git LFS for Go files (#4713) 2025-01-29 09:50:45 +04:00
Patryk Kwiatek ff0ac6e749 Fix error mapping generation (#4691) 2025-01-29 05:42:10 +00:00
Alexey Palazhchenko bc19b5b451 Fix Dependabot config (#4708) 2025-01-28 14:49:15 +04:00
Chi Fujii dd0ab00897 Skip private issue links in checkcomments by a flag (#4695) 2025-01-28 12:39:12 +04:00
Alexey Palazhchenko 9305598b5f Disable xfail CI configuration for now (#4698) 2025-01-27 10:11:52 +04:00
Alexey Palazhchenko 279cbfd9b3 Tweak documentation 2025-01-23 21:12:41 +04:00
Alexey Palazhchenko a289181298 Fix Docker image names 2025-01-23 20:59:51 +04:00
Alexey Palazhchenko f69b9a10b5 Revert docs build changes 2025-01-23 20:45:11 +04:00
Alexey Palazhchenko 35095d7c0e Skip Docker Hub and Quay.io for now 2025-01-23 20:40:52 +04:00
Alexey Palazhchenko e7173c3d8d Add FerretDB v2 (#4689) 2025-01-23 20:29:50 +04:00
Alexey Palazhchenko 046d266506 Bump Go (#4687) 2025-01-23 12:24:28 +04:00
Alexey Palazhchenko 1966e833ec Reformat with settings from v2 (#4686) 2025-01-23 09:42:49 +04:00
Alexey Palazhchenko f80bbd84da Fix old blog post 2025-01-16 23:52:10 +04:00
Alexander Tobi Fashakin 8f32f6d406 Add blogpost for managed FerretDB on Taikun (#4658) 2025-01-16 23:24:29 +04:00
Alexey Palazhchenko a43fcb805e Update URLs for FerretDB v1 (#4677) 2025-01-16 23:08:00 +04:00
Alexey Palazhchenko c22b535047 Bump deps (#4678) 2025-01-16 18:56:39 +04:00
Alexey Palazhchenko b0f80f3584 Remove old docs and fix linking to the rest (#4654) 2024-12-12 15:01:54 +04:00
Alexander Tobi Fashakin 57000ea92e Add blog post (#4639) 2024-11-29 15:12:57 +00:00
Alexander Tobi Fashakin 0d469d04e7 Add blog post on running MongoDB workloads on pgEdge Postgres (#4620) 2024-11-18 19:23:31 +04:00
Alexey Palazhchenko dc148b6789 Add workaround for Trivy failures (#4631) 2024-11-18 18:44:36 +04:00
Alexander Tobi Fashakin dc1afc414c Add blog post on document databases vs relational databases (#4621)
Closes FerretDB/engineering#227.
2024-11-14 20:39:35 +04:00
Alexey Palazhchenko ee4899866c pngcrush images (#4623) 2024-11-14 18:59:35 +04:00
Alexey Palazhchenko e090e532e6 Update handling of all-in-one Docker images (#4608) 2024-10-09 17:05:25 +04:00
Alexey Palazhchenko 7b0c6916d8 Update definedockertag logic and use it (#4603) 2024-10-09 16:13:48 +04:00
Alexey Palazhchenko 5107906fe3 Add separate CI job for defining Docker tags (#4607) 2024-10-09 13:50:50 +04:00
Alexey Palazhchenko a4c259a974 Port tools from v2 (#4602) 2024-10-09 12:05:36 +04:00
chuangjinglu e68a82bf80 Fix stats for MySQL backend (#4598) 2024-10-02 14:21:51 +00:00
Alexey Palazhchenko 4bfcf2264d Bump Go version (#4599) 2024-10-02 14:39:22 +04:00
8532355778 Add blog post on running FerretDB with CyberTec Postgres on Kubernetes (#4583)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2024-09-30 21:43:10 +04:00
Elena Grahovac 0bafe7b4a5 Add blog post on OTel context propagation (#4512) 2024-09-19 14:49:01 +04:00
Elena GrahovacandAlexey Palazhchenko 91500bddd7 Update Mermaid diagrams (#4582)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-09-18 16:42:59 +04:00
Alexander Tobi Fashakin d1f8d4a240 Add blog post on importance of open source software (#4580) 2024-09-16 12:49:02 +04:00
Alexander Tobi Fashakin 60a0d6a982 Add blog post on deploying managed FerretDB on Elestio (#4568) 2024-09-06 12:08:41 +04:00
Alexey Palazhchenko c21661df96 Bump deps (#4564) 2024-08-29 22:00:27 +04:00
Timur Tukaev 55058fba95 Add Cozystack to README (#4563) 2024-08-29 21:46:10 +04:00
Alexander Tobi Fashakin 2207312073 Add blog post for v1.24 (#4562) 2024-08-28 21:57:50 +04:00
Alexey Palazhchenko 7d9c7b9922 Prepare v1.24.0 release (#4560) 2024-08-28 18:41:28 +04:00
4702d9d4ed Implement our own changelog generator (#4219)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
2024-08-28 17:51:58 +04:00
Alexander Tobi Fashakin 8ab955813c Add docs for new authentication (#4557)
Closes #3008.
2024-08-28 17:09:50 +04:00
Alexey Palazhchenko 788f3b9b82 Pass GITHUB_TOKEN to tools tests (#4558) 2024-08-28 16:47:37 +04:00
Chi Fujii 50345397ce Fix saslContinue completing handshake too early (#4552) 2024-08-27 12:11:46 +04:00
Chi Fujii a81ac88967 Support saslStart and saslContinue OpQuery (#4550) 2024-08-26 18:30:20 +04:00
Alexey Palazhchenko f76a8f8760 Remove wireconn tests for now (#4548) 2024-08-26 13:32:41 +00:00
Chi Fujii 06881d7cf9 Fix duplicate field on hello op query (#4549)
Closes #4065.
2024-08-26 10:52:34 +02:00
Kaiwalya Koparkar 6c5aec31dd Added Elestio as one-click deploy option (#4546)
Closes #4545.
2024-08-23 19:52:01 +04:00
Hajo Möller b446a6530f Fix Docker's HEALTHCHECK in production image (#4547) 2024-08-23 11:41:09 +04:00
Alexey Palazhchenko c1b96d56d9 Bump Docusaurus (#4544) 2024-08-21 09:54:32 +04:00
Evengard 95b184f56c Ignore apiVersion field from StableAPI (#4067)
Closes #3121.
2024-08-19 11:20:26 +04:00
Chi Fujii ba46217c0e Ignore Stable API fields (#4537)
Closes #3121.
2024-08-16 12:27:25 +00:00
Alexey Palazhchenko 8429581b88 Fix critical typo in telemetry documentation (#4536) 2024-08-15 17:03:45 +00:00
Alexey Palazhchenko 226f50f39a Fix Mergifty configuration 2024-08-15 17:41:42 +04:00
Alexey Palazhchenko 7ce5098b03 Minor cleanup (#4535) 2024-08-14 20:21:12 +04:00
Alexander Tobi Fashakin 0fcbc0ec73 Fix broken links (#4525) 2024-08-13 07:10:22 +00:00
Alexey Palazhchenko c464231115 Update changelog 2024-08-13 10:20:28 +04:00
Alexey Palazhchenko d007d62d39 Fix building with go build -trimpath (#4526) 2024-08-12 19:03:22 +04:00
Chi Fujii 6649ce8f63 Use wire and wirebson packages (#4490) 2024-08-09 11:32:22 +00:00
Alexey Palazhchenko 50630f9e21 Use Go 1.22.6 (#4523) 2024-08-09 15:22:05 +04:00
Alexander Tobi Fashakin 79b1f9606b Update missing image (#4522) 2024-08-09 15:31:51 +09:00
Chi Fujii 6fe9484cea Remove fuzzing from sjson (#4520)
Closes FerretDB/engineering#179.
2024-08-08 15:34:35 +00:00
Chi Fujii 4bf4a7fd0a Close connection upon NaN value (#4521)
Closes FerretDB/engineering#179.
2024-08-08 15:24:17 +00:00
Alexey Palazhchenko a1d8820d34 Add Taskfile target to pngcrush all new images (#4519) 2024-08-07 15:28:15 +04:00
Alexander Tobi Fashakin a8d73db001 Add blog post on building a RESTful API with Deno (#4517) 2024-08-07 13:29:22 +04:00
Alexey Palazhchenko a3ad409806 Fix CI for documentation preview (#4518) 2024-08-07 12:19:27 +04:00
Chi Fujii 1d27990d59 Convert BSON values of wirebson to types (#4501)
Closes FerretDB/engineering#179.
2024-08-06 18:33:41 +00:00
Elena Grahovac e2e16afe62 Prototype OTel context propagation (#4483)
Closes #4456.
2024-08-06 19:48:33 +04:00
Alexey Palazhchenko d9e77a86bf Document logging changes (#4510) 2024-08-02 14:54:59 +00:00
Chi Fujii efe2130968 Use wireclient package (#4502)
Closes FerretDB/engineering#182.
2024-08-01 21:33:13 +02:00
Chi Fujii 9a45a2b983 Fix log message (#4503) 2024-08-01 07:24:45 +00:00
Alexander Tobi Fashakin 4256d684a8 Enable zoom on images (#4508) 2024-07-31 14:41:55 +00:00
Patryk Kwiatek a05cafefb6 Fix checkdocs Github cache on CI (#4509) 2024-07-31 15:41:04 +04:00
Wojciech KropidlowskiandPatryk Kwiatek 9011dbeb16 Add open issues check in checkdocs (#4258)
Closes #4171.

Co-authored-by: Patryk Kwiatek <patryk.kwiatek@ferretdb.io>
2024-07-31 14:57:56 +04:00
Anton Zhiyanov 22c0906b6a Fix Terser plugin build error (#4506)
Closes #4505.
2024-07-31 09:41:47 +01:00
Chi Fujii a4f567047d Update listDatabases integration test filter input (#4499)
Closes FerretDB/engineering#179.
2024-07-30 14:25:47 +04:00
Alexander Tobi Fashakin bb581a3fff Add blog post for FerretDB v1.23 release (#4498) 2024-07-26 18:05:59 +04:00
Alexey Palazhchenko 219c8035f3 Remove zap remnants (#4497)
Closes #4496.
2024-07-26 03:37:44 +00:00
Alexey Palazhchenko 44b6754e60 Port small things from v2 (#4495) 2024-07-26 06:48:19 +04:00
Alexey Palazhchenko e4e65b712f Bump deps (#4496) 2024-07-25 22:48:08 +02:00
yonarw e763cc8689 Alignment and Bugfixes for SAP HANA backend (#4491) 2024-07-25 16:12:10 +04:00
Alexey Palazhchenko 291ae911a9 Prepare v1.23.0 release (#4492) 2024-07-25 09:17:19 +04:00
Chi Fujii 400b82da64 Cleanup logging (#4489) 2024-07-24 13:23:12 +04:00
Chi Fujii 858324e068 Use slog in envtool (#4480)
Closes #4013.
2024-07-24 07:54:41 +00:00
f859bb1ca6 Provide systemd unit file in .deb and .rpm packages (#4478)
Closes #2287.

Co-authored-by: Alexander Tobi Fashakin <fashakinalexander@gmail.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-07-24 07:04:34 +00:00
Alexey Palazhchenko b20325873d Refactor and document /debug/archive handler (#4485)
Closes #3584.
2024-07-24 10:48:40 +04:00
Alexey Palazhchenko ba6510a9af Drop old dependency (#4486) 2024-07-24 00:24:45 +00:00
Chi Fujii 8825076e88 Use slog in handler (#4470)
Closes #4013.
2024-07-23 17:32:33 +00:00
Alexey Palazhchenko 6d62d9a8dd Enable and document OTLP configuration (#4484)
Closes #3244.
2024-07-23 20:32:42 +04:00
979840162f Implement /debug/archive handler (#3895)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Henrique Vicente <henriquevicente@gmail.com>
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2024-07-23 14:58:04 +00:00
Chi Fujii 3f1e013f58 Use slog in fsql (#4464)
Closes #4013.
2024-07-23 08:04:22 +00:00
Chi Fujii ca5345b6de Use slog in main.go and embedded ferretdb package (#4462)
Closes #4013.
2024-07-23 11:21:33 +04:00
Chi Fujii 6312dab972 Use slog in integration tests (#4481)
Closes #4013.
2024-07-22 13:10:42 +02:00
Chi Fujii a4b7e704af Implement slog.LogValuer interface for types package (#4479)
Closes #4013.
2024-07-22 07:40:56 +00:00
Chi Fujii ddd5169ea0 Use slog in debug package (#4473)
Closes #4013.
2024-07-22 07:07:21 +00:00
Alexey Palazhchenko 1a28bb67af Add OTel spans (#4477) 2024-07-19 10:33:35 +00:00
Chi Fujii 150f1d3deb Use slog in otel (#4474)
Closes #4013.
2024-07-19 05:30:31 +00:00
Chi Fujii b971577bb3 Use slog in oplog and cursor packages (#4471)
Closes #4013.
2024-07-19 05:19:30 +00:00
Chi Fujii a2c4a0f9d7 Use slog in mysql and hana backends (#4463)
Closes #4013.
2024-07-19 05:04:38 +00:00
Alexey Palazhchenko 035827afb7 Remove FuncCall (#4476) 2024-07-18 17:53:06 +04:00
Chi Fujii 8fdcfd98e2 Use slog in sqlite backend (#4467)
Closes #4013.
2024-07-18 01:11:05 +00:00
Chi Fujii 2e60284c42 Use slog in postgresql backend (#4466)
Closes #4013.
2024-07-17 23:45:19 +00:00
Chi Fujii d7cd1b499f Use slog in clientconn package (#4457)
Closes #4013.
2024-07-17 20:36:58 +04:00
Alexey Palazhchenko 42e52c4fc0 Clarify the meaning of the passed context (#4455) 2024-07-15 16:44:25 +04:00
Chi Fujii 65afb924e7 Use single definition of order for checkswitch (#4452)
Closes #4082.
2024-07-13 04:17:48 +00:00
Chi Fujii ed8f5f1929 Test authSource in low level driver (#4449) 2024-07-12 11:16:06 +00:00
Alexey Palazhchenko 40e88a1ae3 Port pgx logger (#4450) 2024-07-12 03:32:28 +00:00
Alexey Palazhchenko 12a7b60ec2 Increase setup timeout in tests (#4454) 2024-07-12 07:21:53 +04:00
Chi Fujii 0bd26a5d70 Add support for named slog loggers (#4435)
Closes #4431.
2024-07-11 11:44:19 +00:00
Alexey Palazhchenko 484e763705 Update linters configuration (#4451) 2024-07-11 10:51:12 +04:00
Alexey Palazhchenko 85590b9758 Document logging (#4436) 2024-07-10 13:57:50 +00:00
Patryk Kwiatek 8b4ec3df46 Readiness probe cleanup (#4447) 2024-07-10 17:45:11 +04:00
Patryk Kwiatek 204ec7f237 Extract ping cli subcommand logic (#4426) 2024-07-10 11:48:54 +02:00
Alexey Palazhchenko 9cf961ec75 Ignore $readPreferences for insert (#4440) 2024-07-10 06:24:54 +00:00
Alexey Palazhchenko b8d1f607a5 Bump deps (#4446) 2024-07-10 10:03:21 +04:00
Alexey Palazhchenko f89bbe64d0 Crush .png images (#4441) 2024-07-09 22:28:08 +04:00
Alexander Tobi Fashakin 82c244561c Add blogpost on "monitoring FerretDB performance using Coroot" (#4279) 2024-07-09 22:23:11 +04:00
Alexey Palazhchenko ef7f275975 Remove broken links (#4433) 2024-07-09 17:48:37 +04:00
Chi Fujii a62cbf9c69 Cleanup checkSwitch (#4434)
Closes #4082.
2024-07-09 17:10:33 +04:00
Alexey PalazhchenkoandChi Fujii 24b78531e9 Add stub for named slog logger helper (#4432)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2024-07-09 07:43:37 +04:00
PaveenV 2aa742c694 Implement checkswitch to handle regular switches (#4381)
Closes #4082.
2024-07-09 07:15:37 +04:00
Chi Fujii 8212d866ac Return connectionStatus command db field (#4419) 2024-07-09 00:55:21 +00:00
Chi Fujii 5a93ea5c5b Test authSource (#4407) 2024-07-08 20:41:05 +00:00
Chi Fujii be64b345d4 Include OpReply error handling (#4420) 2024-07-08 20:30:03 +00:00
Alexey Palazhchenko 49b2dd19ba Stop Otel exporter gracefully in envtool (#4425) 2024-07-05 17:23:03 +09:00
Alexey Palazhchenko 8758722532 Document Kubernetes probes (#4424) 2024-07-05 12:03:11 +04:00
Elena Grahovac 1a5e5fe022 Disable OTEL in tests where collection name might have non-UTF-8 symbols (#4423)
Closes #4345.
2024-07-05 09:42:50 +09:00
Patryk Kwiatek 507f7d6ce7 Implement Kubernetes startup probe (#4399) 2024-07-03 07:37:45 +00:00
Alexey Palazhchenko fcc5c93b63 Bump Go and deps (#4416) 2024-07-03 11:25:15 +04:00
Alexey Palazhchenko a28d03d435 Extract types and zap code into separate files (#4408) 2024-07-03 00:46:22 +00:00
Patryk Kwiatek 7845441273 Implement Docker healthcheck (#4364) 2024-07-02 12:44:36 +00:00
Elena Grahovac 79834b0893 Setup OpenTelemetry exporter for FerretDB (#4380)
Closes #4345.
2024-07-02 07:49:55 +00:00
Alexey Palazhchenko bcb3ee11a8 Add tests for ctxutil.Sigterm (#4406) 2024-07-02 05:09:16 +00:00
Alexey Palazhchenko de1d61ccbd Refactor runnables (#4404)
Closes #4403.
2024-07-01 19:29:52 +04:00
Chi Fujii b757daa745 Check database name for authentication (#4402)
Closes #4392.
2024-07-01 11:13:17 +02:00
Alexey Palazhchenko ab00498219 Update comments about interfaces (#4405) 2024-07-01 09:33:24 +04:00
Alexander Tobi Fashakin fa0edadafd Add blog post on running FerretDB and CloudNativePG on Kubernetes (#4377)
Closes FerretDB/engineering#177.
2024-06-28 15:29:30 +04:00
Alexander Tobi Fashakin ee7a8b186f Add release blog post for FerretDB v.1.22.0 (#4401) 2024-06-27 18:47:35 +04:00
Patryk Kwiatek 300fbc35ef Add Kubernetes probes stubs (#4378) 2024-06-27 04:30:52 +00:00
Alexey Palazhchenko e1258e37a8 Replace deprecated syntax in Dockerfiles (#4397) 2024-06-26 15:55:44 +00:00
Alexey Palazhchenko de509c50cb Prepare v1.22.0 release 2024-06-26 16:12:57 +04:00
Chi FujiiandAlexey Palazhchenko 95d81dec9b Fix saslContinue prematurely returning done (#4391)
Closes #4385.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-06-26 15:02:03 +04:00
Chi Fujii 7e419c5704 Include SpeculativeAuthenticate changes (#4390)
Closes #4385.
2024-06-26 13:10:00 +04:00
Alexey Palazhchenko 748862f4b1 Port password changes (#4388) 2024-06-25 18:46:50 +04:00
Alexey Palazhchenko 7c92996c46 Port wire package changes (#4386) 2024-06-25 13:56:54 +04:00
Alexey Palazhchenko 6dc69f6348 Fix typo in migration guide (#4384) 2024-06-25 09:00:07 +04:00
Alexey Palazhchenko 2caffcebf0 Revert codecov version fix (#4383) 2024-06-24 20:23:58 +04:00
Pirate Praveen ArimbrathodiyilandAlexey Palazhchenko 5c15e52071 Add restart: on-failure to all containers (#4309)
Closes #4296.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-06-24 14:42:41 +04:00
Chi Fujii 9c2a943514 Remove ambiguous comment (#4382) 2024-06-24 12:25:27 +04:00
Chi Fujii f87a2c2946 Handle supported mechanisms in hello and getParameters commands (#4368)
Closes #4365.
2024-06-22 13:46:05 +04:00
Alexey Palazhchenko 0dfd9c567f Add TestMain to each integration test package (#4366)
Closes #4367.
2024-06-21 15:36:21 +02:00
Alexey Palazhchenko 42b3dbe7f0 Fix codecov CLI version (#4379) 2024-06-21 08:55:22 +04:00
Alexey Palazhchenko 049e962b79 Update codecov token 2024-06-21 07:58:12 +04:00
Chi Fujii fa750ce88e Remove PLAIN mechanism from new authentication (#4373)
Closes #4365.
2024-06-20 19:56:29 +04:00
Alexey Palazhchenko b3a021cf94 Bump deps (#4375) 2024-06-20 17:23:14 +04:00
Patryk Kwiatek 6e3f7b2085 Implement FerretDB health check (#4355) 2024-06-19 12:35:46 +04:00
Alexander Tobi Fashakin 519317b387 Add blog post on Adding MongoDB compatibility to Aiven for PostgreSQL (#4349) 2024-06-17 17:36:30 +04:00
Alexey Palazhchenko 453e7312a5 Fix task docker-local command (#4363) 2024-06-12 16:04:34 +04:00
Alexey Palazhchenkoandb1ron 798e6670d9 Allow database and user setup with CLI flags (#4310)
Closes #4243.

Co-authored-by: b1ron <goldingbyron@gmail.com>
2024-06-07 09:13:55 +09:00
(老外) Dougds c0bf829e50 Update example in documentation (#4305) 2024-06-03 19:01:17 +04:00
Chi Fujii e8d125b761 Populate env-data for running FerretDB (#4319) 2024-05-31 09:29:17 +04:00
Alexey Palazhchenkoandb1ron 5656ccc38b Extract user creation and move to backends package (#4311)
Closes #4243.

Co-authored-by: b1ron <goldingbyron@gmail.com>
2024-05-30 10:00:56 +09:00
Alexey Palazhchenko ba1c914938 Port some changes from v2 (#4307) 2024-05-29 13:40:49 +02:00
Alexander Tobi Fashakin 23d1e94fdf Add blog post about deploying FerretDB on Taikun CloudWorks (#4297) 2024-05-28 12:14:04 +04:00
Alexey Palazhchenko 5ff9f6d6ed Bump deps (#4302) 2024-05-28 10:16:16 +09:00
Chi Fujii 0811dd79a4 Fix env-data (#4289) 2024-05-24 14:46:17 +00:00
Chi Fujii 76f766402a Make maximum document size configurable (#4294)
Closes #4233.
2024-05-23 15:44:17 +09:00
Patryk Kwiatek def90a13a3 Fix embedded package panic (#4278) 2024-05-16 23:37:32 +02:00
Wazir Ahmed 266567196b Sort new fields in lexicographic order during update (#4223)
Closes #2038.
2024-05-15 12:18:01 +04:00
Alexey Palazhchenko fb4f384a2b Update linters configuration (#4277) 2024-05-08 13:28:17 +04:00
Alexey Palazhchenko dcdfe47ec6 Bump Go to 1.22.3 and deps (#4272) 2024-05-08 12:14:00 +04:00
Alexey Palazhchenko 1805131538 Use more shards on CI (#4266) 2024-05-07 21:36:24 +04:00
Alexey Palazhchenko 3903b99803 Move tools cache directory (#4265) 2024-05-07 14:03:29 +02:00
Alexey Palazhchenko f95b5d2478 Port BSON changes (#4263) 2024-05-01 16:14:52 +04:00
Alexey Palazhchenko e63d35760f Remove old BSON implementation (#4262) 2024-05-01 15:31:43 +04:00
Alexander Tobi Fashakin 7912d98f3e Add KubeDB blogpost on deploying FerretDB on Kubernetes (#4253) 2024-04-30 11:27:08 +04:00
Alexey Palazhchenko a84136f4bc Improve error message for state.json (#4251)
Closes #4234.
2024-04-28 14:24:04 +00:00
dockercui 89f22e47b4 Fix some comments (#4257)
Signed-off-by: dockercui <dockercui@aliyun.com>
2024-04-25 08:18:19 +04:00
b1ron 2da27aa8e2 Add dummy setup flags (#4247) 2024-04-19 11:29:34 +00:00
Alexey Palazhchenko 60220be7c8 Fix broken code blocks in documentation (#4239) 2024-04-17 09:18:31 +04:00
deferdeter a5155f53a7 Fix some comments (#4237)
Signed-off-by: deferdeter <deferdeter@outlook.com>
2024-04-16 18:57:56 +04:00
Alexey Palazhchenko db9988eb41 Bump deps (#4238) 2024-04-16 18:13:07 +04:00
Alexey Palazhchenko a92e1fa07c Add toolchain to make CodeQL happy 2024-04-15 15:15:16 +04:00
Alexey Palazhchenko 6cda9ad89a Fix website exclusion 2024-04-06 14:02:40 +04:00
Alexey Palazhchenko e98188452d Use Go 1.22.2 2024-04-06 13:47:41 +04:00
Alexey Palazhchenko fd75e502b2 Move Open Office Hours 2024-04-01 22:06:43 +04:00
Alexey Palazhchenko c299c531fd Fix TCP port for debug handler in Docker images (#4218) 2024-03-29 11:47:18 +04:00
Elena Grahovac 8b1adb023d Use a non-privileged user to run FerretDB (production docker image) (#4211)
Closes #3992.
2024-03-26 12:02:21 +01:00
Alexey Palazhchenko 407fbb8dfd Remove old TODOs 2024-03-22 20:59:21 +04:00
Patryk Kwiatek 445c9b3c0b Make our own low-level driver for testing (#4193)
Closes #4146.
2024-03-22 20:43:06 +04:00
Alexander Tobi Fashakin 87e70825db Add blog post for Openziti (#4194) 2024-03-22 14:13:00 +00:00
Alexey Palazhchenko e4052d249c Bump deps (#4201) 2024-03-22 09:30:17 +09:00
Alexander Tobi FashakinandAlexey Palazhchenko 5421602a17 Add blog post for FerretDB v1.21 release (#4202)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-03-21 22:59:38 +04:00
Alexey Palazhchenko a3fb274d25 Prepare v1.21.0 release (#4195) 2024-03-20 10:51:32 +04:00
Wojciech Kropidlowski 60fcd0933d Make batch sizes configurable (#4149)
Closes #3708.
2024-03-19 18:37:02 +04:00
Wazir Ahmed aea56ea1e0 Improve capped collection cleanup (#4118)
Signed-off-by: Wazir Ahmed <wazirahmedf@gmail.com>
2024-03-19 13:10:26 +00:00
Alexey Palazhchenko 419f9a0576 Bump pgx (#4190) 2024-03-15 10:12:01 +04:00
Chi Fujii 1bfc54997a Cleanup integration test for setting up user (#4160)
Closes #4100.
2024-03-14 08:19:44 +00:00
Alexey Palazhchenko 58ff7b0fa3 Bump protobuf dependency to make CI happy (#4187) 2024-03-14 11:59:07 +04:00
Alexey Palazhchenko 346fe7a8fc Move Docker build files (#4180) 2024-03-13 21:41:45 +04:00
Alexey Palazhchenko 64bd8caa74 Rename bson2 to bson (#4179) 2024-03-13 17:38:47 +04:00
Alexey Palazhchenko 365a3dd54f Move old bson package (#4177) 2024-03-13 12:08:15 +00:00
Chi Fujii 8483f0439e Fix speculativeAuthenticate panic on empty database (#4178)
Closes #4100.
2024-03-13 11:31:13 +00:00
Alexey Palazhchenko ea9c5bda8f Remove fjson package (#4176)
Closes #4157.
2024-03-13 12:26:38 +04:00
Alexey Palazhchenko 34a6fa5988 Do not use fjson (#4175)
Closes #4157.
2024-03-13 11:59:46 +04:00
Alexey Palazhchenko c89b88e019 Remove some closed issues from documentation (#4172) 2024-03-13 09:55:17 +04:00
Alexey Palazhchenko 9993f430f1 Do not use the flow style in the diff output (#4170)
Closes #4157.
2024-03-13 09:03:55 +04:00
Chi Fujii 75f5a741b2 Support localhost exception (#4156)
Closes #4100.
2024-03-12 15:28:53 +00:00
Alexey Palazhchenko eb93ab1468 Add Tembo to README (#4168) 2024-03-12 19:08:50 +04:00
Alexey Palazhchenko a8fc6423ff Fix logging of deeply nested documents (#4167)
Closes #3759.
2024-03-12 17:11:21 +04:00
Alexey Palazhchenko 4281187e85 Improve bson2 and wire logging (#4148)
Closes #3759.
2024-03-12 11:10:50 +04:00
Chi Fujii f460194f7d Fix PLAIN mechanism authentication incorrectly working (#4163)
Closes #1877.
2024-03-11 19:14:07 +00:00
Salman Shah e98d5361d9 Add linter to check truncate tag in blog posts (#4139)
Closes #4048.
2024-03-08 00:03:21 +00:00
Henrique Vicente 892780af24 Advertise SCRAM / SASL support in addition to PLAIN (#4113) 2024-03-07 09:18:58 +04:00
Alexey Palazhchenko 5a5ca29f20 Use Go 1.22.1 (#4155) 2024-03-06 14:19:39 +04:00
Samuel Adetunji b2a48398ed Fix MySQL collection stats (#4145)
Closes #3413.
2024-03-06 09:21:12 +00:00
Chi Fujii 4a677344a1 Cleanup TODO for speculative authenticate (#4143)
https://github.com/FerretDB/FerretDB/issues/4141
2024-03-06 09:04:01 +00:00
Henrique Vicente 25e6b46f9d Fix saslContinue crashing due to not found authentication conversation (#4129) 2024-03-05 20:27:45 +01:00
Samuel Adetunji dc757b9d59 Add MySQL backend (#4137)
Closes #3413.
2024-03-04 14:10:57 +00:00
Chi Fujii 1615d26d6a Support speculative authenticate (#4111)
Closes #3777.
2024-03-04 09:17:09 +00:00
Alexey Palazhchenko ef2798eb43 Improve OP_MSG validity checks (#4135) 2024-02-29 15:28:17 +05:30
Alexey Palazhchenko a8cfbb5150 Replace bson with bson2 in wire (#4110) 2024-02-28 17:56:59 +05:30
Chi Fujii 910c351704 Enforce new authentication (#4075)
Closes #1877.
2024-02-28 08:06:17 +00:00
Chi Fujii ad053476aa Skip stuck tailable cursor test (#4131) 2024-02-28 13:21:52 +05:30
Alexey Palazhchenko c31fa71165 Bump tests timeout 2024-02-28 11:06:38 +05:30
Alexey Palazhchenko 5eb9bdedc8 Use correct salt length (#4126) 2024-02-27 10:23:04 +00:00
Alexander Tobi Fashakin 35350b447b Add Pulumi blog post (#4102) 2024-02-27 07:18:38 +00:00
Farit Shamardanov 2c26f285c6 Add ignoring maxTimeMS argument in count, insert, update, delete (#4121)
Closes #4114.
2024-02-27 06:10:02 +00:00
Samuel Adetunji 91ff0956f8 Add MySQL backend collection (#4083)
Closes #3413.
2024-02-27 11:25:22 +05:30
Henrique Vicente 81e0be85e7 Fix envtool run test -run and -skip flags (#4101) 2024-02-26 11:04:57 +01:00
Alexander Tobi Fashakin 0aad83ae68 Update correct image link (#4116) 2024-02-23 13:45:48 +04:00
Artyom Fadeyevandnoisersup b6fd73b429 Make logger configurable in the embedded ferretdb package (#4028)
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2024-02-22 14:42:58 +01:00
Alexey Palazhchenko 033dfef045 Use bson2 package for wire queries and replies (#4108) 2024-02-22 10:23:35 +09:00
Alexey Palazhchenko 9de2931375 Refactor bson2 package (#4105) 2024-02-21 20:18:13 +04:00
Alexander Tobi Fashakin 8d9b234cae Add Tembo QA blog post (#4081) 2024-02-21 20:14:41 +04:00
Alexander Tobi Fashakin 6893544193 Fix Codapi file error (#4077)
Closes #4058.
2024-02-21 19:57:54 +04:00
Alexey Palazhchenko cd6a993542 Revert SQLite version bump (#4106) 2024-02-21 09:39:55 +01:00
Wazir Ahmed 4956f29fa8 Reorganize and fix update/upsert logic (#4069)
Closes #3040.
Closes #3017.
Closes #3856.
Closes #2630.
Closes #3843.
2024-02-21 01:59:56 +00:00
Elena Grahovac a1dc6c7aef Add more fields to requests and responses (#4096)
Closes #153.
2024-02-20 07:36:22 +00:00
Alexey Palazhchenko eb8f0b20ee Disable golangci-lint's whole-file options 2024-02-20 07:44:33 +04:00
Alexey Palazhchenko 74d6428912 Use Go 1.22 and bump deps (#4094) 2024-02-19 20:56:37 +04:00
Henrique Vicente 47819e24f4 Add SCRAM-SHA-1 authentication support (#4078) 2024-02-19 14:21:17 +00:00
Alexey Palazhchenko 2bf37ef9d6 Revert Docker image changes
Refs #3992.
2024-02-19 18:03:48 +04:00
Alexey Palazhchenko be98b9f9c7 Prepare v1.20.0 release 2024-02-19 15:58:51 +04:00
Alexey Palazhchenko 9547b1ee5d Update telemetry host (#4085) 2024-02-19 11:26:29 +04:00
Henrique Vicente a86b0c6d6a Remove SCRAM-SHA-256 implementation TODO links (#4086) 2024-02-16 13:26:31 +01:00
Henrique Vicenteandb1ron 92378e70f6 Add SCRAM-SHA-256 authentication support (#3989)
Co-authored-by: b1ron <80292536+b1ron@users.noreply.github.com>
2024-02-15 20:23:48 +00:00
Alexey Palazhchenko 5c76609b65 Add helper for decoding document sequences (#4080) 2024-02-15 11:48:02 +01:00
Alexey Palazhchenko e1eaaad891 Implement bson2.RawDocument checking (#4076) 2024-02-14 17:31:59 +01:00
Samuel Adetunji e54842a158 Prepare query statements for MySQL (#4064)
Closes #3413.
2024-02-14 09:50:26 +09:00
Alexander Tobi Fashakin 5f69d919a1 Add blogpost on FerretDB stack on Tembo (#4037)
Closes FerretDB/engineering#152.
2024-02-13 22:20:00 +04:00
Ahmet Hakan BeşelandAlexey Palazhchenko b4b9813730 Use rootless scratch containers for production Docker images (#4004)
Closes #3992.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-02-12 17:10:48 +00:00
Henrique Vicente b00e27cd52 Add utility for hashing SCRAM-SHA-256 password (#4031) 2024-02-12 16:31:55 +00:00
Alexey Palazhchenko 19dc041212 Bump Go to 1.21.7 (#4059) 2024-02-12 15:26:04 +00:00
Alexander Tobi Fashakin 3748cea863 Update Codapi (#4039)
Closes #4058.
2024-02-12 19:07:27 +04:00
Alexander Tobi Fashakin d5e8bdbdb5 Add blog post on Disaster Recovery for FerretDB with Elotl Nova (#4038)
Closes FerretDB/engineering#151.
2024-02-12 18:57:52 +04:00
Patryk Kwiatek e92ded7b8b Add experimental pushdown for dot notation (#4049) 2024-02-12 14:51:22 +00:00
Alexey Palazhchenko 282c8e16c4 Minor cleanups (#4046) 2024-02-08 10:09:09 +04:00
Samuel Adetunji fed2380477 Implement database.Stats for MySQL backend (#4034)
Closes #3413.
2024-02-08 10:43:42 +09:00
Alexander Tobi Fashakin 8213741ae1 Truncate release blog post (#4047) 2024-02-07 16:45:01 +04:00
Alexey Palazhchenko 56f52bc599 Fix for linter 2024-02-07 10:49:52 +04:00
Alexey Palazhchenko f5f46cd235 Use Ubicloud for CI runners (#4027) 2024-02-07 08:57:08 +04:00
Artyom FadeyevandPatryk Kwiatek 5536dace20 Display envtool run test progress with run and/or skip flags (#3999)
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2024-02-05 01:12:31 +00:00
Alexey Palazhchenko fa7e262950 Bump deps and speed-up checkcomments (#4030) 2024-02-01 14:14:29 +04:00
Alexey Palazhchenko 10190789bf Expose new authentication enabling flag (#4029) 2024-02-01 09:02:16 +04:00
Alexander Tobi Fashakin 2f83c2ef25 Add release blog post for v1.19.0 (#4020) 2024-01-31 21:31:24 +04:00
Alexander Tobi Fashakin 775e135b71 Add blog post on Ubicloud managed postgres (#4010) 2024-01-31 12:21:49 +00:00
Teej4y de8e38dc14 Setup MySQL backend (#4003)
Closes #3413.
2024-01-31 17:12:49 +09:00
Alexey Palazhchenko 0d3eb76b38 Add bson2 helpers for conversions and logging (#4019) 2024-01-30 00:48:46 +00:00
Alexey Palazhchenko 83024e9731 Add TODO comments for logging (#4015) 2024-01-29 16:36:50 +00:00
Henrique Vicente e685304062 Add tests for new SCRAM-SHA-256 authentication support (#4012) 2024-01-29 13:24:43 +00:00
Alexey Palazhchenko 0e7b048346 Prepare v1.19.0 release 2024-01-29 14:43:13 +04:00
Alexey Palazhchenko 7561893d8b Prepare release (#4016) 2024-01-29 14:40:14 +04:00
Alexey Palazhchenko a7d770d845 Expose raw documents in the wire package (#4011) 2024-01-25 16:05:22 +01:00
Alexey Palazhchenko eab159af39 Add deep bson2 decoding (#3997)
Closes #3759.
2024-01-24 07:58:35 +00:00
Alexey Palazhchenko 2729421fca Hide *types.Document from wire struct fields (#4000) 2024-01-23 18:05:09 +04:00
b1ron 0e2d108076 Ignore $readPreference field (#3996) 2024-01-23 17:22:44 +04:00
Alexey Palazhchenko 5201cabbc7 Prepare CI to having multiple main branches (#4002) 2024-01-23 16:01:52 +04:00
Wojciech Kropidlowski d282fb1366 Fix validation process for creating duplicate _id index (#3990) 2024-01-23 09:05:08 +00:00
Artyom Fadeyev 10815ae35f Support creating an index on nested fields for SQLite (#3972)
Closes #3506.
2024-01-23 10:54:33 +04:00
Teej4y 32ee1950ff Add tests for MySQL registry (#3993)
Closes #3413.
2024-01-22 12:00:21 +00:00
Sachin Puranik dc0db5db1a Use ListCollection with a filter (#3995)
Closes #3601.
2024-01-22 11:58:26 +01:00
Alexey Palazhchenko ea03c1386f Update contributing documentation (#3994) 2024-01-22 10:58:35 +01:00
Alexey Palazhchenko 2b45f90046 Improve bson2 fuzzing (#3988)
Closes #3759.
2024-01-19 13:00:17 +04:00
Henrique Vicente 3eddac3054 tests: on createUser and dropUser use usersInfo to verify database state (#3980) 2024-01-17 20:53:23 +00:00
Alexey Palazhchenko a822bfc1d1 Refactor bson2 encoding/decoding (#3987) 2024-01-17 19:10:00 +04:00
Alexey Palazhchenko 562d76711a Add new BSON decoding package (#3905)
Closes #3759.
2024-01-17 10:02:27 +00:00
Teej4y 21ebe3aba8 Add MySQL backend Registry (#3967) 2024-01-16 11:40:26 +00:00
Alexey Palazhchenko c9798c97a2 Small assorted tweaks (#3979) 2024-01-16 15:26:42 +04:00
Henrique Vicente 857df1b943 Implement updateUser command (#3973)
Closes #1496.
2024-01-16 07:55:31 +00:00
Alexander Tobi Fashakin cb3d689fec Fix search queries (#3976)
Closes #2051.
2024-01-15 19:42:33 +04:00
Alexey Palazhchenko 3eb9ee6f79 Small fixes and tweaks (#3971) 2024-01-12 19:11:01 +04:00
Alexey Palazhchenko 0804f2b8a4 Shard extra CI configurations (#3946) 2024-01-12 18:20:56 +04:00
Wazir Ahmed 2797a9c6ba Fix upsert with $setOnInsert operator (#3931) 2024-01-12 15:44:16 +04:00
Alexey Palazhchenko 8d37e8cdc9 Use PBKDF2 for storing PLAIN passwords (#3970)
Closes #3938.
2024-01-12 15:19:50 +04:00
69db2676da Store passwords for PLAIN authentication mechanism (#3928)
Closes #3785.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2024-01-12 13:26:28 +04:00
Patryk Kwiatek 1e736b9d4a Run more maxTimeMS tests (#3940) 2024-01-12 11:22:56 +04:00
Patryk KwiatekandAlexey Palazhchenko 44500e7610 Fix maxTimeMS for getMore command (#3919)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-01-11 09:09:51 +00:00
Alexey Palazhchenko eca668dd85 Speed-up Docker builds (#3965)
Closes #2170.
2024-01-10 15:27:11 +04:00
Alexey Palazhchenko 53b7e4df22 Fix Taskfile.yml indentation (#3964) 2024-01-10 13:03:37 +04:00
Alexander Tobi Fashakin 8edda5518e Add documentation for oplog (#3960) 2024-01-09 17:14:27 +04:00
Alexey Palazhchenko d05bc2c52d Bump deps (#3955) 2024-01-09 10:47:04 +04:00
Alexey Palazhchenko 220edc435d Tweak blog post a bit (#3951) 2024-01-09 10:46:23 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 3c038d272e Add blog post for FerretDB release v1.18.0 (#3950)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
2024-01-08 22:49:08 +04:00
Alexey Palazhchenko e3f6c3a624 Prepare v1.18.0 release (#3947) 2024-01-08 17:48:00 +04:00
Teej4y 0b08b30d65 Allow Native Passwords for testcase (#3941)
Closes #3413.
2024-01-08 12:29:31 +04:00
Henrique Vicente 38fb5e4ffa Use usersInfo in dropAllUsersFromDatabase tests (#3932)
Closes #1492.
2024-01-05 14:19:53 +00:00
Patryk Kwiatek c42b731f70 Fix awaitData cursor panic (#3935) 2024-01-05 13:43:48 +01:00
Elena Grahovac 15c0d0c301 Add the necessary for replica set fields to ismaster response (#3925)
Closes #3861.
Closes #3556.
2024-01-05 12:06:40 +00:00
Teej4y 970c017825 Disallow native passwords for MySQL (#3937)
Closes #3413.
2024-01-05 12:12:57 +01:00
74d7272581 Implement usersInfo command (#3897)
Closes #1497


Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
2024-01-04 21:56:34 +00:00
Patryk Kwiatek ca5677d273 Disallow maxTimeMS for non-awaitData cursors in getMore command (#3917) 2024-01-04 21:17:01 +00:00
6a17ca12c7 Allow filtering by name in ListDatabases and ListCollections (#3851)
Closes #3601.

Co-authored-by: Henrique Vicente <henriquevicente@gmail.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2024-01-04 20:35:29 +00:00
Alexey Palazhchenko c8f8c6851e Ignore sparse index parameter for now (#3934) 2024-01-04 15:37:22 +01:00
Elena Grahovac 1e3c826fb5 Implement and test OpLog for update operations (#3899)
Closes #3861.
Closes #3556.
2024-01-04 14:35:01 +01:00
Elena Grahovac 718078ada1 Cleanup a closed issue (#3924) 2024-01-04 11:07:57 +01:00
Patryk Kwiatek 8c865ff773 Cleanup awaitData tailable cursor (#3915) 2024-01-02 14:50:25 +01:00
Patryk Kwiatek f8d94bdcba Implement awaitData tailable cursors (#3900) 2023-12-28 13:20:44 +00:00
Alexey Palazhchenko ca744983aa Drop test users on cleanup (#3914) 2023-12-28 12:01:04 +01:00
Elena Grahovac 1b1167e56f Don't cleanup capped collections if there is nothing to cleanup (#3909) 2023-12-28 10:21:00 +00:00
Alexey Palazhchenko 2c17e05dd6 Make AssertEqual helper handle duplicate keys (#3911) 2023-12-27 18:28:38 +00:00
Alexey Palazhchenko af36e33d59 Bump deps (#3912) 2023-12-27 18:15:50 +01:00
Alexey Palazhchenko a4abf17185 Forbid bson.E/D/M/A, except integration tests (#3908) 2023-12-27 11:16:47 +01:00
Elena GrahovacandAlexey Palazhchenko e36e848e7a Add some small improvements to the linter that checks open issues (#3756)
Closes #2733.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-25 17:43:28 +01:00
Alexey Palazhchenko 235a208fad Refactor ConnInfo in preparation for new auth (#3901) 2023-12-21 23:38:54 +01:00
Patryk Kwiatek b9eafc5819 Add more cursor tests (#3893)
Closes #3739.
2023-12-21 19:02:09 +04:00
Elena Grahovac cc2fb19ef6 Add integration tests for OpLog entries of insert and delete operations (#3862)
Closes #3861.
2023-12-21 19:01:18 +04:00
yonarw 9e23f878ff Add basic SAP HANA backend (#3719) 2023-12-21 17:10:25 +04:00
Alexey Palazhchenko c5e44a7b33 Small clean-ups (#3896) 2023-12-21 13:23:54 +04:00
krishna sindhur df1499d952 Add support for --skip in envtool tests run (#3805)
Closes #3787.
2023-12-21 11:41:10 +04:00
Alexey Palazhchenko 3db735b985 Add utilities for working with passwords (#3890)
Closes #3785.
2023-12-20 22:38:30 +00:00
Patryk Kwiatek 0bac9ed1ed Add awaitData tests (#3872)
Closes #3818.
2023-12-20 21:56:46 +00:00
Henrique Vicente 52c0f0ffe2 Use dropAllUsersFromDatabase in tests (#3891)
Closes #1492.
2023-12-20 20:34:28 +04:00
Alexey Palazhchenko 1976ea2263 Fix clean-up on aggregate errors (#3892) 2023-12-20 16:11:58 +00:00
fc1163b1f2 Implement dropAllUsersFromDatabase (#3867)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-12-20 12:44:43 +00:00
Alexey Palazhchenko ac3f26fdb0 Enable OpLog and tailable cursors (#3887)
Closes #76.
2023-12-20 15:54:25 +04:00
Alexander Tobi Fashakin 86d8023dd7 Update blog links (#3889) 2023-12-20 13:48:33 +04:00
Alexey Palazhchenko 533e15c6c3 Fix local MySQL setup (#3886) 2023-12-20 10:21:18 +04:00
Henrique Vicente eefeb0d6b7 Implement dropUser command (#3866)
Closes #1493.
2023-12-20 07:39:29 +04:00
Alexander Tobi Fashakin 6a29fa932a Add blog post on "How to Add MongoDB Compatibility to Neon" (#3863) 2023-12-19 19:30:03 +04:00
Alexey Palazhchenko 13884ccded Add support for tailable cursors (#3799)
Closes #2283.
2023-12-19 19:01:41 +04:00
Teej4y 8a329498af Add MySQL backend registry (#3850)
Closes #3413.
2023-12-19 14:32:39 +00:00
Alexander Tobi Fashakin cd2296061d Add release blogpost for v1.17.0 (#3883) 2023-12-19 18:00:56 +04:00
Alexey Palazhchenko 5ae90d467d Fix tests (#3871)
Previous tests might create capped collections in other databases.
2023-12-19 12:15:08 +00:00
Alexey Palazhchenko 23714a4675 Bump deps (#3880) 2023-12-19 06:54:27 -05:00
Henrique VicenteandAlexey Palazhchenko 2917fc5722 Implement createUser command (#3848)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-19 05:41:15 -05:00
Alexey Palazhchenko c2b2c1d521 Add CI configuration for Citus (#3865)
Closes #3099.
2023-12-18 13:57:39 +00:00
Alexey Palazhchenko 4de769a5d6 Prepare v1.17.0 release (#3869) 2023-12-18 14:26:53 +04:00
Patryk Kwiatek eb04508e3f Add cursor tests (#3859) 2023-12-18 08:03:28 +00:00
Wazir Ahmed 82143ff202 Add upsert tests (#3864)
Closes #3856.
2023-12-17 23:45:26 -05:00
Alexey Palazhchenko 39aee11532 Simplify tailable cursor tests (#3854) 2023-12-15 08:14:04 +04:00
9a15f1af08 Use MongoDB 7 (#3824)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-12-14 22:54:10 +00:00
Elena GrahovacandAlexey Palazhchenko b2b0aaf21d Support capped collection cleanup (#3831)
Closes #3459.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
2023-12-14 23:40:26 +01:00
Patryk Kwiatek bff43069d0 Test cross-session cursors (#3849) 2023-12-14 23:20:52 +04:00
Alexey Palazhchenko c4b84a3909 Add missing logging parameter (#3847) 2023-12-14 08:05:05 +01:00
Patryk Kwiatek c0201395cd Add tests for tailable cursors (#3833) 2023-12-13 19:52:53 +04:00
Alexey Palazhchenko b26d394e2f Allow bypassing authentication (#3840) 2023-12-12 20:12:19 +04:00
Alexey Palazhchenko 6737d3260e Clean-up tests a bit (#3835) 2023-12-11 21:25:55 +04:00
Alexey Palazhchenko 008b88e4a9 Add documentation for older versions (#3834) 2023-12-11 18:30:49 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 62062ba71b Enable versioning on documentation (#3821)
Closes #2776.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-11 16:54:22 +04:00
Teej4y 1290378fd5 Add MySQL backend metadata (#3828) 2023-12-11 16:53:53 +04:00
Patryk Kwiatek c0eace04c2 Disallow $natural in compound sort (#3832) 2023-12-08 12:38:37 +01:00
Henrique Vicente 26b27de451 Add fields to listCollections.cursor response (#3809)
Closes #2815.
2023-12-08 14:21:05 +04:00
Patryk Kwiatek 13d2680d71 Allow sorting by $natural (#3822)
Closes #3638.
2023-12-07 22:28:19 +04:00
Alexey Palazhchenko d8de8afc06 Ignore $clusterTime (#3830) 2023-12-07 17:20:56 +01:00
Elena GrahovacandAlexey Palazhchenko 514acee577 Fix tests for MongoDB with enabled replica set (#3807)
Closes #3310.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-07 12:17:46 +00:00
Alexey Palazhchenko fe268cb74d Extract find helper functions (#3826) 2023-12-07 14:18:23 +04:00
Alexander Tobi Fashakin c04dfb2725 Change release blogpost image (#3825) 2023-12-07 08:16:18 +04:00
Hungai AmuhindaandAlexey Palazhchenko f8141899f1 Add tracing to envtool tests run (#3695)
Closes #3665.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-06 21:25:03 +04:00
Patryk Kwiatek 504c5674a6 Use single flag to disable all pushdowns (#3793) 2023-12-06 16:41:44 +01:00
Alexey Palazhchenko 9823d7580f Refactor cursor creation (#3820) 2023-12-06 14:05:51 +01:00
Alexey Palazhchenko b6e42b4f81 Bump deps (#3817) 2023-12-06 11:12:28 +04:00
Alexander Tobi Fashakin d3cc6919fe Add new release FerretDB v1.16.0 blog post (#3808) 2023-12-06 08:02:45 +04:00
Alexey Palazhchenko 2aa02651ca Move tests for tailbable cursors (#3811) 2023-12-05 22:17:30 +04:00
Alexey Palazhchenko 4e47318ede Support subdirectories for integration tests (#3810) 2023-12-05 13:58:52 +01:00
Anunaya Srivastava 7aefd7da00 Allow building without PostgreSQL or SQLite backend (#3803)
Closes #3629.
2023-12-04 23:16:37 +00:00
b1ron 126b59d70d Improve validate diagnostic command (#3804)
Closes #419.
2023-12-04 21:14:43 +04:00
Henrique Vicente f4c289f3d2 Fix MsgListDatabases handler filtering when using nameOnly (#3788) 2023-12-04 16:37:11 +00:00
Wazir Ahmed 38d1d9aa0c Generate collection UUIDs (#3791)
Closes #3613.
2023-12-04 20:15:56 +04:00
Alexey Palazhchenko 651b93f86f Prepare v1.16.0 release 2023-12-04 15:58:29 +04:00
Alexey Palazhchenko c7de1c4c5b Set GOARM explicitly (#3796) 2023-12-04 12:39:30 +04:00
Alexey Palazhchenko ced8ce0d8b Log batches for find, aggregate, getMore (#3800) 2023-12-03 22:39:17 +04:00
Alexey Palazhchenko a1cf79c659 Update domain name in more places (#3802) 2023-12-01 18:26:59 +04:00
Alexander Tobi Fashakin 71bae17f20 Update Docusaurus to v3 (#3772)
Closes #3748.
2023-12-01 17:36:15 +04:00
Alexey Palazhchenko 4dbe2f4925 Ignore go-consistent failures (#3794) 2023-12-01 16:24:39 +04:00
Alexey Palazhchenko c127482a85 Remove done TODOs (#3795) 2023-12-01 12:39:18 +01:00
Patryk Kwiatek e073f9d49c Remove commoncommands package (#3780)
Closes #3662.
2023-12-01 13:43:00 +04:00
Patryk Kwiatek 38e0d3d019 Move getParameter out of common package (#3789) 2023-12-01 05:32:51 +00:00
Alexey Palazhchenko 4992933ac6 Add stubs for authentication commands (#3776) 2023-12-01 09:06:53 +04:00
Patryk Kwiatek 9c42561864 Return information about sort pushdown for find and aggregate (#3754) 2023-11-30 17:49:31 +01:00
Alexey Palazhchenko 8ebe4c22fe Add TLS support to proxy mode (#3783) 2023-11-30 19:23:12 +04:00
Patryk Kwiatek 90ca80859b Rename commonerrors and commonparams (#3779) 2023-11-30 14:20:54 +04:00
Teej4y aad8a21e8a Setup MySQL integration tests (#3758)
Closes #3413.
2023-11-29 17:44:05 +00:00
Alexey Palazhchenko 491f4c5ba6 Allow system. prefix for collections for now (#3775) 2023-11-29 15:21:32 +01:00
Alexey Palazhchenko d09f9cd8bf Add TODOs (#3771) 2023-11-28 19:03:28 +04:00
Alexey Palazhchenko 0e22913e7c Move some commands from common to the handler (#3766) 2023-11-28 08:45:31 +04:00
Alexey Palazhchenko 1a93e47611 Add TODOs (#3764) 2023-11-27 19:02:28 +04:00
Alexey Palazhchenko f4dd136c9d Clean-up old code for multiple handlers (#3763) 2023-11-27 17:27:09 +04:00
Alexey Palazhchenko 364907cdae Add TODOs about pushdowns (#3762) 2023-11-27 16:02:04 +04:00
Elena Grahovac 2664b9a5dd Move sqlite/*.go to internal/handler (#3755)
Closes #3662.
2023-11-25 10:09:25 +04:00
Alexey Palazhchenko a93ce5319a Update domain name in docs (#3757) 2023-11-24 16:33:23 +04:00
Alexey Palazhchenko aa05f0fb6b Add startup warning for debug builds (#3735) 2023-11-23 17:11:20 +00:00
Elena Grahovac 7936b3ae2a Support DeleteAll for capped collections (#3718)
Closes #3498.
2023-11-23 17:00:10 +00:00
Patryk Kwiatek 75ebdfb7b3 Remove unsafe pushdown (#3752) 2023-11-23 20:48:43 +04:00
Alexey Palazhchenko e60e99bbee Remove common handlers.Interface (#3753)
Closes #3662.
2023-11-23 17:25:26 +01:00
Alexey Palazhchenko 3d03b51cd0 Add MySQL backend to CI (#3751) 2023-11-23 14:26:14 +04:00
Teej4y c119f9ecc4 Add MySQL into the build system (#3736) 2023-11-23 13:51:51 +04:00
Alexey Palazhchenko 7948d19136 Bump deps (#3747) 2023-11-23 11:37:37 +04:00
Alexey Palazhchenko dc76d334ec Make RecordID a signed value (#3740) 2023-11-23 11:37:20 +04:00
Alexander Tobi Fashakin cbec9f8b01 Add blogpost for release v.1.15 (#3728) 2023-11-21 13:04:16 +04:00
Patryk Kwiatek c1dbb63800 Cleanup pushdown terminology (#3691)
Closes #3688.
2023-11-20 13:44:23 +00:00
Alexey Palazhchenko 23103e2682 Clarify MongoDB version (#3653) 2023-11-20 17:33:23 +04:00
Alexey Palazhchenko d14700191a Prepare v1.15.0 release 2023-11-20 14:35:12 +04:00
Alexey Palazhchenko 925e739dd0 Small assorted tweaks (#3724) 2023-11-17 16:34:01 +01:00
d96606ca73 Move diff tests from dance to integration tests (#3525)
Closes #3383.

Signed-off-by: Shankeerthan Kasilingam <shankeerthan1995@gmail.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: noisersup <patryk@kwiatek.xyz>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-11-17 16:18:10 +04:00
Alexey Palazhchenko 8e27db3432 Add TODOs and fix URLs (#3723) 2023-11-17 12:49:11 +04:00
Alexander Tobi Fashakin 3ed16c6fda Add migration blog post (#3709) 2023-11-17 12:38:44 +04:00
Chuma Umenzeandnoisersup 05fb80644e Generate SQL queries with comments for find operations (#3697)
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2023-11-17 07:39:57 +00:00
Alexander Tobi Fashakin 532787d758 Fix Codapi error on blog post (#3721) 2023-11-16 18:12:15 +04:00
e17d6a4ceb Add issue tracking to checkcomments analyzer (#3632)
Closes #2733.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
2023-11-15 18:15:51 +00:00
Elena Grahovac 07a145fca7 Make handler accept constructed backend (#3710)
Closes #3662.
2023-11-15 17:52:43 +00:00
Alexander Tobi Fashakin 6c5c7090e3 Test interactive blog (#3659) 2023-11-15 21:19:08 +04:00
Alexey Palazhchenko b7fa5c309f Allow the usage of existing PostgreSQL schema (#3717) 2023-11-15 15:54:43 +00:00
Alexander Tobi Fashakin 5281e6178c Add blogpost for "How to Package and Deploy FerretDB with Acorn" (#3679) 2023-11-15 18:27:35 +04:00
Alexey Palazhchenko 7d5c3f2f0a Handle panicking tests (#3711) 2023-11-15 09:03:41 +04:00
Elena Grahovac 74009c0361 Fix tests for MongoDB with enabled replica set (#3604)
Closes #3310.
2023-11-14 08:12:58 +00:00
Alexey Palazhchenko d743808d04 Use the standard *mongo.WriteError type (#3705) 2023-11-14 01:58:03 +04:00
Alexey Palazhchenko a58d9f83dd Use - in addition to the empty string (#3704) 2023-11-14 00:02:10 +04:00
Alexey Palazhchenko db7342abc0 Allow usage without state dir (#3703)
Closes #3699.
2023-11-13 21:30:21 +04:00
Luke Kuzmish 3b937b115e Add option to disable --debug-addr (#3698)
Closes #3517.
2023-11-13 14:23:47 +04:00
Patryk Kwiatek e4eed05dfd Add test for tailable cursor with non-capped collection (#3677) 2023-11-13 10:22:38 +00:00
Alexey Palazhchenko 1f18df076d Use separate PostgreSQL databases in tests (#3622)
Closes #3409.
2023-11-10 19:01:46 +04:00
Alexander Tobi Fashakin c3031940b0 Fix content error (#3694) 2023-11-10 07:44:30 +04:00
Alexey Palazhchenko 10844cf621 Bump deps (#3690) 2023-11-09 17:10:14 +00:00
Alexey Palazhchenko 8a18837dd0 Add JSON format for logging (#3689) 2023-11-09 08:23:51 +04:00
Alexander Tobi Fashakin 4bd76006af Add blog post on FastNetMon (#3676) 2023-11-08 21:12:50 +04:00
Alexey Palazhchenko 22421e7e4e Update URLs 2023-11-08 11:02:33 +04:00
mrusme 1d9339e296 Update README.md to include Vultr (#3675) 2023-11-08 10:45:00 +04:00
Alexander Tobi Fashakin c664e70768 Add release blogpost for FerretDB v.1.14.0 (#3681) 2023-11-08 10:29:48 +04:00
Chi FujiiandAlexey Palazhchenko 3232afdfab Support showRecordId in find (#3637)
Closes #3467.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-11-08 10:27:18 +04:00
Alexey Palazhchenko b31b8e29ab Make tests stable on CI (#3678) 2023-11-07 14:15:38 +04:00
Alexander Tobi Fashakin 051e963891 Mention proxy flag in docs (#3673) 2023-11-07 07:37:25 +00:00
Alexey Palazhchenko a60bc00f78 Prepare v1.14.0 release 2023-11-07 10:45:21 +04:00
Andrew Minkin 76ea246cb7 Rename main_postgeresql to main_postgresql (#3668) 2023-11-02 11:55:27 +00:00
Alexey Palazhchenko c3f7da0d40 Remove old SAP HANA handler (#3674) 2023-11-01 21:24:37 +04:00
Alexey Palazhchenko b604b6b555 Add timing information to envtool output (#3664) 2023-10-31 19:52:43 +04:00
PRINCE JHAandChi Fujii ba384d9d1c Optimize insert performance by batching (#3621)
Closes #3271.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-10-31 19:16:12 +04:00
Chi Fujii ebf46cf045 Add blog post on MongoDB sorting for scalar values (#3200) 2023-10-31 14:53:29 +04:00
Alexander Tobi Fashakin 60a9bcc38b Update blog post on Ubuntu (#3658) 2023-10-30 15:43:40 +00:00
Doni RubiagatraandAlexey Palazhchenko 09ec58cda8 Add integration tests progress reporting (#3471)
Closes #3055.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-30 19:31:34 +04:00
Alexander Tobi Fashakin c68710e1d5 Add Vultr blog post (#3646) 2023-10-30 17:50:36 +04:00
Alexey Palazhchenko 6a273333ac Enable GOMAXPROCS autotuning (#3105) 2023-10-30 14:30:50 +04:00
Chi Fujii ce26a01893 Support InsertAll and FindAll for capped collections (#3610)
Closes #3490.
2023-10-29 20:29:16 +00:00
Chi Fujii e180e61bc9 Add test for capped collection in aggregate $collStats (#3643)
Closes #2447.
2023-10-28 08:25:18 +00:00
Alexey Palazhchenko a3f9ed8f39 Disable new linters for now 2023-10-28 12:13:14 +04:00
Alexey Palazhchenko 767c6e7751 Remove old pg handler (#3661) 2023-10-27 22:07:23 +04:00
Shahriar Shatilandnoisersup 2715338b02 Remove pgdb from envtool (#3586)
Closes #3452.

Co-authored-by: noisersup <patryk@kwiatek.xyz>
2023-10-27 17:25:57 +04:00
Alexey Palazhchenko b73400880d Update golangci-lint (#3651) 2023-10-26 19:47:44 +00:00
Alexey Palazhchenko d6d3a43fc8 Run backend tests for SAP HANA (#3657) 2023-10-26 19:24:42 +02:00
Alexey Palazhchenko ebe7cd17d9 Optimize detection of duplicate fields (#3645) 2023-10-26 10:27:35 +09:00
Alexander Tobi Fashakin 329efdf9b7 Add blogpost for FerretDB v1.13.0 (#3639) 2023-10-24 18:56:15 +04:00
Alexey Palazhchenko 689c4b0baf Disallow capped collection creation when disabled (#3636) 2023-10-24 10:32:19 +00:00
Teej4yandChi Fujii 78e20904f3 Implement compact command (#3559)
Closes #3466.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-10-24 10:00:59 +00:00
Elena GrahovacandChi Fujii a8880e8323 Support create for capped collections (#3614)
Closes #3458.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-10-24 13:19:49 +04:00
Alexey Palazhchenko 1026d86fdb Fix incorrect schema (#3635) 2023-10-24 11:23:11 +04:00
Alexey Palazhchenko 8c7cb035bd Prepare v1.13.0 release 2023-10-23 17:03:31 +04:00
Alexey Palazhchenko ea7f26aa0e Prepare v1.13.0 release (#3628) 2023-10-23 16:43:37 +04:00
Patryk Kwiatek 0a526c008a Implement pushdown for aggregate (#3607) 2023-10-23 14:02:56 +04:00
codenoid 05a2ee3e7c Make listIndexes return a sorted list (#3602)
Closes #3589.
2023-10-20 17:38:02 +00:00
Alexander Tobi Fashakin 19c361a271 Add links to blog (#3623) 2023-10-20 18:38:15 +04:00
Alexey Palazhchenko 55d333314e Do not create OpLog database/collection on a fly (#3625) 2023-10-20 18:37:38 +04:00
Alexey Palazhchenko d1aad784a9 Fix some tests for SQLite backend (#3617)
Closes #3409.
2023-10-20 17:49:13 +04:00
Alexey Palazhchenko 10e186c42e Keep envtool's version always up-to-date (#3609) 2023-10-19 19:03:26 +00:00
Alexander Tobi Fashakin 24498a4cc8 Update ILLA blog post (#3620) 2023-10-19 22:51:15 +04:00
Alexander Tobi Fashakin 19a6bd5131 Add "How to Install FerretDB on Ubuntu" blog post (#2802) 2023-10-19 17:51:58 +04:00
384c284fee Call ANALYZE less often (#3563)
Closes #3518.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-10-19 14:52:50 +09:00
Alexander Tobi Fashakin 9a5654435c Add SQLite set up docs (#3568) 2023-10-19 01:26:01 +00:00
Chi Fujii e82aefb9ed Implement free storage in collStats, dbStats and aggregate $collStats (#3594)
Closes #2342.
2023-10-18 23:33:42 +02:00
Patryk Kwiatek f433e25b1f Unskip filter pushdown integration tests (#3605) 2023-10-18 16:14:19 +00:00
Alexey Palazhchenko 6650ab5479 Fix checkcomments test 2023-10-18 20:03:27 +04:00
Patryk Kwiatek ae0bca1575 Implement limit pushdown for PostgreSQL (#3580)
Closes #3416.
2023-10-18 20:03:07 +04:00
Alexey Palazhchenko 0f08f616db Fix tool compilation 2023-10-18 18:49:13 +04:00
Alexey Palazhchenko f1b8354962 Do not skip invalid TODOs (#3597)
Closes #2733.
2023-10-18 18:41:35 +04:00
Alexey Palazhchenko f711ba1780 Crush PNG images 2023-10-18 18:28:28 +04:00
Alexander Tobi Fashakin 30831300ec Add blog post on using Illa Cloud with FerretDB (#3516) 2023-10-18 18:23:00 +04:00
Elena Grahovac 84d054ba3e Implement Collection.Compact for PostgreSQL (#3603)
Closes #3484.
2023-10-18 13:13:05 +00:00
Prabhanjan Vinoda Bharadwaj 0d9e48c85f Add SQLite info to glossary list (#3593)
Closes #3427.
2023-10-18 17:01:31 +04:00
chanon-mike d7493f75f0 Enable linters to accept exclamation marks in headers (#3578) 2023-10-18 10:13:19 +00:00
Alexey Palazhchenko 7243c9c924 Make it easier to run old PG handler (#3598) 2023-10-18 03:22:42 +00:00
Alexey Palazhchenko 65f5d136d5 Add filter pushdown for _id: <string> for SQLite (#3599) 2023-10-18 02:22:16 +00:00
codenoidandAlexey Palazhchenko d8ac329267 Improve /debug page (#3592)
Closes #3583.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-17 17:27:27 +04:00
Patryk Kwiatek a7cc841aae Implement sort pushdown for PostgreSQL (#3504) 2023-10-17 11:46:51 +00:00
krishna sindhurandAlexey Palazhchenko 3d3eb82e6e Check that linked issues are open (#3277)
Closes #2733.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-17 13:09:11 +04:00
Chi Fujii 5034b84b3c Remove done TODO (#3596) 2023-10-17 11:46:53 +04:00
Alexey Palazhchenko a04c27f772 Use stdlib's slices package (#3590) 2023-10-17 11:23:47 +04:00
Alexey Palazhchenko 29402967fc Remove old TODOs (#3595) 2023-10-17 11:23:25 +04:00
codenoidandAlexey Palazhchenko eb63b1101f Integrate Statsviz (#3591)
Closes #3529.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-17 09:05:42 +04:00
Alexey Palazhchenko 6131bf4d21 Do not return stats in Backend.ListDatabases (#3588) 2023-10-17 01:44:59 +00:00
Chi Fujii c3888f1f60 Update dataSize and dbStats integration tests (#3585)
Closes #727.
2023-10-17 10:02:16 +09:00
Chi Fujii 11ae05e6aa Implement indexSizes for collStats (#3575)
Closes #2447.
2023-10-16 16:50:53 +04:00
Chi Fujii b4446936ab Add more data to output of collStats and dbStats (#3538)
Closes #2447.
Closes #3521.
2023-10-16 15:21:49 +04:00
Slava 9d3a3e1ed8 Add tests for insertion of documents with invalid _id fields (#3579) 2023-10-16 19:07:25 +09:00
Alexey Palazhchenko 4685aa7f8a Build arm/v7 .deb and .rpm packages and binaries (#3576) 2023-10-16 06:14:55 +02:00
Sidharth SreejilandAlexey Palazhchenko ff92b037cb Enable Mermaid diagrams in Docusaurus (#3532)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-13 19:33:03 +03:00
Chi Fujii ce4945da53 Add capped collection counts in ServerStatus (#3566)
Closes #2342.
2023-10-13 14:00:18 +00:00
Chi Fujii 90415f4af6 Add more tests and fix bugs for $collStats aggregation stage (#3565)
Closes #2349.
2023-10-13 15:44:55 +02:00
Alexey Palazhchenko 30a1c91d60 Build arm/v7 binaries (#3577) 2023-10-13 12:09:52 +00:00
Alexey Palazhchenko 5d4a0d2d79 Do not create databases during local setup (#3572) 2023-10-13 11:48:37 +00:00
Alexey Palazhchenko 06681c6b90 Change SQLite directory for Docker images (#3571) 2023-10-13 11:27:22 +00:00
Alexey Palazhchenko 633b8274fa Report actual backend name (#3570) 2023-10-13 10:54:45 +00:00
Alexey Palazhchenko 52fe84782d Add basic logging for PostgreSQL backend (#3560) 2023-10-13 13:03:40 +04:00
Patryk Kwiatek f748ba9a9b Fix explain panic for non-existent collection on PostgreSQL (#3541) 2023-10-13 10:39:41 +09:00
Alexey Palazhchenko 1ea4ff41a8 Use self-hosted runner for packages building (#3569) 2023-10-12 16:32:46 +04:00
Slava 4801d37a5f Fix invalid validation for _id field (#3523)
Closes #2804.
2023-10-12 10:50:49 +00:00
Alexey Palazhchenko 29f7fe6418 Use new PostgreSQL backend by default (#3539) 2023-10-12 14:21:04 +04:00
Akhil-2001 2d57d3ff41 Implement Collection.Compact for SQLite (#3536)
Closes #3469.
2023-10-11 22:31:02 +00:00
Chi Fujii 57e283c278 Make collStats calculate collection size accurately for PostgreSQL statistics (#3513)
Closes #3483.
2023-10-11 18:39:56 +00:00
Alexey Palazhchenko d4e74d6420 Crush images (#3561) 2023-10-11 21:29:26 +04:00
Alexander Tobi Fashakin daca6ba6ee Add release blog post for FerretDB v1.12 (#3555) 2023-10-11 17:04:49 +04:00
Alexey Palazhchenko 44ee460fdf Use separate PostgreSQL databases in tests (#3553) 2023-10-11 16:06:26 +04:00
PRINCE JHA 9475382b59 Improve embedded package documentation (#3537)
Closes #2326.
2023-10-11 16:13:37 +09:00
Alexey Palazhchenko d1486f2b5d Prepare v1.12.1 release 2023-10-10 16:15:18 +04:00
Alexey Palazhchenko 6901b7b96a Fix production image building 2023-10-10 15:49:30 +04:00
Alexey Palazhchenko 6a997b4249 Prepare v1.12.0 release 2023-10-10 14:38:57 +04:00
Alexey Palazhchenko 99c646baae Update documentation (#3530) 2023-10-10 14:27:33 +04:00
Elena Grahovac 313f94841c Add info about indexes to dbStats response (#3534)
Closes #3394.
2023-10-10 03:08:33 +00:00
Elena Grahovac 7db2372f0b Make new PostgreSQL backend tests pass (#3522) 2023-10-09 23:19:50 +04:00
Chi Fujii be0f7b6a9c Fix _id restriction in aggregation $project stage (#3508)
Closes #2826.
2023-10-09 17:20:11 +00:00
Elena Grahovac b932d0f6c2 Fix unit tests for indexes (#3531)
Closes #3375.
2023-10-09 17:04:41 +00:00
Alexey Palazhchenko fb130969b8 Add mermaid diagrams (#3524) 2023-10-09 20:06:26 +04:00
Patryk Kwiatek 35f5849b58 Implement filter pushdown for PostgreSQL (#3482)
Closes #3414.
2023-10-09 18:31:31 +04:00
Elena Grahovac 4ac2235479 Fix index name generation (#3511)
Closes #3375.
2023-10-09 13:33:41 +04:00
Alexey Palazhchenko 3502cc0da6 Use Ping for checking connection (#3519) 2023-10-07 09:01:45 +04:00
Alexey Palazhchenko 50fc27d37a Disable auto_vacuum for SQLite (#3496) 2023-10-06 16:10:26 +00:00
Jose Ramon Mañes 40026770c2 Fix typo in contributing documentation (#3507) 2023-10-06 15:47:44 +00:00
Alexey Palazhchenko bfa7300daa Disallow importing handlers code from backends (#3512) 2023-10-06 14:58:02 +00:00
Alexey Palazhchenko ee729a049d Bump Go version (#3510) 2023-10-06 14:07:03 +00:00
Alexander Tobi Fashakin 85673bf45f Fix blog post formatting (#3515) 2023-10-06 16:42:20 +04:00
Alexey Palazhchenko ae1c2019ae Tweak tests timeouts (#3514) 2023-10-06 16:38:13 +04:00
Alexey Palazhchenko c52cfc2c5c Add TODOs for capped collections (#3461) 2023-10-06 16:32:39 +04:00
Elena Grahovac 360e1474a0 Implement CreateIndexes, DropIndexes, ListIndexes (#3468)
Closes #3394.
Closes #3397.
Closes #3399.
2023-10-06 10:25:20 +00:00
Chi Fujii 177a7ae16c Implement collection.Stats (#3478)
Closes #3389.
2023-10-06 09:34:21 +00:00
Alexander Tobi Fashakin e5b58eacd0 Improve definitions for aggregation stages (#3499) 2023-10-06 18:08:17 +09:00
PRINCE JHA e5e2485df5 Relax restrictions when _id is not the first field in projection (#3491)
Closes #2826.
2023-10-05 15:53:50 +00:00
Elena Grahovac f1a1b5be6d Store indexes metadata (#3434)
Closes #3375.
2023-10-05 19:12:48 +04:00
Alexey Palazhchenko 3e69f59208 Fix concurrent Docker builds (#3503) 2023-10-05 15:55:30 +04:00
Rohit ChaudhariandAlexander Tobi Fashakin 2ee74c8b77 Added Operation mode in Glossary.md (#3472)
Co-authored-by: Alexander Tobi Fashakin <alexander.fashakin@ferretdb.io>
2023-10-05 10:16:53 +00:00
Alexey Palazhchenko 77409eb35e Fix stress tests (#3502) 2023-10-05 14:01:21 +04:00
Alexey Palazhchenko a2f93bc6bc Extract ReservedPrefix constant (#3497) 2023-10-05 10:45:39 +02:00
Alexey Palazhchenko 0a56f5ba7c Add RecordID to types.Document (#3495) 2023-10-05 07:39:09 +00:00
Azal KhaledandAlexander Tobi Fashakin f9f5e9a6dc Add $project and $unset to aggregation stages section (#3450)
Co-authored-by: Alexander Tobi Fashakin <tobyton2008@yahoo.co.uk>
2023-10-04 14:19:42 +00:00
Chi Fujii d05546d224 Revive logic for lower cased key for collection name (#3494)
Closes #2786.
2023-10-04 12:46:14 +00:00
Chi Fujii 68ac650571 Implement database.Stats (#3464)
Closes #3402.
2023-10-04 14:23:00 +04:00
Patryk Kwiatek bc7888e11e Implement explain for new postgresql backend (#3465) 2023-10-04 03:24:39 +00:00
Teej4y 25ea2df8a5 Process collection name param using collection tag (#3476)
Closes #2786.
2023-10-04 07:06:45 +04:00
Alexey Palazhchenko 531f91c3a1 Add stubs for Collection.Compact (#3485) 2023-10-03 13:48:40 +04:00
Alexey Palazhchenko dd6e9ddb18 Add a workaround for Docker build failures (#3480) 2023-10-02 14:25:26 +04:00
Alexey Palazhchenko 2c8d2b641d Fix running a subset of tests (#3479) 2023-10-02 13:08:46 +04:00
Alexey Palazhchenko 85626b859f Build arm64 binaries and packages (#3477) 2023-10-02 11:25:08 +04:00
Alexey Palazhchenko b9c8dd8161 Speed-up Docker image building (#3470)
Closes #2179.
2023-10-02 09:18:07 +04:00
Alexander Tobi Fashakin b10af0a822 Add blog post on Enmeshed (#3448) 2023-09-29 17:23:30 +04:00
Alexey Palazhchenko a25c3a7e3d Add tests for backends contract (#3456) 2023-09-29 11:36:25 +04:00
Alexey Palazhchenko 1182de2cd8 Tweak SQLite backend tests (#3460) 2023-09-29 01:52:01 +00:00
Chi Fujii 3572f9b1b4 Implement ListCollections, CreateCollection and DropCollection (#3444)
Closes #3406.
2023-09-28 16:06:47 +00:00
Alexey Palazhchenko 5a6881d812 Remove unused expected failures (#3455) 2023-09-28 15:42:28 +00:00
Alexey Palazhchenko 437aeed18c Run tests with envtool tests run (#3453) 2023-09-28 14:57:31 +00:00
Chi Fujii a29e4fb87d Implement UpdateAll (#3449)
Closes #3391.
2023-09-28 14:25:15 +00:00
Chi Fujii 490c8f62c0 Implement DropDatabase and Status (#3451)
Closes #3404.
2023-09-28 14:09:39 +00:00
Alexander Tobi Fashakin 7efc2650a7 Republish Hacktobest blog post (#3429) 2023-09-28 16:41:43 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 4db6de2de8 Fix RSS feed issue with images (#3417)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-28 16:22:08 +04:00
Patryk Kwiatek bdffc74bc7 Mark pushdown results based on tested backend (#3446)
Closes #3235.
2023-09-28 16:19:42 +04:00
Wojciech Kropidlowski 8788b9212f Verify that client metadata not being mutated (#3194)
Closes #2989.
2023-09-28 09:21:11 +00:00
Chi Fujii 7ca090ff2c Fix fluky RenameCollection tests (#3438)
Closes #3409.
2023-09-28 09:04:17 +00:00
Alexey Palazhchenko ff4a3b6a80 Remove extra function (#3447) 2023-09-28 06:05:10 +00:00
Chi Fujii b7a6330574 Implement DeleteAll (#3441)
Closes #3400.
2023-09-27 17:05:47 +00:00
Chi Fujii 6b5b4f1fc2 Implement InsertAll for PostgreSQL (#3419)
Closes #3395.
2023-09-27 18:42:50 +02:00
Elena Grahovac 71496413dd Implement validation for createIndexes and dropIndexes commands for SQLite (#3373)
Closes #3320.
2023-09-27 02:46:55 +00:00
Alexey Palazhchenko 01bbf29e3d Bump deps (#3437) 2023-09-26 20:54:41 +04:00
Alexander Tobi Fashakin f94090267d Add release blog post for FerretDB v1.11.0 (#3439) 2023-09-26 17:19:25 +04:00
Alexey Palazhchenko 0703337e8d Implement RenameCollection (#3440)
Closes #3393.
2023-09-26 17:05:26 +04:00
Alexey Palazhchenko 606e326cbd Add SAP HANA backend stub (#3433) 2023-09-26 14:07:09 +04:00
Alexey Palazhchenko 6ef88d0812 Fix CI configuration and add TODOs (#3436) 2023-09-26 13:13:37 +04:00
Alexey Palazhchenko 895ad868ef Add CI configurations (#3423) 2023-09-25 21:59:23 +04:00
Mihai Țimbota-Belin e7cf6303d0 Implement metrics collection for PostgreSQL backend (#3430)
Closes #3392.
2023-09-25 16:57:15 +00:00
Alexey Palazhchenko 46f2b8af06 pngcrush images 2023-09-25 19:43:10 +04:00
Alexander Tobi Fashakin 352925e8fa Add blog post on Using MajorM as MongoDB GUI for FerretDB (#3387) 2023-09-25 19:37:59 +04:00
Alexander Tobi Fashakin 15cd43f914 Update writing guide (#3424) 2023-09-25 19:27:30 +04:00
Alexey Palazhchenko b8f85e605e Prepare v1.11.0 release 2023-09-25 14:47:42 +04:00
Chi Fujii dabbeb3321 Implement Query in new PostgreSQL backend (#3411)
Closes #3388.
2023-09-22 15:19:53 +02:00
Alexey Palazhchenko d976d8c579 Run new PostgreSQL backend tests (#3407)
Closes #3126.
2023-09-22 09:22:33 +04:00
Alexey Palazhchenko 1813a6b766 Add TODOs (#3412) 2023-09-22 09:21:55 +04:00
Chi Fujii 4e6b8691f4 Store PostgreSQL metadata (#3356)
Closes #3335.
2023-09-21 21:57:47 +04:00
Peter Farkas 02ae206a4c Mention SQLite in docs (#3408) 2023-09-21 16:56:14 +03:00
Chi Fujii 0496e21080 Reorder codebase in SQLite registry (#3382) 2023-09-21 09:27:10 +00:00
Alexander Tobi Fashakin f98a6f6c3c Add docs for migrating to MongoDB from FerretDB (#3374)
Closes #3229.
2023-09-21 12:59:48 +04:00
Alexey Palazhchenko 33cdbc4eba Enforce valid types usage (#3384) 2023-09-21 08:53:31 +00:00
Alexey Palazhchenko 05747ae727 Add CI configuration for SQLite without pushdown (#3381) 2023-09-20 20:27:54 +04:00
Alexey Palazhchenko 8a2a098e58 Add small tweaks (#3377) 2023-09-20 08:34:21 +00:00
Elena Grahovac 8425016692 Return statistics of indexes for collStats and dbStats for SQLite backend (#3361)
Closes #3293.
2023-09-20 12:12:56 +04:00
Alexey Palazhchenko c844bccc1d Remove the need to close conninfo (#3376) 2023-09-19 09:34:42 +00:00
Elena Grahovac 9f8f895b9a Fix metadata updates for dropIndexes (#3358)
Closes #3328.
Closes #3366.
2023-09-18 14:06:12 +04:00
Teej4y 1cdf743661 Replace deprecated Jaeger exporter (#3368)
Closes #3341.
2023-09-18 05:45:46 +00:00
Chi FujiiandAlexey Palazhchenko 58772a7a6a Use filter and insert more documents in BenchmarkReplaceSettingsDocument (#3343)
Closes #2340.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-18 09:24:04 +04:00
Alexey Palazhchenko 05fd6a8633 Add a blog post for v1.10 (#3346) 2023-09-15 08:49:06 +00:00
Alexey Palazhchenko 22de2805f4 Use consistent spelling (#3365) 2023-09-15 08:03:42 +00:00
Chi Fujii 8c9b68198d Fix collStats to return correct count of documents for SQLite (#3363)
Closes #3355.
2023-09-15 11:36:10 +04:00
Alexey Palazhchenko 19f0906df3 Recreate test directory (#3364)
Closes #3362.
2023-09-15 06:50:24 +00:00
Alexander Tobi Fashakin ecf2b6577e Improve blog format (#3359) 2023-09-15 10:21:36 +04:00
Patryk Kwiatek 1c9cc3a311 Add test for inserting different data types (#3345)
Closes #3235.
2023-09-15 05:08:10 +00:00
Alexey Palazhchenko c8c8ee26d3 Remove broken arm/v6 Docker images 2023-09-14 16:39:57 +04:00
Alexey Palazhchenko 8a59caa25b Prepare v1.10.0 release 2023-09-14 16:09:22 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 95b232aa01 Update category links in writing guide (#3323)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-14 15:56:13 +04:00
Alexey Palazhchenko df2754959c Build Docker images for arm/v6 (#3357)
Closes #3354.
2023-09-14 12:44:17 +04:00
Elena Grahovac 3681c4c063 Return correct response if unique index violation happened on SQLite backend (#3353)
Closes #3183.
2023-09-14 11:17:31 +09:00
Elena Grahovac 481bc96541 More accurate handling of params for dropIndexes implementation for SQLite (#3350)
Closes #3287.
2023-09-13 12:31:58 +02:00
82c19191d7 Implement dropIndexes for SQLite (#3329)
Closes #3287.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-09-13 10:04:53 +04:00
Teej4y 8faca75cef Do not ConsumeValues in the $group aggregation stage (#3344)
Closes #2863.
2023-09-12 12:35:43 +00:00
Chi FujiiandAlexey Palazhchenko ee5304e131 Add more tests (#3336)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-11 22:25:28 +04:00
Alexey Palazhchenko a459ba5813 Update blog authors (#3338) 2023-09-11 15:59:05 +04:00
Chi Fujii ee5e0e8217 Support _id implicit filter for ObjectID in SQLite (#3330)
Closes #2340.
2023-09-11 10:27:25 +00:00
b1ron 17aed11e93 Document how to test for compatibility (#3268)
Closes #3242.
2023-09-11 11:25:25 +04:00
Elena GrahovacandAlexey Palazhchenko 684177a064 Implement createIndexes for SQLite (#3304)
Closes #3176.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-11 00:47:45 +04:00
Alexey Palazhchenko 4af1da0318 Add new PostgreSQL backend stub (#3319) 2023-09-10 17:06:05 +04:00
Chi Fujii 1871dc90e8 Implement renameCollection for SQLite (#3321)
Closes #2760.
2023-09-08 09:45:41 +00:00
Elena Grahovac b032cd71e6 Implement listDatabases for SQLite (#3269)
Closes #3260.
2023-09-08 15:00:57 +09:00
Alexey Palazhchenko f3c46220b8 Remove Database.Close (#3327) 2023-09-08 08:40:35 +04:00
Alexey Palazhchenko fb91ab141c Use pkgsite instead of godoc (#3326) 2023-09-07 20:58:28 +04:00
Alexey Palazhchenko f10ed5a904 Use Go 1.21 (#3324) 2023-09-07 19:26:31 +04:00
Alexey Palazhchenko 82bca28341 Add backend decorators and OpLog stub (#3303) 2023-09-07 15:30:17 +04:00
Chi Fujii 9669f0f719 Add tests for $bit update operator (#3315)
Closes #821.
2023-09-07 06:50:31 +00:00
Elena Grahovac 586e27b062 Support listIndexes for SQLite backend (#3301)
Closes #3175.
2023-09-07 09:59:43 +09:00
Alexander Tobi Fashakin 91ddcc9306 Update the writing guide (#3311) 2023-09-06 16:34:53 +04:00
Chi Fujii 1f62ae4cff Implement serverStatus and dataSize commands for SQLite (#3316)
Closes #2775.
2023-09-06 11:57:06 +00:00
Chi Fujii ed54533eef Implement findAndModify for SQLite (#3302)
Closes #3049.
2023-09-06 10:55:49 +00:00
Chi Fujii 128fa84b08 Skip tests for enable setFreeMonitoring for MongoDB (#3318) 2023-09-06 14:38:44 +04:00
Alexey Palazhchenko 302ef223b6 pngcrush new images 2023-09-06 12:53:48 +04:00
Alexander Tobi Fashakin de1cc3faac Add blog post on "Using PgManage as PostgreSQL GUI Admin for FerretDB" (#3249) 2023-09-06 12:46:58 +04:00
Alexey Palazhchenko 7fe8ece598 Tweak MongoDB initialization process (#3307) 2023-09-06 09:00:58 +04:00
Teej4y bb446c5efa Support $bit bitwise update operator (#3266)
Closes #821.
2023-09-05 22:27:39 +04:00
Alexey Palazhchenko 1262111c66 Clean-up *types.Timestamp a bit (#3305) 2023-09-05 12:53:53 +04:00
Chi Fujii 4e8aba94ae Implement collStats for SQLite (#3295)
Closes #3259.
2023-09-04 14:52:28 +04:00
Alexey Palazhchenko 76c3b68715 Do not change search_path parameter (#3299) 2023-09-04 07:48:20 +00:00
Patryk Kwiatek e3774a9b57 Implement explain command for SQLite (#3264)
Closes #3050.
2023-09-04 04:55:26 +00:00
Elena Grahovac 122a57c0e6 Implement getLog for SQLite (#3279)
Closes #3261.
2023-09-04 08:27:33 +04:00
Chi Fujii 65db99f136 Add backend interface for collStats (#3294)
Closes #3259.
2023-09-01 14:38:32 +04:00
Alexey Palazhchenko de672528e6 Make updates atomic for SQLite (#3296)
Closes #3079.
2023-09-01 10:53:15 +09:00
Chi Fujii 2be310a4b1 Implement dbStats for SQLite (#3270)
Closes #3259.
2023-08-31 14:22:21 +04:00
Alexey Palazhchenko 37c183ea7d Make registry return full collection info (#3292) 2023-08-31 09:04:22 +02:00
Alexey Palazhchenko bdfdace4ca Make deletes atomic for SQLite (#3291)
Closes #3085.
2023-08-31 07:48:56 +04:00
Alexey Palazhchenko 8548d92874 Expand architecture docs, add comments (#3288) 2023-08-30 21:20:51 +04:00
athkishore d7f31ea91f Update deb.md - minor grammar correction (#3289) 2023-08-30 21:20:27 +04:00
Alexey Palazhchenko c2e5228441 Add tests for validation bug (#3286) 2023-08-30 17:49:14 +04:00
Alexey Palazhchenko a6591d29db Bump deps (#3284) 2023-08-30 11:41:38 +00:00
Alexey Palazhchenko 25770735c7 pngcrush images 2023-08-30 15:24:38 +04:00
Alexander Tobi Fashakin ef0d5e81da Add release blog post on FerretDB v1.9.0 (#3274) 2023-08-30 15:18:29 +04:00
krishna sindhur c8681a72d0 Add ability to freeze *types.Document and *types.Array (#3253)
Closes #3112.
2023-08-30 13:26:39 +04:00
Alexey Palazhchenko b16fe1f85d Support ordered inserts for SQLite (#3223)
Closes #2750.
2023-08-30 06:06:27 +00:00
Chi Fujii 0f9101721b Add backend interface used by dbStats (#3267)
Closes #3259.
2023-08-30 04:36:21 +00:00
Alexey Palazhchenko e9f6e90af0 Add transactions to fsql (#3278) 2023-08-30 10:34:56 +09:00
Chi Fujii 2e847f06d2 Implement distinct for SQLite (#3265)
Closes #3157.
2023-08-29 09:44:54 +00:00
Chi Fujii 43b5a56d73 Implement aggregate for SQLite (#3256)
Closes #3148.
2023-08-29 11:18:13 +02:00
Alexey Palazhchenko 7d4a15e416 Simplify and deprecate commonerrors.WriteErrors (#3258)
Closes #2750.
2023-08-29 09:41:32 +04:00
Patryk Kwiatek eccf40de45 Update TODO comments (#3262) 2023-08-29 04:43:13 +00:00
Chi Fujii e0b4073216 Update blog writing guide documentation (#3209) 2023-08-28 15:58:14 +04:00
Chi Fujii 7457c98e40 Remove duplicated $expr tests (#3255) 2023-08-28 15:51:08 +04:00
Chi Fujii 62809bb18e Add tests for accessing aggregation variable $$ROOT field (#3254)
Closes #1992.
2023-08-28 15:49:31 +04:00
Alexey Palazhchenko a2fa17548d Prepare v1.9.0 release 2023-08-28 14:46:58 +04:00
Patryk Kwiatek a71936d844 Cleanup SQLite tests (#3246)
Closes #3131.
2023-08-25 17:54:37 +04:00
Alexey Palazhchenko 6601d821d8 Add new PostgreSQL backend stub (#3251) 2023-08-25 15:43:28 +04:00
Patryk Kwiatek 13240bfea2 Refactor aggregation accumulators (#3203)
Closes #3129.
2023-08-25 14:39:55 +04:00
Alexey Palazhchenko 2b1b75d05b Publish Docker images on quay.io (#3250) 2023-08-24 21:37:50 +04:00
Alexander Tobi Fashakin 12315f8636 Add Civo Navigate event blog post (#3201) 2023-08-24 16:29:22 +04:00
Alexey Palazhchenko 73cba72185 Simplify commonerrors package (#3227) 2023-08-24 16:01:04 +04:00
krishna sindhurandKrishnaSindhur 093be9878f Add linter for issue comments (#3154)
Closes #2733.

Co-authored-by: KrishnaSindhur <krishnasindhur@gmail.com>
2023-08-24 15:52:27 +04:00
Alexey Palazhchenko 3d33c03c3e Bump deps (#3248) 2023-08-24 12:33:05 +04:00
Alexey Palazhchenko 2f55169b7d Add stubs for explain (#3236)
Closes #3050.
2023-08-23 15:40:52 +04:00
Slava a78b98a4fe Add more metrics for *sql.DB (#3230)
Closes #2909.
2023-08-23 15:38:52 +04:00
Alexey Palazhchenko 7049116c74 Update issue links (#3234)
Closes #3161.
2023-08-22 16:29:22 +04:00
Alexey Palazhchenko c3925166d2 Add stubs for renameCollection (#3233)
Closes #2760.
2023-08-22 16:28:28 +04:00
Alexander Tobi Fashakin 36ce153cd3 Add Postgres Ibiza event blog post (#3210) 2023-08-18 17:21:40 +04:00
Alexander Tobi Fashakin 862d9fee7a Add blogpost on Leafcloud (#3153) 2023-08-18 17:20:41 +04:00
Patryk Kwiatek ed077f3d1c Refactor aggregation operators (#3188) 2023-08-18 11:14:38 +04:00
Alexey Palazhchenko 30dc9fca5d Fix concurrent SQLite tests (#3222)
Closes #3172.
2023-08-17 20:24:41 +00:00
Palakurthi Durga Kiran KumarandAlexey Palazhchenko 39e53edff6 Improve building with test coverage information (#3059)
Closes #2102.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-08-17 15:11:57 +00:00
Patryk KwiatekandAlexey Palazhchenko f1f284ea30 Add another stress test for SQLite (#3195)
Closes #3172.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-08-17 12:34:21 +00:00
Alexey Palazhchenko a35f4e1a66 Make the writing guide accessible but unlisted (#3221) 2023-08-17 15:45:37 +04:00
Alexey Palazhchenko 31078f4c82 Bump deps (#3215) 2023-08-17 11:26:31 +00:00
Pratik Mota 515a964490 Fix typos in documentation (#3217) 2023-08-17 10:56:28 +00:00
aenkya 76e3b2e9c8 Update go-hdb to v1.4.1 (#3213)
Closes #3211.
2023-08-17 07:51:06 +04:00
Alexey Palazhchenko 57d71489b2 Fix settings.yml syntax 2023-08-16 09:00:12 +04:00
Alexey PalazhchenkoandYaroslav Sizikov 07d3085a4d Configure repo settings with files (#3208)
Closes #1172.

Co-authored-by: Yaroslav Sizikov <ya.sizkov@gmail.com>
2023-08-16 08:53:11 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko f4c5a78102 Add blog post for FerretDB v1.8.0 (#3198)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-08-15 14:17:09 +04:00
Alexey Palazhchenko 0aceab5d9a Prepare v1.8.0 release 2023-08-14 14:53:23 +04:00
Chi Fujii 911d58349e Add tests for $$ROOT (#3187)
Closes #1992.
2023-08-11 10:31:43 +02:00
Chi Fujii 74844b1c0f Do not return immutable _id error from findAndModify for upserting same _id (#3171)
Closes #2803.
2023-08-10 21:37:12 +00:00
Patryk KwiatekandElena Grahovac cdd2f829dd Make update integration tests pass for SQLite (#3184)
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
2023-08-10 16:58:26 +02:00
Patryk Kwiatek 4384a3ecf1 Make getMore integration tests pass for SQLite (#3174) 2023-08-10 16:37:55 +02:00
Chi Fujii cc3e3ff25f Add tests for $$ROOT aggregation expression variable (#3180)
Closes #1992.
2023-08-10 08:05:47 +00:00
Patryk Kwiatek 65a4379132 Make index integration tests pass for SQLite (#3185) 2023-08-10 07:52:17 +00:00
Patryk Kwiatek 46897b4f99 Make findAndModify integration tests pass for SQLite (#3173) 2023-08-10 07:38:21 +00:00
Patryk Kwiatek f00c4d7f41 Make query integration tests pass for SQLite (#3182) 2023-08-10 10:29:21 +09:00
Chi Fujii 9a77e92eb0 Implement $expr query operator (#3163)
Closes #414.
2023-08-09 13:16:42 +02:00
Patryk Kwiatek b2aa1d319a Make aggregate documents compat tests pass for SQLite (#3150) 2023-08-08 08:34:02 +02:00
Chi Fujii 658b8e23a9 Use one implementation for finding path values (#3087)
Closes #2348.
2023-08-04 14:26:04 +04:00
Alexey Palazhchenko 60ae858f10 Use lock for SQLite metadata (#3146)
Closes #2747.
2023-08-03 21:29:32 +00:00
Patryk Kwiatek c90c01c4d1 Make distinct and explain command integration tests pass for SQLite (#3159) 2023-08-03 20:19:59 +00:00
Alexey Palazhchenko 5680884bd9 Simplify tests a bit (#3149) 2023-08-03 18:33:07 +00:00
Chi Fujii 89de046fe9 Implement $group stage _id expression (#3138)
Closes #2165.
2023-08-03 17:36:23 +02:00
Patryk Kwiatek cb8a799736 Make aggregate stats integration tests pass for SQLite (#3151) 2023-08-03 13:34:25 +00:00
Alexey Palazhchenko 957a563232 Bump deps, including Go (#3160) 2023-08-03 17:14:27 +04:00
Patryk Kwiatek 58fc918739 Make administration command integration tests pass for SQLite (#3152) 2023-08-03 15:04:04 +02:00
Alexey Palazhchenko 7809e6ef73 Expect some aggregate and insert tests to fail for SQLite (#3147) 2023-08-02 15:03:22 +04:00
Alexey Palazhchenko eb84addbcd Improve MongoDB/FerretDB error checking in tests (#3143) 2023-08-02 08:19:16 +00:00
Alexey Palazhchenko 9673b2d951 Bump deps (#3142) 2023-08-01 14:14:44 +02:00
Alexey Palazhchenko 1bc1488554 Cache SQLite tables metadata (#3124)
Closes #2747.
2023-07-31 16:12:59 +04:00
Alexey Palazhchenko e6f325f5c7 Prepare v1.7.0 release (#3132) 2023-07-31 14:56:35 +04:00
Patryk Kwiatek 66304b785b Support recursive operator calls for $sum aggregation accumulator (#3116) 2023-07-31 09:10:17 +00:00
Alexey Palazhchenko 48dad105f7 Fix blog post date 2023-07-28 15:51:11 +04:00
Alexey Palazhchenko 8c7ae89d85 Crush PNG images 2023-07-28 15:49:07 +04:00
Alexander Tobi FashakinandElena Grahovac e6e791eb82 Add blog post on Grafana Monitoring for FerretDB (#3106)
Closes FerretDB/engineering#77.

Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-07-28 15:48:10 +04:00
Alexey Palazhchenko fb189e8414 Tweak and document SQLite URI parameters (#3128)
Closes #3084.
2023-07-28 14:20:45 +04:00
Alexey PalazhchenkoandChi Fujii 972aa85167 Backport v1.6.1 fixes (#3107)
Closes #3113.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-07-27 14:39:29 +04:00
Alexey Palazhchenko 16d53f4ec7 Add basic metrics, logging and tracing for SQLite (#3123)
Closes #2909.
2023-07-27 11:32:35 +02:00
a398e3129d Validate database and collection names for SQLite handler (#2868)
Co-authored-by: Dmitry <dmitry.eremenko@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>

Closes #2749.
2023-07-26 18:52:51 +04:00
Alexey Palazhchenko ee41035602 Tweak blog post formatting 2023-07-26 17:59:08 +04:00
dependabot[bot] a5b79007cb Bump the tools group in /tools with 1 update (#3109)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-26 17:37:31 +04:00
Peter Farkas 16e700f118 Update MongoDB comparision blog post (#3119) 2023-07-26 17:23:06 +04:00
Peter Farkas ffc5c2e10c Update MongoDB comparision blog post (#3117) 2023-07-26 16:58:23 +04:00
Alexey Palazhchenko d422a4f3f1 Update changelog 2023-07-26 15:01:59 +04:00
Patryk Kwiatek 777222a290 Support _id aggregation operators for $group stage (#3096) 2023-07-26 01:42:24 +00:00
Elena Grahovac 19e1cdbfde Add daily progress principle to PROCESS.md (#3098) 2023-07-24 18:20:16 +00:00
Alexey Palazhchenko 192491358c Simplify checkdocs linter (#3104)
Closes #3078.
2023-07-24 22:06:30 +04:00
Wojciech Kropidlowskiandnoisersup c4b09c3aeb Add validating max nested document/array depth (#2882)
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2023-07-24 15:53:26 +00:00
Alexander Tobi Fashakin bb934e05fb Add blog post on "Using Mingo with FerretDB" (#3074) 2023-07-24 19:39:28 +04:00
krishna sindhur 76578f5988 Improve checkdocs linter (#3095)
Closes #3078.
2023-07-24 16:44:34 +04:00
b1ron 253c72f6ad Fix PLAIN auth with C# driver (#3012)
Closes #2516.
2023-07-24 16:28:08 +04:00
Alexander Tobi Fashakin bac7da5bd4 Update tags formatting in writing guide (#3097)
Closes #2847.
2023-07-24 10:48:35 +04:00
Patryk Kwiatek 68e566344e Replace test doubles with constants (#3024) 2023-07-24 10:46:10 +04:00
Alexey Palazhchenko 110cfa0d37 Allow to change SQLite URI in tests (#3092) 2023-07-20 20:31:05 +04:00
Alexey Palazhchenko a17dccf4b5 Remove dead code (#3093) 2023-07-20 20:30:40 +04:00
Alexander Tobi Fashakin eb5addc316 Update Blog Post (#3086) 2023-07-20 09:29:54 +04:00
Alexey Palazhchenko 2f80b0f541 Do not import commonerrors in tests (#3081) 2023-07-20 01:57:56 +00:00
Chi Fujii 4d534d602e Implement $sum aggregation standard operator (#3063)
Closes #2680.
2023-07-19 19:03:02 +02:00
Alexander Tobi Fashakin 9ac03afb02 Add blog post on "Community matters: fireside chat with Artem Ervits, CockroachDB" (#3066) 2023-07-19 18:09:29 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko c9ec84a739 Tweak documentation and blog (#2992)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-07-19 14:11:44 +04:00
Alexander Tobi Fashakin 3e99c38565 Update blog post for FerretDB v1.6.0 (#3073) 2023-07-19 13:45:46 +04:00
Aditya salunkheandAlexey Palazhchenko f4d396e098 Merges fuzztool into envtool (#2645)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-07-19 09:57:11 +02:00
quasilyte 4106994cb0 Improve sjson package fuzzing (#3071)
Previously, only FuzzDocument was reaching the marshal+unmarshal
steps due to the document type assertion. If it wasn't a documentType,
the rest of the fuzzing function was skipped.

Since data validation is available only via `types.Document.ValidateData`,
a helper `isValidDocumentData` function is introduced. It may go
away in the future. But for now, it allows all sjson types to pass
the validation.

The other change is related to the way we fuzz sjson.
Instead of generating both values and schemes at the same time,
focus on one thing at the time: a fixed scheme against the generated
and fixed documents against the generated schemes.

This approach can be further improved by the increased number
of relevant corpus seed entries, but that's a different issue (#3067).

To answer the question is it any better: yes, it is.
The old approach skipped any cases where either of those two
was invalid; it was a very rare occasion for a fuzz runner
to generate a valid JSON for both document and scheme.
It's even more rare to get both of them even remotely compatible.

Closes #1273
2023-07-19 07:07:35 +00:00
Alexey Palazhchenko fbe7748d57 Update changelog (#3072) 2023-07-19 10:06:48 +04:00
Alexey Palazhchenko 873e07a212 Mark some tests as failing for SQLite (#3051) 2023-07-18 12:48:16 +00:00
Alexey Palazhchenko c5f38c1d8e Bump deps (#3064) 2023-07-18 07:31:53 +00:00
Alexander Tobi Fashakin 93944d62b5 Add blog post for FerretDB v1.6.0 (#3058) 2023-07-17 22:21:21 +04:00
Alexey Palazhchenko 2b469b4659 Prepare v1.6.0 release (#3056) 2023-07-17 16:54:03 +04:00
Chi Fujii fed08e6172 Clean up integration test provider setup (#3052)
Closes #2184.
2023-07-17 11:55:32 +00:00
Chi Fujii 70f33edca9 Fix update with query operator for upsert option (#3028)
Closes #2945.
2023-07-14 08:47:20 +00:00
Alexey Palazhchenko 21f9faf755 Ignore count.fields argument (#3048) 2023-07-14 07:19:54 +00:00
Chi Fujii c6eccb44f5 Remove Type() interface from aggregation stage (#3045)
Closes #2423.
2023-07-14 01:37:50 +00:00
b1ron 1352a471a6 Update database naming restrictions (#3042) 2023-07-13 14:08:57 +00:00
Alexey Palazhchenko 4bab468f42 Fix blog post formatting (#3047) 2023-07-13 17:49:14 +04:00
Alexander Tobi Fashakin 8622e585b6 Add blog post on "How to run FerretDB on top of StackGres" (#2869) 2023-07-13 17:38:01 +04:00
b1ronandAlexander Tobi Fashakin 8e2abca349 Add a note about setting the stable API version (#3035)
Co-authored-by: Alexander Tobi Fashakin <tobyton2008@yahoo.co.uk>
2023-07-13 12:50:44 +00:00
Alexey Palazhchenko 2540a9fabc Bump deps (#3034) 2023-07-12 09:39:55 +02:00
Alexey Palazhchenko a718823d9b Fix error checking in backend contracts (#3031) 2023-07-12 05:51:38 +00:00
Alexey Palazhchenko f38331f74d Fix killCursors edge case (#3030)
Closes #1514.
2023-07-12 05:35:04 +00:00
Chi Fujii f5deeb7288 Apply pushdown for limit (#2993)
Closes #2921.
2023-07-11 18:09:23 +00:00
Alexey Palazhchenko 9fc79b630e Expect renameCollection tests failures (#3007) 2023-07-11 17:47:23 +02:00
Alexander Tobi Fashakin 0c0f463966 Update blog post image (#3029) 2023-07-11 16:54:07 +04:00
Chi Fujii 19cf543057 Unskip findAndModify $set integration test for _id (#3025)
Closes #2741.
2023-07-11 10:30:11 +00:00
Chi Fujii d4af935d77 Update closed issue links (#3027) 2023-07-11 10:10:01 +00:00
Chi Fujii e834ee5177 Implement getParameters for authenticationMechanisms and featureCompatibilityVersion (#2985)
Closes #2822.
2023-07-11 07:58:11 +00:00
Alexey Palazhchenko db7fecf6e2 Make task all run only unit tests (#3023) 2023-07-11 07:38:06 +00:00
Alexey Palazhchenko c31e595492 Move logout to commoncommands (#3019) 2023-07-11 02:46:49 +00:00
Alexey Palazhchenko 8b32b84b3b Move testutil.TB to testtb.TB (#3022) 2023-07-11 00:56:32 +00:00
Alexey Palazhchenko 7f4d831cda Update issue URL (#3021) 2023-07-10 16:09:45 +00:00
Chi Fujii d50e794f4b Fix $set operator for updating _id (#3009)
Closes #2803.
2023-07-10 15:29:37 +00:00
quasilyte 7d70c74d68 Remove double decoding in unmarshalSingleValue
Remove double decoding in unmarshalSingleValue()

The callers of unmarshalSingleValue() always unmarshal
the inputs of this function into `json.RawMessage`.

These `json.RawMessage` contain valid JSON data
that can be parsed directly. Doing an Unmarshal of
`json.RawMessage` into `json.RawMessage` looks confusing
and not very useful.

This change is mostly about readability and code clarity.

As a side note, it also improves `sjson` unmarshalling performance.

    name                             old time/op    new time/op    delta
    Array/array_all/UnmarshalJSON-8    34.6µs ± 1%    21.7µs ± 1%  -37.36%  (p=0.000 n=10+9)
    Document/all/UnmarshalJSON-8        120µs ± 0%      77µs ± 1%  -36.04%  (p=0.000 n=9+10)
    [Geo mean]                         64.5µs         40.8µs       -36.70%

    name                             old speed      new speed      delta
    Array/array_all/UnmarshalJSON-8  1.62MB/s ± 1%  2.58MB/s ± 1%        ~  (p=0.000 n=10+9)
    Document/all/UnmarshalJSON-8     2.15MB/s ± 1%  3.37MB/s ± 1%  +56.37%  (p=0.000 n=9+10)
    [Geo mean]                       1.87MB/s       2.95MB/s       +57.97%

    name                             old alloc/op   new alloc/op   delta
    Array/array_all/UnmarshalJSON-8    41.4kB ± 0%    22.0kB ± 0%  -46.92%  (p=0.000 n=10+10)
    Document/all/UnmarshalJSON-8        117kB ± 0%      62kB ± 0%  -46.89%  (p=0.000 n=10+10)
    [Geo mean]                         69.6kB         37.0kB       -46.91%

    name                             old allocs/op  new allocs/op  delta
    Array/array_all/UnmarshalJSON-8       184 ± 0%       119 ± 0%  -35.33%  (p=0.000 n=10+10)
    Document/all/UnmarshalJSON-8          580 ± 0%       374 ± 0%  -35.52%  (p=0.000 n=10+10)
    [Geo mean]                            327            211       -35.42%
2023-07-10 14:47:19 +00:00
b1ron c35473a3e3 Ignore lsid field in all commands (#3010) 2023-07-10 14:05:42 +00:00
Alexey Palazhchenko c8e3fd1717 Crush PNG files to make them smaller (#3020) 2023-07-10 17:20:10 +04:00
Alexander Tobi Fashakin 7286b18c2d Add blog post about using NoSQLBooster with FerretDB (#2962) 2023-07-10 13:06:13 +00:00
Chi Fujii eb2943e67f Add MongoDB integration tests for maxTimeMS in find, aggregate and getMore (#2953)
Closes #1808.
2023-07-10 11:58:44 +02:00
Patryk Kwiatek 040b9eda40 Implement ping command for SQLite (#2965) 2023-07-07 15:33:27 +00:00
Alexey Palazhchenko ea31cf5200 Remove Tigris from tests (#3002)
Closes #2253.
2023-07-06 14:53:46 +00:00
Alexey Palazhchenko 5ee5a5b147 Remove Tigris code (#3001) 2023-07-06 15:22:46 +02:00
Alexey Palazhchenko 33e56119d2 Remove Tigris from documentation and builds (#2999) 2023-07-06 14:46:25 +02:00
Alexey Palazhchenko 265d72e739 Bump deps (#2998) 2023-07-06 14:46:05 +02:00
Alexey Palazhchenko 708d90a7b5 Implement killCursors command (#2939)
Closes #1514.
2023-07-06 10:24:20 +02:00
Alexey Palazhchenko 6b1a0324d7 Make a copy of the testing.TB interface (#2987) 2023-07-05 15:05:51 +02:00
Alexey Palazhchenko 78cfe4e7fe Mention SQLite in README.md (#2968) 2023-07-04 20:32:38 +02:00
Alexander Tobi Fashakin 86591eebbe Add blog post on FerretDB release v1.5.0 (#2958) 2023-07-04 14:25:15 +02:00
Alexey Palazhchenko 66bf3531fd Upload coverage results even for failed tests 2023-07-04 13:48:39 +02:00
Chi Fujii cbd9e06a33 Move find and aggregation cursor integration tests to getMore (#2952)
Closes #1733.
2023-07-04 00:30:49 +00:00
Alexey Palazhchenko f939bd2f8d Prepare v1.5.0 release 2023-07-03 12:26:35 +03:00
Alexey Palazhchenko 7fbc583180 Do not break fuzzing initialization (#2951)
Closes #2940.
Refs #1636.
2023-07-03 10:52:09 +03:00
0b347ae499 Convert SQLite directory to URI (#2922)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-07-03 10:49:59 +03:00
Dmitry 206abe8edb Add insert documents type validation (#2946) 2023-06-30 16:13:23 +00:00
Patryk Kwiatek 11a2389b35 Validate database names for SQLite handler (#2924) 2023-06-30 15:53:05 +00:00
Dmitry e78942e996 Re-implement DELETE for SQLite backend (#2907)
Closes #2751.
2023-06-30 15:29:12 +00:00
Elena Grahovac a2d3e43ff4 Implement proper response for createIndexes (#2936)
Closes #2845.
2023-06-30 18:32:09 +04:00
Chi Fujii a5cc636fab Use cursors with iterator in aggregate command (#2929)
Closes #2877.
Closes #1733.
2023-06-30 14:07:22 +04:00
Alexey Palazhchenko 5f0ddcbec8 Add better metrics for connections (#2938) 2023-06-29 09:55:09 +01:00
Alexey Palazhchenko d3fd02a625 Use cursors in find command (#2933)
Closes #1733.
2023-06-29 09:20:13 +04:00
Chi Fujii 7b6ccf3ac9 Run getMore integration test in one connection pool (#2878)
Closes #1807.
2023-06-29 01:31:24 +00:00
Alexey Palazhchenko 2d8f797e01 Set minWireVersion to 0 (#2937) 2023-06-28 20:57:32 +04:00
Alexey Palazhchenko f47f33dc90 Crush PNG images (#2931) 2023-06-28 16:29:12 +04:00
Alexey Palazhchenko 6161e73086 Update benchmark to use cursors (#2932) 2023-06-28 16:28:59 +04:00
Patryk Kwiatek ed330f74c4 Fix integration tests after bumping deps (#2934) 2023-06-28 14:24:32 +02:00
Alexey Palazhchenko 81312f9077 Disable permissions monitoring for now 2023-06-28 13:54:48 +04:00
Alexey Palazhchenko 483f927ade Bump deps, add permissions monitoring (#2930) 2023-06-28 12:50:38 +04:00
Alexander Tobi Fashakin 5b1e6b6154 Update incorrect blog post image (#2920) 2023-06-27 13:00:18 +04:00
Chi Fujii a15bb132ba Improve validation for createIndexes and dropIndexes (#2884)
Closes #2311.
2023-06-27 07:33:01 +00:00
Alexey Palazhchenko 4768f4706f Enable cursor support for PostgreSQL and SQLite (#2864) 2023-06-27 06:36:20 +00:00
Alexander Tobi Fashakin 9355acc652 Add blog post on "How to Configure FerretDB to work on Percona Distribution for PostgreSQL" 2023-06-27 09:34:01 +04:00
Patryk Kwiatek 49d338c5cd Fix collection name starting with dot validation (#2912) 2023-06-26 20:35:36 +02:00
Alexey Palazhchenko eb6170cb3f Fix cancelation signals propagation (#2908) 2023-06-26 12:29:04 +02:00
Alexey Palazhchenko 362758a1e3 Clean-up some code and comments (#2904) 2023-06-23 21:40:34 +04:00
Alexey Palazhchenko d2219f2d88 Add handler's metrics registration (#2895) 2023-06-23 19:28:56 +04:00
Chi Fujii 82f54cda49 Support cursors for aggregation pipelines (#2861)
Closes #1892.
2023-06-23 13:41:01 +00:00
Matt Cornillon a1ff494a25 Fix Github link for Dance repository (#2887) 2023-06-23 13:18:10 +00:00
Alexey Palazhchenko bbed64014d Tweak contributing guidelines (#2886) 2023-06-23 12:12:06 +00:00
Alexey Palazhchenko 00aeea87da Unskip test that passes now (#2885)
All TLS parameters are now a part of URI.

Closes #1759.
2023-06-23 10:17:54 +02:00
Patryk Kwiatek 72df2bc39d Add operators support for all aggregation stages (#2850) 2023-06-23 02:55:46 +00:00
Alexey Palazhchenko ced475653a Improve wire and sjson fuzzing (#2883) 2023-06-22 16:15:39 +02:00
Alexey Palazhchenko 0c6f3a5d32 Fix blog post's social preview 2023-06-21 18:54:28 +04:00
Alexander Tobi Fashakin 258bad366a Add blog post "FerretDB Demo: Launch and Test a Database in Minutes" (#2851) 2023-06-21 18:40:55 +04:00
Alexey Palazhchenko f4bb3f3950 Update contributing docs (#2828) 2023-06-21 13:50:17 +00:00
643b387baf Implement basic insert support for SAP HANA (#2732)
Co-authored-by: Lorant Polya <lorant.polya@sap.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-06-21 17:20:40 +04:00
Alexey Palazhchenko 93b80a4de2 Add basic tests for iterators (#2880) 2023-06-21 12:55:01 +00:00
Chi Fujii 24683b652a Update supported commands (#2876) 2023-06-21 12:33:59 +00:00
Alexey Palazhchenko c68c93681c Fix fuzzing corpus collection (#2879) 2023-06-21 11:16:30 +00:00
Alexey Palazhchenko f5edff7af1 Bump deps (#2875) 2023-06-21 10:49:52 +00:00
Alexey Palazhchenko 9d75840bea Implement count for SQLite (#2865) 2023-06-21 08:43:11 +00:00
Alexander Tobi Fashakin e653182d20 Add blog post on "Meet FerretDB at Percona University in Casablanca and Belgrade" (#2870) 2023-06-21 10:11:01 +04:00
Alexey Palazhchenko 6d3967c44d Unify tests for indexes (#2866) 2023-06-21 01:39:08 +00:00
Chi Fujii e3c51507c4 Support find singleBatch and validate getMore parameters (#2855)
Closes #2005.
2023-06-20 15:29:54 +00:00
Alexey Palazhchenko bc14e2422b Make it easier to debug GitHub Actions (#2860) 2023-06-20 15:02:29 +02:00
Chi Fujii 4d40b2b217 Add more validation and tests for $unset (#2853)
Closes #1432.
2023-06-19 18:49:52 +00:00
Alexander Tobi Fashakin 2b077d5236 Add blogpost on FerretDB v1.4.0 (#2858) 2023-06-19 22:34:02 +04:00
Alexey Palazhchenko 9a8085b7fd Prepare v1.4.0 release 2023-06-19 17:04:22 +04:00
Elena Grahovac 2e5997c85c Add user documentation about unique index creation (#2856)
Closes #2045.
2023-06-19 16:18:21 +04:00
Dmitry d38ab72dcb Implement createIndexes for unique indexes (#2814)
Closes #2045.
2023-06-16 21:07:30 +01:00
Patryk Kwiatek 846c0b9e67 Handle $type aggregation operator errors properly (#2829) 2023-06-16 10:18:04 +00:00
Alexey Palazhchenko de32c1cee3 Improve benchmarks (#2833) 2023-06-16 09:25:56 +01:00
Chi Fujii 1aa046527c Add more tests for $set and $addFields aggregation stages (#2844)
Validate
2023-06-16 03:12:06 +00:00
Alexey Palazhchenko c22588de74 Bump deps (#2849) 2023-06-16 02:39:09 +00:00
Dmitry 16465cd00b Fix unimplemented-non-default tag usages (#2848) 2023-06-16 11:18:51 +09:00
Alexey Palazhchenko 1ab2bf7cb1 Prevent tests deadlock when backend is down (#2846) 2023-06-15 16:58:25 +00:00
Dmitry 263c3fe70b Refactor getWholeParamStrict and GetScaleParam functions (#2831)
Closes #2812.
2023-06-15 14:25:26 +01:00
Shibasis Patel d4fa206bec Implement simple $addFields/$set aggregation pipeline stages (#2783)
Closes #2590.
2023-06-15 08:45:01 +09:00
Shibasis Patel bdfd6b1461 Implement $unset aggregation pipeline stage (#2676)
Closes #1432.
2023-06-14 15:58:48 +02:00
Dmitry 89d6562620 Fix running single test with task (#2832) 2023-06-13 18:47:52 +04:00
Patryk Kwiatek 9536babb87 Implement $type aggregation operator (#2789) 2023-06-13 13:08:12 +00:00
Elena Grahovac 8ad2489606 Add more test cases for index validation (#2752)
Closes #2311.
2023-06-13 06:41:31 +00:00
Chi Fujii 513efa677c Add skipped tests for find batchSize (#2825)
Closes #2005.
2023-06-12 15:23:02 +00:00
Alexey Palazhchenko 439fc693ea Fix blog post formatting 2023-06-09 17:46:19 +04:00
Alexander Tobi Fashakin 77d55860f7 Add Blog Post on Document Databases (#2204) 2023-06-09 15:23:35 +02:00
Elena Grahovac 345488deda Describe current test naming conventions in the contributing guidelines (#2821)
Closes FerretDB/engineering#66.
2023-06-09 17:07:24 +04:00
Alexey Palazhchenko 0f8f663ea3 Add textlint rules for en dashes and em dashes (#2823) 2023-06-09 08:16:35 +04:00
Alexey Palazhchenko c2fd309310 Shard integration tests (#2820) 2023-06-08 15:31:58 +00:00
Chi Fujii 38776c61be Check error message in non compat integration tests (#2806)
Closes #2599.
2023-06-08 16:17:58 +02:00
Wojciech Kropidlowski 1c1c43515c Implement envtool tests shard command (#2773)
Closes #2692.
2023-06-08 11:38:14 +00:00
Alexey Palazhchenko 33865a6dab Bump MongoDB Go driver (#2817) 2023-06-08 10:20:34 +00:00
Alexey Palazhchenko 3fddc41e10 Bump MongoDB to 6.0.6 (#2727) 2023-06-08 09:40:25 +01:00
Jeremy Phua 1b7ff7eee4 Fix free monitoring tests for MongoDB 6.0.6 (#2784)
Closes #2735.
2023-06-07 10:27:12 +00:00
Alexey Palazhchenko c6685e6580 Bump Go to 1.20.5 (#2810) 2023-06-07 10:07:52 +02:00
Chi Fujii 1bfc450dd3 Use iterator in $sum aggregation accumulator (#2799)
Closes #2706.
2023-06-07 00:48:46 +00:00
Patryk Kwiatek 834d75bf8a Improve testDistinctCompat (#2782) 2023-06-06 14:05:40 +00:00
Alexey Palazhchenko 5c385010fa Fix workflow concurrency group 2023-06-06 17:05:20 +04:00
Alexey Palazhchenko 1c3df01f9b Merge test workflows to fix coverage calculation (#2801) 2023-06-06 16:52:02 +04:00
Alexey Palazhchenko 6ddbc37d8f Refactor SQLite handler (#2731) 2023-06-06 08:45:17 +00:00
Alexey Palazhchenko 27dab486e0 Bump deps (#2798) 2023-06-06 11:50:15 +04:00
Alexey Palazhchenko 96f3046069 Remove old temporary edit 2023-06-05 21:41:49 +04:00
Alexey Palazhchenko 60c84b9185 Add release tag to release blog post (#2792) 2023-06-05 21:39:49 +04:00
Alexander Tobi Fashakin 5d57282ff1 Add blog post for FerretDB v1.3.0 (#2791) 2023-06-05 20:55:20 +04:00
Alexey Palazhchenko 2397140f0c Make testutil.Logger easier to use (#2790) 2023-06-05 19:18:34 +04:00
1797 changed files with 119859 additions and 69346 deletions

No files matched your search

+2 -1
View File
@@ -14,4 +14,5 @@
!.gitignore
# additional files for Docker images
!build/docker
!build/ferretdb
!build/postgres-documentdb
+9
View File
@@ -0,0 +1,9 @@
# https://editorconfig.org
root = true
[*]
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
charset = utf-8
+6
View File
@@ -2,3 +2,9 @@
*.jpg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.go diff=golang
.gitea/CODEOWNERS linguist-detectable=false
+3
View File
@@ -0,0 +1,3 @@
# Pull requests request review from the eligible staff team(s).
# One approval from either an Admin or Developer satisfies branch protection.
* @trueog/Admins @trueog/Developers
+4 -16
View File
@@ -1,22 +1,10 @@
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# Order is important; the last matching pattern takes the most precedence.
# Order is important; the last matching pattern has the highest precedence.
* @AlekSi
* @AlekSi @chilagrow
/cmd/ @FerretDB/leads
/ferretdb/ @FerretDB/leads
/integration/ @FerretDB/leads
/internal/ @FerretDB/leads
/internal/backends/ @AlekSi
/internal/handlers/hana/ @AlekSi
/website/ @AlekSi @Fashander
# @AlekSi for engineering, @ptrfarkas for marketing.
# See also Mergify configuration.
/website/ @AlekSi @ptrfarkas
/build/ @AlekSi
/build/legacy-mongo-shell/ @FerretDB/specops
go.mod @AlekSi
go.sum @AlekSi
/website/blog/ @AlekSi @ptrfarkas
+14 -18
View File
@@ -14,18 +14,14 @@ body:
- type: textarea
id: version
attributes:
label: FerretDB version
label: FerretDB, PostgreSQL, and DocumentDB versions
description: >
What version and package of FerretDB do you use?
Please provide an output of running FerretDB with [`--version` flag](https://docs.ferretdb.io/configuration/flags/).
validations:
required: true
- type: input
id: backend
attributes:
label: Backend
description: >
What backend (PostgreSQL, etc) and what version do you use?
Please add the output of the `serverStatus` command.
value: |
```json
{
}
```
validations:
required: true
- type: textarea
@@ -33,13 +29,13 @@ body:
label: Environment
description: |
For example:
- **OS**: Ubuntu 22.04 x86_64
- **Deployment**: Docker using `ghcr.io/ferretdb/ferretdb:1.0.0` image
- **Deployment details**: Docker version 23.0.5
- **OS**: Ubuntu 24.04 x86_64
- **Deployment**: Docker using `ghcr.io/ferretdb/ferretdb:2` image
- **Deployment details**: Docker version 27.3.1
value: |
- OS:
- Deployment:
- Deployment details:
- **OS**:
- **Deployment**:
- **Deployment details**:
validations:
required: true
- type: textarea
@@ -65,6 +61,6 @@ body:
attributes:
label: What did you see instead?
description: >
Please include FerretDB [logs](https://docs.ferretdb.io/configuration/logging/).
Please include FerretDB [logs](https://docs.ferretdb.io/configuration/observability/).
validations:
required: true
+2 -2
View File
@@ -30,11 +30,11 @@ body:
label: Definition of Done
description: What should be done to consider this issue done? List everything that applies.
value: |
- all handlers updated;
- handler updated;
- unit tests added/updated;
- integration/compatibility tests added/updated;
- spot refactorings done;
- user documentation updated or an issue to create documentation created;
- user documentation updated (or an issue to create documentation created);
- something else?
validations:
required: true
+1 -1
View File
@@ -4,7 +4,7 @@
blank_issues_enabled: false
contact_links:
- name: Quick question
url: https://join.slack.com/t/ferretdb/shared_invite/zt-zqe9hj8g-ZcMG3~5Cs5u9uuOPnZB8~A
url: https://slack.ferretdb.io/
about: Please join our Slack chat.
- name: General question or discussion
url: https://github.com/FerretDB/FerretDB/discussions/categories/general
+29 -55
View File
@@ -6,56 +6,17 @@ We will do all that for you so you can focus on what is really interesting for y
This guide tries to be short and does not mention things that are completely automated by our tooling.
## Team performance and planning
## Showing progress
We want to deliver fast and make our deliverables predictable.
To achieve that, we measure the flow of work and estimate tasks.
The flow of work is measured automatically based on GitHub's pull request workflow.
Tasks are estimated manually by engineers before or during Sprint planning.
We want our work to be visible and transparent.
This way we can help each other and make sure that we are on the right track.
To uphold these principles, we agree to make results of our daily work available for others through various means
such as pushed commits, updated pull requests, code reviews, created issues, or any other relevant method.
Task estimation depends on the following parameters:
### Community
- Scope.
Are the changes required in one or multiple files, packages, components?
- Difficulty.
How hard is the task?
Does it require to cover a lot of test cases?
edge cases?
- Clarity.
Are the description and definition of done clear?
Or that's more of a research task?
We use the following T-Shirt Sizes to estimate tasks:
- **S**: Small simple clear task.
- **M**: Only one parameter can be changed compared to **S** (e.g. a small but not completely clear task).
- **L**: Two parameters can be changed compared to **S** (e.g. clear but big and somewhat complex task).
If the team thinks that the task is bigger than **L**, it should be decomposed into smaller tasks.
Unless the issue explicitly states otherwise, the following things are always in the scope:
- All handlers.
- Tests.
See contributing documentation for general discussion about unit and integration tests.
- Small spot refactorings.
Larger refactorings should be in a separate issue with minimal behavior changes.
- Minor updates to existing documentation.
Completely new documentation should be in a separate issue.
Words "small", "spot", "larger", "minimal", "minor" and similar are defined to be not clearly defined.
As always, use your best judgment and communicate (preferably on the planning).
Engineering tasks could be added to the Sprint only if there are no other pre-planned tasks that are not done
or could not benefit from more help.
Those tasks should not be estimated.
After every Sprint, we calculate how many tasks of each size we were able to complete
and discuss what went well and what could be improved.
We also look at the flows' metrics to gather more information about the team's dynamic.
Estimation mistakes should be an exception, not a norm.
Try to estimate on the planning as best as you can.
We expect issues picked up by the community to be done in about two weeks.
After about a week of inactivity, we should ping contributors.
## Pull requests
@@ -66,24 +27,25 @@ please follow these notes below when you working with pull request:
1. Send pull requests from forks; do not make personal branches in the main repository.
This way, we are similar to community members and could notice similar problems that we could fix for everyone,
not just for us.
2. Pull request **title** should be accurate and descriptive as it is used in the generated changelog.
2. Pull request title should be accurate and descriptive
as it is used in the generated [changelog](../CHANGELOG.md) as is.
It generally should start with imperative verb ("Fix …", not "Fixing …", "Fixed …" or other forms).
It should not have a prefix ("Fix …", not "Fix: …") (we use labels for categorization).
It should not mention the issue number.
3. We provide a pull requests template that includes suggestions and readiness checklist.
Please use it.
4. It is fine to send several sequential pull requests for one issue to make them easier to review.
3. It is fine to send several sequential pull requests for one issue to make them easier to review.
In that case, please still use the `Closes` word as described in [CONTRIBUTING.md](../CONTRIBUTING.md)
(because [words like "refs" do not link PR to the issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)),
but don't forget to reopen the issue once PR is merged,
but the issue as a whole is not done.
5. (This point is for FerretDB Inc. engineers only.)
Please create a draft pull request as soon as you start working on an issue; that is needed for our process tooling.
4. Please create a draft pull request as soon as you start working on an issue; that is needed for our process tooling.
Once it is ready for review, please mark it as such.
After that, there is no need to switch between draft and non-draft states.
6. Pull requests should be merged by an auto-merge that the author should enable.
5. Pull requests should be merged by an auto-merge that the author should enable.
If the pull request is not ready to be merged for some reason (but ready to be reviewed as usual),
the description should explain why, and the `do not merge` label should be applied.
Even in that case, auto-merge should still be enabled by the author.
6. Autogenerated GitHub's squash commit's body should be manually replaced by `Closes #<issue_number>.`
with optional [trailers for co-authors](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors).
7. Ultimately, the author is responsible for doing everything to ensure that the pull request is merged and done.
One can see all pull requests that await review [there](https://github.com/pulls/review-requested?q=user%3AFerretDB+is%3Aopen).
@@ -94,10 +56,22 @@ talk with [@GitHub bot in direct messages](https://ferretdb.slack.com/archives/D
to link your Slack and GitHub identities,
and then configure notification only for your name.
### Test scripts
Pull requests that add temporary `test.js` test scripts have slightly different rules:
1. The title should start with "Add test script for".
2. The descriptions of both PR and issue should link to each other.
3. Commits must change only the `test.js` file.
Once PR with a test script is sent and verified by someone else, it is closed.
Once the linked issue is resolved, the PR should be reopened and merged with `main` to confirm that the test script pass now.
Then it should be closed again.
## Creating issues
1. Please use `Chore` type instead of `Enhancement` or `Feature` (but not `Bug`)
because its template is much more useful
(but may be too daunting for regular users, that's why templates for enhancements and features are much simpler).
After creating an issue, please change its type (label) manually.
2. Do not change automatically applied labels, assignees, or projects.
2. Do not change other automatically applied labels, assignees, or projects.
+17 -13
View File
@@ -1,27 +1,31 @@
<!--
Please remove comments like this one, but keep and use the rest of the template.
See CONTRIBUTING.md for details.
-->
# Description
Closes #{issue_number}.
<!--
Write a short description to explain changes that are not mentioned in the initial issue.
What were the reasons for those changes?
Which decisions did you make and why?
What else should reviewers know about your changes?
Write a short description to explain changes that are not mentioned in the initial issue.
What were the reasons for those changes?
Which decisions did you make and why?
What else should reviewers know about your changes?
-->
<!-- Replace <issue_number> with an actual issue number. -->
Closes #<issue_number>.
## Readiness checklist
<!--
If you want your changes to be merged quickly,
please follow CONTRIBUTING.md.
-->
<!-- Please check all items in this checklist that were done. -->
- [ ] I added/updated unit tests.
- [ ] I added/updated integration/compatibility tests.
- [ ] I added/updated unit tests (and they pass).
- [ ] I added/updated integration/compatibility tests (and they pass).
- [ ] I added/updated comments and checked rendering.
- [ ] I made spot refactorings.
- [ ] I updated user documentation.
- [ ] I ran `task all`, and it passed.
- [ ] I ensured that PR title is good enough for the changelog.
- [ ] (for maintainers only) I set Reviewers ([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)), Labels, Project and project's Sprint fields.
- [ ] (for maintainers only) I set Reviewers ([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)), Milestone (`Next`), Labels, Project and project's Sprint fields.
- [ ] I marked all done items in this checklist.
+53 -31
View File
@@ -2,18 +2,30 @@
## Preparation
1. Check tests, linters.
2. Check issues and pull requests, update milestones and labels.
3. Check if there are breaking changes or anything that should be reflected in the changelog and/or user documentation.
4. Create draft release on GitHub with autogenerated release notes.
5. Tweak generated release notes:
- Ensure that "This section should be empty" section does not exist.
- Add "All closed issues and pull requests" and "All commits", remove "Full Changelog".
- Tweak spacing, headers levels.
6. Update CHANGELOG.md with the same release notes:
- Check spacing, header levels.
- Run `task docs-fmt`.
7. Commit and push changes, check `git status`.
1. [Release DocumentDB](https://github.com/FerretDB/documentdb/blob/ferretdb/.github/RELEASE_CHECKLIST.md).
2. Update DocumentDB image tags to point to release in:
- [eval image](../build/ferretdb/eval.Dockerfile);
- [eval-dev image](../build/ferretdb/eval-dev.Dockerfile);
- [local image](../build/deps/postgres-documentdb.Dockerfile);
- [bw image](../build/ferretdb-bw/Dockerfile).
3. Update constants in [`documentdb.go`](../build/version/documentdb.go).
4. Check DocumentDB images/tags in documentation (where we specify full tags).
5. Re-run tests, linters.
6. Check issues and pull requests, update milestones and labels.
7. Check if there are breaking changes or anything that should be reflected in the changelog and/or user documentation.
8. Create draft release on GitHub with autogenerated release notes.
9. Update CHANGELOG.md:
- Run `task changelog PREV=vX.Y.Z NEXT=vX.Y.Z` to generate release changelog for the given milestone.
- Check warnings, copy output to the `CHANGELOG.md` file.
- Sort items within sections according to importance if needed.
- Add first-time contributor credits if any (copy this data from the release draft).
- Add link to DocumentDB release page.
10. Run `task docs-version VERSION=X.Y`.
Update `versions` and `createRedirects` in `docusaurus.config.js`.
Remove the oldest version from `versioned_docs`, `versioned_sidebars`, `versions.json`.
11. Run `task docs`.
12. Commit and push changes to the PR.
13. Merge PR, pull and check `git status`.
## Git tag
@@ -21,29 +33,39 @@
2. Check `task gen-version; git status` output.
3. Push it!
4. Refresh
- `env GOPROXY=https://proxy.golang.org go mod download -x github.com/FerretDB/FerretDB@<tag>`
- `https://pkg.go.dev/github.com/FerretDB/FerretDB@<tag>` from <https://pkg.go.dev/github.com/FerretDB/FerretDB?tab=versions>
- `env GOPROXY=https://proxy.golang.org go mod download -x github.com/FerretDB/FerretDB/v2@<vX.Y.Z>`
- `https://pkg.go.dev/github.com/FerretDB/FerretDB/v2@<vX.Y.Z>` from https://pkg.go.dev/github.com/FerretDB/FerretDB/v2?tab=versions.
## Release
1. Wait for the [packages CI build](https://github.com/FerretDB/FerretDB/actions/workflows/packages.yml?query=event%3Apush)
1. Copy release notes from `CHANGELOG.md` and trim them.
2. Wait for the [packages CI build](https://github.com/FerretDB/FerretDB/actions/workflows/packages.yml?query=event%3Apush)
to finish.
2. Upload the binary and `.deb` and `.rpm` packages to the draft release.
3. Check:
- <https://hub.docker.com/r/ferretdb/ferretdb/tags>
- <https://hub.docker.com/r/ferretdb/ferretdb-dev/tags>
- <https://hub.docker.com/r/ferretdb/all-in-one/tags>
- <https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb>
- <https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb-dev>
- <https://github.com/FerretDB/FerretDB/pkgs/container/all-in-one>
4. Close milestone in issues.
5. Publish release on GitHub.
6. Announce it on Slack.
3. Upload binaries and packages to the draft release.
4. Check:
- https://hub.docker.com/r/ferretdb/ferretdb/tags
- https://hub.docker.com/r/ferretdb/ferretdb-dev/tags
- https://hub.docker.com/r/ferretdb/ferretdb-eval/tags
- https://hub.docker.com/r/ferretdb/ferretdb-eval-dev/tags
- https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb
- https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb-dev
- https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb-eval
- https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb-eval-dev
- https://quay.io/repository/ferretdb/ferretdb?tab=tags
- https://quay.io/repository/ferretdb/ferretdb-dev?tab=tags
- https://quay.io/repository/ferretdb/ferretdb-eval?tab=tags
- https://quay.io/repository/ferretdb/ferretdb-eval-dev?tab=tags
5. Close milestone in issues.
6. Publish release on GitHub.
7. Announce it on Slack.
## Soon after
1. Bump the latest version on [Beacon](https://beacon.ferretdb.io).
2. Publish and announce blog post.
3. Tweet, toot.
4. Update NixOS package: <https://github.com/NixOS/nixpkgs/tree/master/pkgs/servers/nosql/ferretdb>.
5. Update Civo package: <https://github.com/civo/kubernetes-marketplace/tree/master/ferretdb>.
1. Publish and announce blog post.
2. Add link to blog post to `CHANGELOG.md` and release page.
3. Bump the latest version on https://beacon.ferretdb.com and https://beacon.ferretdb.io.
4. Update DocumentDB images/tags in Dockerfiles to point back to development version.
5. Update DocumentDB images/tags in the current documentation (where we specify full tags)
to point to the next (non-existing) version.
6. Update URLs with `/refs/tags/` in them in the current documentation
to point to the next (non-existing) version.
+26 -2
View File
@@ -3,7 +3,6 @@
codecov:
require_ci_to_pass: true
notify:
after_n_builds: 2 # 1 for unit tests + at least 1 for integration tests
wait_for_ci: true
# https://docs.codecov.com/docs/coverage-configuration
@@ -31,7 +30,32 @@ flag_management:
# https://docs.codecov.com/docs/pull-request-comments
comment:
layout: reach,diff,files,flags
layout: reach,diff,files,flags,components
# https://docs.codecov.com/docs/components
component_management:
default_rules:
statuses:
- type: project
target: auto
threshold: 1%
individual_components:
- component_id: clientconn
name: "clientconn"
paths:
- internal/clientconn/**
- component_id: dataapi
name: "dataapi"
paths:
- internal/dataapi/**
- component_id: documentdb
name: "documentdb"
paths:
- internal/documentdb/**
- component_id: handler
name: "handler"
paths:
- internal/handler/**
# https://docs.codecov.com/docs/github-checks
# Annotations may be hidden by pressing the "a" key or by unselecting "Show annotations" in the top right of the file.
+145 -1
View File
@@ -3,30 +3,82 @@
# Apply the "not ready" label to prevent cascaded CI runs on each auto-merge.
version: 2
# Most configurations are duplicated to add main-v1 branch.
updates:
- package-ecosystem: "github-actions"
directory: "/"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
github-actions:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "github-actions"
target-branch: "main-v1"
directory: "/"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
github-actions-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "docker"
directory: "/build/docker"
directory: "/build/ferretdb"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
build-docker:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "docker"
target-branch: "main-v1"
directory: "/build/ferretdb"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
build-docker-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "docker"
directory: "/build/deps"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
build-deps:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "docker"
target-branch: "main-v1"
directory: "/build/deps"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
build-deps-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
@@ -37,33 +89,125 @@ updates:
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
ferretdb:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
target-branch: "main-v1"
directory: "/"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
ferretdb-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
directory: "/integration"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
integration:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
target-branch: "main-v1"
directory: "/integration"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
integration-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
directory: "/tools"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
tools:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
target-branch: "main-v1"
directory: "/tools"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
tools-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
directory: "/tools/golangci"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
golangci:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
target-branch: "main-v1"
directory: "/tools/golangci"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
golangci-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
# no mcphost in main-v1
- package-ecosystem: "gomod"
directory: "/tools/mcphost"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
mcphost:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
# no submodules in main-v1
- package-ecosystem: "gitsubmodule"
directory: "/"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
schedule:
interval: "weekly"
day: "wednesday"
+7 -7
View File
@@ -5,16 +5,18 @@ pull_request_rules:
- name: "Update out-of-date approved PRs"
conditions:
# those rules are implicit for the update action:
# - "#commits-behind > 0"
# - "-closed"
- "-conflict"
# - "-conflict"
# - "#commits-behind > 0"
- "-draft"
- "-locked"
- "-merged"
- "author != dependabot[bot]"
- "base = main"
- "branch-protection-review-decision = APPROVED"
- "check-success = golangci-lint"
- "check-success = Test"
- "label != 'not ready'"
- "#review-threads-unresolved = 0"
actions:
update:
@@ -23,11 +25,9 @@ pull_request_rules:
- "label = 'blog/engineering'"
actions:
request_reviews:
users: ["AlekSi", "Fashander", "ptrfarkas"]
teams: ["@FerretDB/leads", "@FerretDB/core"]
users_from_teams: ["@FerretDB/leads", "@FerretDB/core"]
users_from_teams: ["@FerretDB/core", "@FerretDB/docs"]
comment:
message: "Engineering blog posts should be reviewed by other engineers and @Fashander."
message: "Engineering blog posts should be reviewed by @FerretDB/core and @FerretDB/docs."
- name: "Request review for marketing blogs posts"
conditions:
-33
View File
@@ -1,33 +0,0 @@
---
# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
changelog:
categories:
- title: New Features 🎉
labels:
- code/feature
- title: Fixed Bugs 🐛
labels:
- code/bug
- code/bug-regression
- title: Enhancements 🛠
labels:
- code/enhancement
- title: Documentation 📄
labels:
- blog/engineering
- blog/marketing
- documentation
- title: Other Changes 🤖
labels:
- code/chore
- project
- deps
- title: This section should be empty
labels:
- "*"
+148
View File
@@ -0,0 +1,148 @@
---
# https://github.com/repository-settings/app
repository:
allow_squash_merge: true
allow_merge_commit: false
allow_rebase_merge: false
allow_auto_merge: true
allow_update_branch: true
delete_branch_on_merge: true
enable_automated_security_fixes: true
enable_vulnerability_alerts: true
# https://docs.github.com/en/rest/issues/labels
# Labels are being used by issues, PRs, and discussions.
labels:
# area
- name: area/admin
color: "#2931BF"
description: Issues about administration commands
- name: area/aggregations
color: "#5319E7"
description: Issues about aggregation pipelines
- name: area/auth
color: "#E4012C"
description: Issues about authentication and authorization
- name: area/build
color: "#52D58A"
description: Issues about builds and CI
- name: area/cursors
color: "#D93F0B"
description: Issues about cursors
- name: area/dataapi
color: "#D98F93"
description: Issues about Data API
- name: area/diag
color: "#909BA6"
description: Issues about diagnostic commands
- name: area/errors
color: "#DE231F"
description: Issues about MongoDB-compatible error codes and messages
- name: area/fuzz
color: "#D4C5F9"
description: Issues about fuzzing and smithing
- name: area/indexes
color: "#006B75"
description: Issues about indexes
- name: area/mcp
color: "#95921F"
description: Issues about MCP
- name: area/observability
color: "#E04D33"
description: Issues about metrics, logs, traces, pprof, etc
- name: area/performance
color: "#D02FE8"
description: Issues about performance
- name: area/wire
color: "#0354F4"
description: Issues about BSON and the wire protocol
# blog
- name: blog/engineering
color: "#FEF2C0"
description: Engineering blog posts
- name: blog/marketing
color: "#80D0C9"
description: Marketing (and releases) blog posts
# code
- name: code/bug
color: "#CC0000"
description: Some user-visible feature works incorrectly
- name: code/bug-regression
color: "#FF0000"
description: Some user-visible feature works incorrectly, but worked before
- name: code/chore
color: "#E99695"
description: Code maintenance improvements
- name: code/enhancement
color: "#FBCA04"
description: Some user-visible feature could work better
- name: code/feature
color: "#0E8A16"
description: Some user-visible feature is not implemented yet
# the rest sorted alphabetically
- name: badly estimated
color: "#FF3333"
description: Scope, difficulty and/or clarify of the issue were different
- name: community
color: "#297252"
description: Issues and PRs assigned to community members
- name: conflict
color: "#FF0000"
description: PRs that have merge conflicts
- name: deps
color: "#D4C5F9"
description: PRs that update dependencies
- name: do not merge
color: "#0052CC"
description: PRs that should not be merged
- name: documentation
color: "#0052CC"
description: Something user-visible is badly or not documented
- name: good first issue
color: "#5319E7"
description: Good issues for new external contributors
# until the next time
# - name: hacktoberfest
# color: "#FEFBA2"
# description: Good issues for Hacktoberfest
- name: help wanted
color: "#006B75"
description: Issues that require extra attention
- name: not ready
color: "#000000"
description: Issues that are not ready to be worked on; PRs that should skip CI
- name: packages
color: "#9B022C"
description: PRs that should build packages
- name: project
color: "#E99695"
description: Project maintenance
# https://hacktoberfest.com/participation/#spam
- name: spam
color: "#C5DEF5"
description: Spam issues and PRs
- name: trust
color: "#00FF00"
description: PRs that can access Actions secrets
- name: use-git-lfs
color: "#FF0000"
description: PRs that add large files without Git LFS
+163
View File
@@ -0,0 +1,163 @@
---
name: Integration # visible at https://github.com/FerretDB/FerretDB/actions
on:
workflow_call:
inputs:
task:
required: true
type: string
shard_index:
required: true
type: number
shard_total:
required: true
type: number
test_timeout:
required: false
type: string
default: 20m
no_xfail:
required: false
type: boolean
default: false
skip_flaky_check:
required: false
type: boolean
default: false
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
run:
# make it short to fit in GitHub UI; all parameters are already in the caller's name
name: Run
runs-on: ubuntu-24.04
timeout-minutes: 25
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
# for branch.txt on pull_request; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: integration
- name: Install Task
run: go generate -x
working-directory: tools
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Setup Ollama and MCPHost
run: |
mkdir -p tmp/logs
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl stop ollama
bin/task ollama > tmp/logs/ollama.log 2>&1 &
bin/task mcphost > tmp/logs/mcphost.log 2>&1 &
- name: Wait for and setup environment
run: bin/task env-setup
- name: >
Run ${{ inputs.task }} tests
(${{ inputs.shard_index }}/${{ inputs.shard_total }})
run: >
bin/task test-integration-${{ inputs.task }}
SHARD_INDEX=${{ inputs.shard_index }}
SHARD_TOTAL=${{ inputs.shard_total }}
TEST_TIMEOUT=${{ inputs.test_timeout }}
NO_XFAIL=${{ inputs.no_xfail }}
env:
ENVTOOL_DEBUG: ${{ runner.debug == '1' && 'true' || 'false' }}
- name: Collect logs
if: failure()
run: |
bin/task env-logs-collect
cp -v integration/*.json.tmp integration/*.txt.tmp tmp/logs/
- name: Compress logs before upload
if: failure()
run: zip -r -q -9 logs.zip tmp/logs
- name: Upload logs
if: failure()
uses: actions/upload-artifact@v5
with:
name: logs-${{ inputs.task }}-${{ inputs.shard_index }}-${{ inputs.shard_total }}
path: logs.zip
retention-days: 3
- name: Upload coverage information to codecov
if: always()
uses: codecov/codecov-action@v5
with:
files: ./integration/integration-${{ inputs.task }}.txt
flags: integration,${{ inputs.task }},${{ inputs.task }}-${{ inputs.shard_index }}
disable_file_fixes: true
fail_ci_if_error: true
verbose: true
- name: Upload coverage information to coveralls
if: always()
uses: coverallsapp/github-action@v2
with:
file: ./integration/integration-${{ inputs.task }}.txt
flag-name: integration-${{ inputs.task }}-${{ inputs.shard_index }}
parallel: true
- name: Convert test results to JUnit XML format
if: always() && !inputs.skip_flaky_check
run: >
./bin/go-junit-report -parser=gojson
-in ./integration/*.json.tmp
-out ./integration/${{ inputs.task }}.xml
- name: Upload test results to Codecov
if: always()
uses: codecov/test-results-action@v1
with:
flags: integration,${{ inputs.task }},${{ inputs.task }}-${{ inputs.shard_index }}
file: ./integration/${{ inputs.task }}.xml
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
-26
View File
@@ -1,26 +0,0 @@
name: clean old packages
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
jobs:
scan-old-package:
runs-on: ubuntu-latest
# disable for now
if: false
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.20"
- name: Install dependencies
run: cd tools; go get ./cleantool
- name: Scan old package versions and store the version id to env
env:
ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }}
run: |
cd tools;go run ./cleantool/cleantool.go
+43
View File
@@ -0,0 +1,43 @@
---
name: Cleanup
on:
schedule:
- cron: "10 0 * * 1"
workflow_dispatch:
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
cleanup:
name: Cleanup
runs-on: server
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
# no cache-key on server
- name: Install Task
run: go generate -x
working-directory: tools
- name: Run docker-cleanup
run: bin/task docker-cleanup
- name: Clean Go caches
run: go clean -cache -testcache -modcache -fuzzcache
+4 -4
View File
@@ -11,8 +11,8 @@
# we require the `trust` label to be assigned to PRs by FerretDB maintainers after reviewing changes.
# Only a few trusted people have permission to do that.
# * Thanks to the way `pull_request_target` trigger works,
# PR changes in the workflow itself are not run until the changes are merged.
# * We use a short-lived automatic `GITHUB_TOKEN` instead of a long-living personal access token (PAT) where possible.
# PR changes in the workflow itself are not run until they are merged.
# * We use short-lived automatic `GITHUB_TOKEN`s instead of a long-living personal access tokens (PAT) where possible.
# * Both `GITHUB_TOKEN`s and PATs have minimal permissions.
# * We publish Docker images from PRs as separate packages that should not be run by users.
# * We limit what third-party actions can be used.
@@ -57,13 +57,13 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GOTOOLCHAIN: local
CONFORM_TOKEN: ${{ secrets.CONFORM_TOKEN }} # repo-scoped GITHUB_TOKEN is not enough to query org-level projects
jobs:
conform-pr:
name: Conform PR
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 5
# No `trust` label check because we don't checkout PR's code.
+95
View File
@@ -0,0 +1,95 @@
---
name: CTS
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- main-*
- releases/*
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
run:
name: Run CTS tests
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: cts
- name: Install Task
run: go generate -x
working-directory: tools
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Build bin/ferretdb
run: bin/task build-host
- name: Wait for and setup environment
run: bin/task env-setup
- name: Start FerretDB (no auth) in the background
run: >
bin/ferretdb
--listen-addr=:27017
--proxy-addr=127.0.0.1:37017
--no-auth
--mode=diff-normal
--postgresql-url='postgres://username:password@127.0.0.1:5432/postgres'
2> ferretdb.log &
- name: Run CTS
if: always()
run: bin/task cts
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+13 -6
View File
@@ -13,6 +13,7 @@ on:
push:
branches:
- main
- main-*
- releases/*
tags:
- "*"
@@ -22,26 +23,32 @@ on:
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
cancel-in-progress: true
jobs:
contexts:
name: Contexts
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 5
# comment out to enable this job
if: false
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0
lfs: false
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Debug git status
run: git status
run: |
git status --untracked-files --ignored
git status
- name: Dump github context
run: echo "$GITHUB_CONTEXT"
+18 -11
View File
@@ -10,6 +10,7 @@ on:
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
@@ -26,31 +27,38 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
build:
name: Build docs
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: true
# This step will fail with "Error: Resource not accessible by integration"
# while trying to add label and comment to PR, that is not possible for PRs from forks.
# See https://github.com/ActionsDesk/lfs-warning/issues/147.
# See https://github.com/ppremk/lfs-warning/issues/147.
# But the real issue will be right above that message: a list of files that should be added using Git LFS.
- name: Check LFS status
uses: actionsdesk/lfs-warning@v3.2
uses: ppremk/lfs-warning@v3.3
with:
filesizelimit: 102400b
labelName: use-git-lfs
exclusionPatterns: |
**/*.go
**/*.js
**/*.md
**/go.sum
@@ -69,9 +77,8 @@ jobs:
- name: Build docs
run: bin/task docs
- name: Create directory
run: mkdir tmp
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for checkdocs
- name: Archive docs
run: >
@@ -83,7 +90,7 @@ jobs:
# it has to be exactly "docs.tar" for actions/deploy-pages below
- name: Upload archive artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v5
with:
name: docs
path: tmp/docs.tar
@@ -97,10 +104,10 @@ jobs:
github:
name: Deploy to GitHub Pages
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
# deploy only on push to main; exclude pull_request and schedule
# exclude pull_request and schedule
needs: build
if: github.event_name == 'push'
@@ -115,7 +122,7 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deploy
uses: actions/deploy-pages@v2
uses: actions/deploy-pages@v4
with:
artifact_name: docs
timeout: 300000 # 5*60*1000 milliseconds
+11 -6
View File
@@ -10,6 +10,7 @@ on:
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
@@ -17,7 +18,7 @@ on:
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
cancel-in-progress: true
env:
GOPATH: /home/runner/go
@@ -25,18 +26,23 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
format:
name: Format files
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
@@ -50,9 +56,6 @@ jobs:
run: go generate -x
working-directory: tools
- name: Run init
run: bin/task init
- name: Format Go code
run: bin/task fmt-go
@@ -60,6 +63,8 @@ jobs:
run: bin/task fmt-yaml
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+245 -150
View File
@@ -10,37 +10,50 @@ on:
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
short-test:
name: Short test
runs-on: ubuntu-22.04
timeout-minutes: 10
runs-on: ubuntu-24.04
timeout-minutes: 15
# Do not run this job in parallel for any PR change or branch push.
concurrency:
group: ${{ github.workflow }}-short-test-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
# for branch.txt on pull_request; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
@@ -54,7 +67,10 @@ jobs:
run: bin/task init
- name: Run short unit tests
run: bin/task test-unit-short
run: bin/task test-unit-short TEST_TIMEOUT=10m
env:
GOFLAGS: ${{ runner.debug == '1' && '-v' || '' }}
GITHUB_TOKEN: invalid # to test that -short is handled correctly
# we don't want them on CI
- name: Clean test and fuzz caches
@@ -62,24 +78,42 @@ jobs:
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
test:
name: Test
runs-on: ubuntu-22.04
timeout-minutes: 10
runs-on: ubuntu-24.04
timeout-minutes: 15
# Do not run this job in parallel for any PR change or branch push.
concurrency:
group: ${{ github.workflow }}-test-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
# for branch.txt on pull_request; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
@@ -89,45 +123,82 @@ jobs:
run: go generate -x
working-directory: tools
# install.sh starts ollama service, stop it since we want to run with `bin/task ollama` with environment variables
- name: Setup Ollama
run: |
curl -fsSL https://ollama.com/install.sh | sudo -E sh
sudo systemctl stop ollama
- name: Start Ollama in the background
run: |
bin/task ollama &
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Pull and load Ollama model
run: |
bin/task ollama-model
- name: Run init
run: bin/task init
- name: Wait for and setup environment
run: bin/task env-setup
- name: Regenerate and reformat
run: bin/task gen
env:
# must be a SUPERUSER to ensure parameter_default is set
DOCUMENTDB_GEN_URL: postgres://username:password@127.0.0.1:5432/postgres
- name: Build bin/ferretdb
run: bin/task build-host
- name: Wait for and setup environment
run: bin/task env-setup
- name: Run unit tests
run: bin/task test-unit
run: bin/task test-unit TEST_TIMEOUT=10m
env:
GOFLAGS: ${{ runner.debug == '1' && '-v' || '' }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for tools
# The token is not required but should make uploads more stable.
# If secrets are unavailable (for example, for a pull request from a fork), it fallbacks to the tokenless uploads.
#
# Unfortunately, it seems that tokenless uploads fail too often.
# See https://github.com/codecov/codecov-action/issues/837.
#
# We also can't use ${{ vars.CODECOV_TOKEN }}: https://github.com/orgs/community/discussions/44322
- name: Upload coverage information to codecov
uses: codecov/codecov-action@v3
if: always()
uses: codecov/codecov-action@v5
with:
token: 22159d7c-856d-4fe9-8fdb-5d9ecff35514
files: ./cover.txt
flags: unit
disable_file_fixes: true
fail_ci_if_error: true
verbose: true
- name: Upload coverage information to coveralls
if: always()
uses: coverallsapp/github-action@v2
with:
file: ./cover.txt
flag-name: unit
parallel: true
- name: Convert test results to JUnit XML format
if: always()
run: >
./bin/go-junit-report
-in ./unit.txt
-out ./unit.xml
- name: Upload test results to Codecov
if: always()
uses: codecov/test-results-action@v1
with:
flags: unit
file: ./unit.xml
# we don't want them on CI
- name: Clean test and fuzz caches
@@ -135,24 +206,167 @@ jobs:
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
golangci-lint:
name: golangci-lint
runs-on: ubuntu-22.04
timeout-minutes: 10
integration:
# job name must be unique; make it unique and nice
name: ${{ matrix.task }} ${{ matrix.shard_index }}/${{ matrix.shard_total }}
# Do not run this job in parallel for any PR change or branch push
# to save some resources.
concurrency:
group: ${{ github.workflow }}-integration-${{ matrix.task }}-${{ matrix.shard_index }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
strategy:
fail-fast: false
matrix:
task: [postgresql, yugabytedb]
shard_index: [1, 2, 3, 4, 5]
shard_total: [5]
include:
- { task: "mongodb", shard_index: 1, shard_total: 1 }
- { task: "yugabytedb", skip_flaky_check: true } # Too many failures for now
uses: ./.github/workflows/_integration.yml
with:
task: ${{ matrix.task }}
shard_index: ${{ matrix.shard_index }}
shard_total: ${{ matrix.shard_total }}
skip_flaky_check: ${{ matrix.skip_flaky_check || false }}
integration-no-xfail:
name: postgresql no-xfail
# Do not run this job in parallel for any PR change or branch push
# to save some resources.
concurrency:
group: ${{ github.workflow }}-integration-no-xfail-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
# disable for now
if: false
# if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
uses: ./.github/workflows/_integration.yml
with:
task: postgresql
shard_index: 1
shard_total: 1
test_timeout: 5m
no_xfail: true
# https://github.com/lemurheavy/coveralls-public/issues/1636
submit-coveralls:
name: Submit final coveralls report
runs-on: ubuntu-24.04
needs: [test, integration]
if: always() && (github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready'))
steps:
- name: Submit coveralls
if: always()
uses: coverallsapp/github-action@v2
with:
parallel-finished: true
env-data:
name: env-data
runs-on: ubuntu-24.04
timeout-minutes: 10
# Do not run this job in parallel for any PR change or branch push.
concurrency:
group: ${{ github.workflow }}-env-data-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: env-data
- name: Install Task
run: go generate -x
working-directory: tools
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Build bin/ferretdb
run: bin/task build-host
- name: Wait for and setup environment
run: bin/task env-setup
- name: Start FerretDB in the background
run: bin/task run &
- name: Run env-data
run: bin/task env-data
env:
GOFLAGS: ${{ runner.debug == '1' && '-v' || '' }}
golangci-lint:
name: golangci-lint
runs-on: ubuntu-24.04
timeout-minutes: 10
# Do not run this job in parallel for any PR change or branch push.
concurrency:
group: ${{ github.workflow }}-golangci-lint-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
issues: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `golangci-lint run --new` to work
lfs: false # LFS is used only by website
# for branch.txt on pull_request; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
@@ -160,124 +374,5 @@ jobs:
- name: Run linters
uses: FerretDB/github-actions/linters@main
fuzz-short:
name: Fuzz short
runs-on: ubuntu-22.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
path: source
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: fuzz
- name: Install Task
run: go generate -x
working-directory: source/tools
# Use deploy key instead of Personal Access Token (PAT) to limit access to one repository.
# If secrets are not available (for example, for a pull request from a fork), GITHUB_TOKEN PAT is used automatically.
- name: Checkout collected fuzz corpus
uses: actions/checkout@v3
with:
repository: FerretDB/fuzz-corpus
ssh-key: ${{ secrets.FUZZ_CORPUS_DEPLOY_KEY }}
path: fuzz-corpus
fetch-depth: 0 # for commit and push to work
- name: Start environment
run: bin/task env-up-detach
working-directory: source
- name: Run init
run: bin/task init
working-directory: source
- name: Setup corpus
run: bin/task fuzz-corpus
working-directory: source
- name: Wait for and setup environment
run: bin/task env-setup
working-directory: source
# precompile tests with unset GOMAXPROCS
- name: Init fuzzers
run: bin/task fuzz-init
working-directory: source
# TODO https://github.com/FerretDB/FerretDB/issues/238
# TODO https://github.com/FerretDB/FerretDB/issues/344
- name: Run collected fuzzing corpus
run: bin/task fuzz FUZZTIME=1s
working-directory: source
env:
GOMAXPROCS: 1 # otherwise, oom-killer kills fuzzer too often
- name: Collect corpus
if: always()
run: |
bin/task fuzz-corpus
go run ./cmd/fuzztool corpus seed ../fuzz-corpus
working-directory: source
# `secrets` are not supported in `if`, so we have to do this trick with environment variable:
# https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
# https://github.com/actions/runner/issues/520
- name: Push corpus
if: ${{ always() && env.KEY != '' }}
env:
KEY: ${{ secrets.FUZZ_CORPUS_DEPLOY_KEY }}
run: |
git config user.name ferretdb-bot
git config user.email ferretdb-bot@ferretdb.io
git add --all .
git diff-index --quiet HEAD || git commit --message 'Update corpus'
git fetch
git rebase origin/main
git push
working-directory: fuzz-corpus
- name: Collect Linux logs
if: failure()
run: |
mkdir -p /tmp/logs
ls -al /var/log/
sudo cp /var/log/syslog /tmp/logs/
sudo free > /tmp/logs/free.txt
sudo chmod 0666 /tmp/logs/*
working-directory: source
- name: Compress Linux logs before upload
if: failure()
run: zip -r -q -9 linux-logs.zip /tmp/logs
- name: Upload Linux logs
if: failure()
uses: actions/upload-artifact@v3
with:
name: linux-logs
path: linux-logs.zip
retention-days: 1
if-no-files-found: error
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
run: |
git status
git diff --exit-code
working-directory: source
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-143
View File
@@ -1,143 +0,0 @@
---
# Integration tests that need access to secrets.
name: Trusted integration
on:
pull_request_target:
types:
# not for "labeled" to prevent two builds for "labeled" and "unlabeled" when labels are changed
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- releases/*
schedule:
- cron: "12 2 * * *" # after integration workflow to reuse cache
# Do not run this workflow in parallel for any PR change or branch/tag push
# to save some resources.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
jobs:
test:
name: Test ${{ matrix.name }}
runs-on:
group: paid
timeout-minutes: 30
if: >
github.event_name != 'pull_request_target' ||
(
contains(github.event.pull_request.labels.*.name, 'trust') &&
!contains(github.event.pull_request.labels.*.name, 'not ready')
)
strategy:
fail-fast: false
matrix:
include:
- { name: "Hana", task: "hana" }
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Checkout pull request code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: false
ref: ${{ github.event.pull_request.head.sha }}
# for branch.txt on pull_request_target; `main` is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request_target'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: integration
- name: Install Task
run: go generate -x
working-directory: tools
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Wait for and setup environment
run: bin/task env-setup
- name: Run ${{ matrix.task }} tests
run: bin/task test-integration-${{ matrix.task }}
env:
FERRETDB_HANA_URL: ${{ secrets.FERRETDB_HANA_URL }}
# The token is not required but should make uploads more stable.
# If secrets are unavailable (for example, for a pull request from a fork), it fallbacks to the tokenless uploads.
#
# Unfortunately, it seems that tokenless uploads fail too often.
# See https://github.com/codecov/codecov-action/issues/837.
#
# We also can't use ${{ vars.CODECOV_TOKEN }}: https://github.com/orgs/community/discussions/44322
- name: Upload coverage information to codecov
uses: codecov/codecov-action@v3
with:
token: 22159d7c-856d-4fe9-8fdb-5d9ecff35514
files: ./integration/integration-${{ matrix.task }}.txt
flags: integration,${{ matrix.task }}
fail_ci_if_error: true
verbose: true
- name: Upload coverage information to coveralls
uses: coverallsapp/github-action@v2
with:
file: ./integration/integration-${{ matrix.task }}.txt
flag-name: integration-${{ matrix.task }}
parallel: true
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
run: |
git status
git diff --exit-code
submit-coveralls:
name: Submit coveralls
runs-on: ubuntu-22.04
needs: test
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
steps:
- name: Submit coveralls
uses: coverallsapp/github-action@v2
with:
parallel-finished: true
carryforward: unit # workaround for https://github.com/lemurheavy/coveralls-public/issues/1636
-161
View File
@@ -1,161 +0,0 @@
---
# Integration tests that don't need access to secrets.
name: Integration
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- releases/*
schedule:
- cron: "12 0 * * *"
# Do not run this workflow in parallel for any PR change or branch/tag push
# to save some resources.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
jobs:
test:
name: Test ${{ matrix.name }}
runs-on:
group: paid
timeout-minutes: 45
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
strategy:
fail-fast: false
matrix:
include:
- { name: "MongoDB", task: "mongodb" }
- { name: "PostgreSQL", task: "pg" }
- { name: "SQLite", task: "sqlite" }
# - { name: "Tigris", task: "tigris" }
# - { name: "Tigris main", task: "tigris", tigris_dockerfile: "tigris_main" }
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: integration
- name: Install Task
run: go generate -x
working-directory: tools
- name: Start environment
run: bin/task env-up-detach
env:
TIGRIS_DOCKERFILE: ${{ matrix.tigris_dockerfile }}
- name: Run init
run: bin/task init
- name: Wait for and setup environment
run: bin/task env-setup
- name: Run ${{ matrix.task }} tests
run: bin/task test-integration-${{ matrix.task }}
# The token is not required but should make uploads more stable.
# If secrets are unavailable (for example, for a pull request from a fork), it fallbacks to the tokenless uploads.
#
# Unfortunately, it seems that tokenless uploads fail too often.
# See https://github.com/codecov/codecov-action/issues/837.
#
# We also can't use ${{ vars.CODECOV_TOKEN }}: https://github.com/orgs/community/discussions/44322
- name: Upload coverage information to codecov
uses: codecov/codecov-action@v3
with:
token: 22159d7c-856d-4fe9-8fdb-5d9ecff35514
files: ./integration/integration-${{ matrix.task }}.txt
flags: integration,${{ matrix.task }}
fail_ci_if_error: true
verbose: true
- name: Upload coverage information to coveralls
uses: coverallsapp/github-action@v2
with:
file: ./integration/integration-${{ matrix.task }}.txt
flag-name: integration-${{ matrix.task }}
parallel: true
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
run: |
git status
git diff --exit-code
env-data:
name: env-data
runs-on: ubuntu-22.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: env-data
- name: Install Task
run: go generate -x
working-directory: tools
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Wait for and setup environment
run: bin/task env-setup
- name: Run env-data
run: bin/task env-data
submit-coveralls:
name: Submit coveralls
runs-on: ubuntu-22.04
needs: test
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
steps:
- name: Submit coveralls
uses: coverallsapp/github-action@v2
with:
parallel-finished: true
carryforward: unit # workaround for https://github.com/lemurheavy/coveralls-public/issues/1636
+68 -47
View File
@@ -21,11 +21,12 @@ on:
push:
branches:
- main
- main-*
- releases/*
tags:
- "*"
schedule:
- cron: "12 0 * * 1" # on Mondays to pre-fill cache
- cron: "10 1 * * 1" # after cleanup and DocumentDB
# Do not run this workflow in parallel for any PR change or branch/tag push
# to prevent concurrent pushes for the same Docker image tag
@@ -40,13 +41,13 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
build:
name: Build packages
runs-on:
group: paid
timeout-minutes: 90
runs-on: server
timeout-minutes: 40
if: >
github.event_name != 'pull_request_target' ||
@@ -60,19 +61,21 @@ jobs:
packages: write
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout pull request code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0
lfs: false
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
ref: ${{ github.event.pull_request.head.sha }}
# for version.txt on push tags; see https://github.com/actions/checkout/issues/290
@@ -81,7 +84,7 @@ jobs:
git fetch --tags --force
git status
# for branch.txt on pull_request_target; `main` is already checked out on push / schedule
# for branch.txt on pull_request_target; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request_target'
env:
@@ -89,10 +92,8 @@ jobs:
run: git checkout -b $BRANCH
- name: Setup Go
id: setup
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: packages
# no cache-key on server
- name: Install Task
run: go generate -x
@@ -102,79 +103,99 @@ jobs:
run: bin/task init
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
- name: Initialize Docker Buildx builder
run: bin/task docker-init
- name: Extract Docker image names
id: extract
uses: FerretDB/github-actions/extract-docker-tag@main
# mostly to check that this command still works
- name: Build local Docker image
run: bin/task docker-local FILE=production
- name: Define Docker image names
id: tag
run: bin/definedockertag
- name: Login to Docker Hub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ferretdbbot
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Restore Go caches
uses: actions/cache@v3
- name: Login to Quay.io
uses: docker/login-action@v3
with:
path: tmp/docker/gocaches
key: packages-gocaches-${{ steps.setup.outputs.cache_week }}-${{ hashFiles('**/go.mod') }}
restore-keys: |
packages-gocaches-${{ steps.setup.outputs.cache_week }}-
registry: quay.io
username: ferretdbbot
password: ${{ secrets.QUAY_TOKEN }}
- name: Build and push all-in-one Docker images ${{ steps.extract.outputs.all_in_one_images }}
if: steps.extract.outputs.all_in_one_images != ''
run: bin/task docker-all-in-one-push DOCKER_IMAGES=${{ steps.extract.outputs.all_in_one_images }}
- name: Build and push evaluation development Docker images ${{ steps.tag.outputs.eval_dev_images }}
if: steps.tag.outputs.eval_dev_images != ''
run: bin/task docker-eval-dev-push DOCKER_IMAGES=${{ steps.tag.outputs.eval_dev_images }}
- name: Build and push development Docker images ${{ steps.extract.outputs.development_images }}
if: steps.extract.outputs.development_images != ''
run: bin/task docker-development-push DOCKER_IMAGES=${{ steps.extract.outputs.development_images }}
- name: Build and push evaluation Docker images ${{ steps.tag.outputs.eval_images }}
if: steps.tag.outputs.eval_images != ''
run: bin/task docker-eval-push DOCKER_IMAGES=${{ steps.tag.outputs.eval_images }}
- name: Build and push production Docker images ${{ steps.extract.outputs.production_images }}
if: steps.extract.outputs.production_images != ''
run: bin/task docker-production-push DOCKER_IMAGES=${{ steps.extract.outputs.production_images }}
- name: Build and push development Docker images ${{ steps.tag.outputs.development_images }}
if: steps.tag.outputs.development_images != ''
run: bin/task docker-development-push DOCKER_IMAGES=${{ steps.tag.outputs.development_images }}
- name: Build production release binary
run: bin/task build-release
- name: Build and push production Docker images ${{ steps.tag.outputs.production_images }}
if: steps.tag.outputs.production_images != ''
run: bin/task docker-production-push DOCKER_IMAGES=${{ steps.tag.outputs.production_images }}
- name: Upload ferretdb
uses: actions/upload-artifact@v3
- name: Build development binaries
run: bin/task build-development
- name: Upload development binaries
uses: actions/upload-artifact@v5
with:
name: ferretdb
path: bin/ferretdb
name: bin-dev
path: tmp/bin-dev/
retention-days: 1
if-no-files-found: error
- name: Build production binaries
run: bin/task build-production
- name: Upload production binaries
uses: actions/upload-artifact@v5
with:
name: bin
path: tmp/bin/
retention-days: 1
if-no-files-found: error
- name: Build Linux packages
run: bin/task packages
- name: Upload .deb package
uses: actions/upload-artifact@v3
- name: Upload .deb packages
uses: actions/upload-artifact@v5
with:
name: ferretdb.deb
path: tmp/debs/ferretdb.deb
name: debs
path: tmp/debs/
retention-days: 1
if-no-files-found: error
- name: Upload .rpm package
uses: actions/upload-artifact@v3
- name: Upload .rpm packages
uses: actions/upload-artifact@v5
with:
name: ferretdb.rpm
path: tmp/rpms/ferretdb.rpm
name: rpms
path: tmp/rpms/
retention-days: 1
if-no-files-found: error
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+15 -10
View File
@@ -10,6 +10,7 @@ on:
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
@@ -17,7 +18,7 @@ on:
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
cancel-in-progress: true
env:
GOPATH: /home/runner/go
@@ -25,18 +26,23 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
security-scan:
name: Security scan
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
@@ -50,18 +56,17 @@ jobs:
run: go generate -x
working-directory: tools
# https://github.com/aquasecurity/trivy/issues?q=is%3Aissue+%22permission+denied%22
- name: Create directory
run: mkdir -p tmp/trivy/fanal
- name: Scan
run: bin/task --exit-code security
run: bin/task security
# disabled until https://github.com/actions/dependency-review-action/issues/459 is resolved
- name: Check dependencies for PRs
# if: github.event_name == 'pull_request'
if: false
uses: actions/dependency-review-action@v3
uses: actions/dependency-review-action@v4
with:
allow-licenses: Apache-2.0, BSD-3-Clause, MIT
# Workaround for `hashFiles` issue.
# See https://github.com/actions/runner/issues/449#issuecomment-1265837735.
- name: Clean
run: sudo rm -fr .cache
@@ -1,5 +1,5 @@
---
name: JS
name: Test scripts
on:
pull_request:
types:
@@ -9,9 +9,11 @@ on:
- synchronize
paths:
- build/legacy-mongo-shell/*.js
- build/testscripts/*.sql
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
@@ -19,7 +21,7 @@ on:
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
cancel-in-progress: true
env:
GOPATH: /home/runner/go
@@ -27,18 +29,23 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
testjs:
name: Test script
runs-on: ubuntu-22.04
run:
name: Run test scripts
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
@@ -46,12 +53,19 @@ jobs:
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: testjs
cache-key: testscripts
- name: Install Task
run: go generate -x
working-directory: tools
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
@@ -64,20 +78,26 @@ jobs:
- name: Wait for and setup environment
run: bin/task env-setup
- name: Start FerretDB in the background
- name: Start FerretDB (no auth) in the background
run: >
bin/ferretdb
--listen-addr=:27017
--proxy-addr=127.0.0.1:47017
--proxy-addr=127.0.0.1:37017
--no-auth
--mode=diff-normal
--handler=pg
--postgresql-url=postgres://username@127.0.0.1:5432/ferretdb
--postgresql-url='postgres://username:password@127.0.0.1:5432/postgres'
2> ferretdb.log &
- name: Run testjs for MongoDB
run: bin/task testjs PORT=47017
- name: Run testsql for PostgreSQL
if: always()
run: bin/task testsql
- name: Run testjs for FerretDB
- name: Run testjs for MongoDB (no auth)
if: always()
run: bin/task testjs TESTJS_PORT=37017
- name: Run testjs for FerretDB (no auth)
if: always()
run: bin/task testjs
- name: Compress FerretDB log before upload
@@ -86,7 +106,7 @@ jobs:
- name: Upload FerretDB log
if: failure()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v5
with:
name: ferretdb-log
path: ferretdb-log.zip
@@ -96,6 +116,7 @@ jobs:
- name: Show FerretDB log
if: always()
run: |
echo "::remove-matcher owner=go::"
cat ferretdb.log
rm ferretdb.log
@@ -105,6 +126,8 @@ jobs:
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+25 -9
View File
@@ -21,11 +21,12 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
blog-preview:
name: Preview blog
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
if: >
@@ -38,9 +39,13 @@ jobs:
name: cloudflare-dev-blog
url: ${{ steps.extract.outputs.extracted_url }}
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for wrangler to work
lfs: true
@@ -52,7 +57,7 @@ jobs:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
# no actionsdesk/lfs-warning due to https://github.com/ActionsDesk/lfs-warning/issues/150
# no ppremk/lfs-warning due to https://github.com/ppremk/lfs-warning/issues/150
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
@@ -68,6 +73,8 @@ jobs:
- name: Build blog
run: bin/task blog
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for checkdocs
- name: Check dirty
run: |
@@ -75,7 +82,7 @@ jobs:
git diff --exit-code
- name: Deploy to Cloudflare Pages
run: bin/task --exit-code blog-cloudflare-preview | tee deploy.txt
run: bin/task blog-cloudflare-preview | tee deploy.txt
env:
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
@@ -86,7 +93,7 @@ jobs:
docs-preview:
name: Preview docs
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
if: >
@@ -98,18 +105,22 @@ jobs:
name: cloudflare-dev-docs
url: ${{ steps.extract.outputs.extracted_url }}
permissions:
contents: read
steps:
# We can't easily download build results from the Docs workflow:
# https://github.com/actions/download-artifact/issues/172
# Just build them again instead.
# That also allows us to pass branch name, commit hash, etc from git to wrangler.
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0 # for wrangler to work
lfs: true
ref: ${{ github.event.pull_request.head.sha }}
ref: ${{ github.event.pull_request.head.sha }} # TODO https://github.com/FerretDB/github-actions/issues/211
# for Wrangler / Cloudflare Pages on pull_request_target
- name: Name branch
@@ -117,7 +128,7 @@ jobs:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
# no actionsdesk/lfs-warning due to https://github.com/ActionsDesk/lfs-warning/issues/150
# no ppremk/lfs-warning due to https://github.com/ppremk/lfs-warning/issues/150
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
@@ -131,8 +142,13 @@ jobs:
- name: Build tools
run: bin/task env-pull
- name: Create directory
run: mkdir -p tmp/githubcache
- name: Build docs
run: bin/task docs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for checkdocs
- name: Check dirty
run: |
@@ -140,7 +156,7 @@ jobs:
git diff --exit-code
- name: Deploy to Cloudflare Pages
run: bin/task --exit-code docs-cloudflare-preview | tee deploy.txt
run: bin/task docs-cloudflare-preview | tee deploy.txt
env:
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
+19 -14
View File
@@ -1,19 +1,24 @@
# Please use global .gitignore file for .vscode/, .idea/, etc.
# This file is used only for repository-specific patterns.
# Please use global .gitignore file for .DS_Store, .idea/, go.work, .envrc, etc.
# See https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer
# our tools
bin/
# caches
.task/
.cache/
vendor/
# development and build artifacts, temporary files, etc
*.out
*.sqlite
*.txt
**/testdata/fuzz/
state.json
telemetry.json
*.bc
*.o
*.so
*.out
*.tmp
*.txt
!website/static/*.txt
*.xml
.task/
bin/
tmp/
vendor/
website/build/
**/testdata/fuzz/
+4
View File
@@ -0,0 +1,4 @@
[submodule "documentdb"]
path = build/postgres-documentdb/documentdb
url = https://github.com/FerretDB/documentdb.git
branch = ferretdb
+44 -22
View File
@@ -5,24 +5,31 @@
run:
timeout: 3m
# bin/golangci-lint linters -c .golangci-new.yml
linters-settings:
asasalint:
exclude:
- ^lazyerrors\.Errorf$
use-builtin-exclusions: true
ignore-test: false
copyloopvar:
check-alias: true
errcheck:
check-type-assertions: false
check-blank: false
disable-default-exclusions: false
exclude-functions:
- (*github.com/jackc/pgx/v5.Conn).Close
errorlint:
# see caveats at https://github.com/polyfloyd/go-errorlint#fmterrorf-wrapping-verb
errorf: false
asserts: true
comparison: true
govet:
check-shadowing: true
enable-all: true
settings:
shadow:
strict: true
revive:
ignore-generated-header: true
severity: warning
@@ -30,7 +37,7 @@ linters-settings:
rules:
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md
- name: exported
arguments: [checkPrivateReceivers]
arguments: [checkPrivateReceivers, disableStutteringCheck]
- name: package-comments
staticcheck:
checks: ["all"]
@@ -55,7 +62,10 @@ linters:
- asciicheck
- depguard
- exhaustive
- exhaustruct
- forbidigo
- gci
- gochecksumtype
- goconst
- godot
- godox
@@ -68,46 +78,55 @@ linters:
- lll
- misspell
- nolintlint
- sloglint
- tagalign
- unparam
- unused
- whitespace
# TODO https://github.com/FerretDB/FerretDB/issues/2748
- bidichk
- bodyclose
- canonicalheader
- containedctx
- contextcheck
- cyclop
- deadcode
- decorder
- dogsled
- dupl
- dupword
- durationcheck
- err113
- errchkjson
- errname
- execinquery
- exhaustivestruct
- exhaustruct
- exportloopref
- forbidigo
- fatcontext
- forcetypeassert
- funlen
- ginkgolinter
- gocheckcompilerdirectives
- gochecknoglobals
- gochecknoinits
- gocognit
- gocritic
- gocyclo
- goerr113
- gofmt
- gofumpt
- gomnd
- gomoddirectives
- goprintffuncname
- gosec
- gosmopolitan
- grouper
- ifshort
- iface
- inamedparam
- interfacebloat
- intrange
- ireturn
- loggercheck
- maintidx
- makezero
- mirror
- mnd
- musttag
- nakedret
- nestif
- nilerr
@@ -116,31 +135,31 @@ linters:
- nonamedreturns
- nosprintfhostport
- paralleltest
- perfsprint
- prealloc
- predeclared
- promlinter
- protogetter
- reassign
- recvcheck
- rowserrcheck
- sloglint
- spancheck
- sqlclosecheck
- stylecheck
- tagliatelle
- tenv
- testableexamples
- testifylint
- thelper
- tparallel
- typecheck
- unconvert
- unparam
- varcheck
- usestdlibvars
- varnamelen
- wastedassign
- wrapcheck
# deprecated
- golint
- interfacer
- maligned
- nosnakecase
- scopelint
- structcheck
- zerologlint
- nlreturn # too annoying
- testpackage # we test internals
@@ -148,5 +167,8 @@ linters:
issues:
max-issues-per-linter: 0
max-same-issues: 0
exclude-use-default: false
new-from-rev: origin/main
# whole-files: true
exclude-use-default: false
+167 -81
View File
@@ -7,35 +7,120 @@ run:
linters-settings:
# asciicheck
depguard:
list-type: blacklist
packages:
- golang.org/x/net/context # use stdlib's context instead
- github.com/FerretDB/FerretDB/internal/bson
- github.com/FerretDB/FerretDB/internal/handlers/pg/pgdb
- github.com/FerretDB/FerretDB/internal/handlers/sjson
- github.com/FerretDB/FerretDB/internal/handlers/tigris/tigrisdb
- github.com/FerretDB/FerretDB/internal/handlers/tigris/tjson
- github.com/FerretDB/FerretDB/internal/types/fjson
- github.com/jackc/pgconn
- github.com/jackc/pgproto3
- github.com/jackc/pgtype
- github.com/jackc/pgx/v4
- github.com/tigrisdata/tigris-client-go/api/client/v1/api
- github.com/tigrisdata/tigris-client-go/filter # We use our own filter without generics (see tigris/tigrisdb/filter)
rules:
old-packages:
files:
- $all
deny:
- pkg: golang.org/x/net/context
desc: use `context` package instead
- pkg: golang.org/x/exp/slices
desc: use `slices` package instead
- pkg: golang.org/x/exp/maps
desc: use `maps` package instead
- pkg: github.com/jackc/pgconn
desc: use `github.com/jackc/pgx/v5/pgconn` package instead
- pkg: github.com/jackc/pgproto3
desc: use `github.com/jackc/pgx/v5/pgproto3` package instead
- pkg: github.com/jackc/pgtype
desc: use `github.com/jackc/pgx/v5/pgtype` package instead
- pkg: github.com/jackc/pgx$
desc: use `github.com/jackc/pgx/v5` package instead
- pkg: github.com/jackc/pgx/v4
desc: use `github.com/jackc/pgx/v5` package instead
# TODO https://github.com/FerretDB/FerretDB/issues/4798
# - pkg: go.mongodb.org/mongo-driver/bson
# desc: use `go.mongodb.org/mongo-driver/v2/bson` package instead
# - pkg: go.mongodb.org/mongo-driver/mongo
# desc: use `go.mongodb.org/mongo-driver/v2/mongo` package instead
# - pkg: github.com/xdg-go/scram
# desc: use `github.com/FerretDB/FerretDB/v2/internal/util/scram` package instead
ferretdb-in-tools:
files:
- "**/tools/**/*.go"
deny:
- pkg: github.com/FerretDB/FerretDB/v2/internal/
desc: tools should not import FerretDB code
wirebson:
files:
- $all
- "!**/cmd/envtool/*.go"
- "!**/internal/clientconn/*.go"
- "!**/internal/dataapi/server/*.go"
- "!**/internal/documentdb/**.go"
- "!**/internal/driver/*.go"
- "!**/internal/handler/**.go"
- "!**/internal/mcp/*.go"
- "!**/internal/mongoerrors/*.go"
- "!**/internal/util/logging/*.go"
- "!**/internal/util/scram/*.go"
- "!**/internal/util/testutil/*.go"
deny:
- pkg: github.com/FerretDB/wire/wirebson
documentdb:
files:
- "**/internal/documentdb/genwrap/*.go"
deny:
- pkg: github.com/FerretDB/FerretDB/v2/internal/documentdb
cursor:
files:
- $all
- "!**/internal/documentdb/**.go"
deny:
- pkg: github.com/FerretDB/FerretDB/v2/internal/documentdb/cursor
exhaustive:
default-signifies-exhaustive: false
exhaustruct:
include:
- TODO
forbidigo:
forbid:
- p: ^\Qpgxpool.Pool.AcquireFunc\E$
pkg: ^\Qgithub.com/jackc/pgx/v5/pgxpool\E$
msg: Use `Acquire` with `defer Release()` instead.
# TODO https://github.com/FerretDB/FerretDB/issues/4798
- p: ^\Qbson.E\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/bson\E$
msg: Use `*wirebson.Document` or `*wirebson.Array` instead.
- p: ^\Qbson.D\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/bson\E$
msg: Use `*wirebson.Document` instead.
- p: ^\Qbson.M\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/bson\E$
msg: Use `*wirebson.Document` instead.
- p: ^\Qbson.A\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/bson\E$
msg: Use `*wirebson.Array` instead.
- p: ^\Qbson.E\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/v2/bson\E$
msg: Use `*wirebson.Document` or `*wirebson.Array` instead.
- p: ^\Qbson.D\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/v2/bson\E$
msg: Use `*wirebson.Document` instead.
- p: ^\Qbson.M\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/v2/bson\E$
msg: Use `*wirebson.Document` instead.
- p: ^\Qbson.A\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/v2/bson\E$
msg: Use `*wirebson.Array` instead.
exclude-godoc-examples: true
analyze-types: true
gci:
sections:
- standard
- default
- prefix(github.com/FerretDB/FerretDB)
- prefix(github.com/FerretDB/FerretDB/v2/)
goconst:
min-occurrences: 5
ignore-tests: true
godot:
scope: toplevel
exclude:
- go-sumtype:decl
- check interfaces
capital: true
godox:
@@ -43,6 +128,8 @@ linters-settings:
- BUG
- FIXME
- HACK
- lala
- lalala
goheader:
# Please do not update it, including bumping a year.
template: |-
@@ -60,12 +147,12 @@ linters-settings:
See the License for the specific language governing permissions and
limitations under the License.
goimports:
local-prefixes: github.com/FerretDB/FerretDB
local-prefixes: github.com/FerretDB/FerretDB/v2
gomodguard:
blocked:
modules:
- go.mongodb.org/mongo-driver:
reason: "FerretDB should not depend on MongoDB Go driver."
- github.com/FerretDB/FerretDB:
reason: "Use `github.com/FerretDB/FerretDB/v2/...` instead."
gosimple:
checks: ["all"]
govet:
@@ -75,17 +162,26 @@ linters-settings:
- nilness
- shadow
importas:
no-unaliased: false
no-extra-aliases: true
# https://github.com/julz/importas/issues/15
no-unaliased: true
no-extra-aliases: false
alias:
- pkg: github.com/tigrisdata/tigris-client-go/api/server/v1
alias: api
- pkg: runtime/debug
alias: runtimedebug
- pkg: github.com/prometheus/client_model/go
alias: dto
- pkg: github.com/jackc/pgx-zap
alias: zapadapter
- pkg: modernc.org/sqlite/lib
alias: sqlitelib
- pkg: go.opentelemetry.io/otel/attribute
alias: otelattribute
- pkg: go.opentelemetry.io/otel/codes
alias: otelcodes
- pkg: go.opentelemetry.io/otel/trace
alias: oteltrace
- pkg: go.opentelemetry.io/otel/sdk/resource
alias: otelsdkresource
- pkg: go.opentelemetry.io/otel/sdk/trace
alias: otelsdktrace
- pkg: go.opentelemetry.io/otel/semconv/v1.34.0
alias: otelsemconv
# ineffassign
lll:
line-length: 130
@@ -93,20 +189,51 @@ linters-settings:
misspell:
ignore-words:
- guiness # present in the test dataset
extra-words: # https://go.dev/wiki/Spelling, https://github.com/golangci/misspell/issues/11
- typo: "iff"
correction: "if"
- typo: "cancelation"
correction: "cancellation"
nolintlint:
allow-unused: false
allow-leading-space: false
allow-no-explanation: []
require-explanation: true
require-specific: true
revive:
ignore-generated-header: true
severity: error
rules: []
sloglint:
no-mixed-args: true
kv-only: false
attr-only: true
no-global: "all"
context: "scope"
static-msg: false # TODO https://github.com/FerretDB/FerretDB/issues/3421
no-raw-keys: false # TODO https://github.com/FerretDB/FerretDB/issues/3421
key-naming-case: snake
args-on-sep-lines: false
staticcheck:
checks:
- all
- -SA1019 # ignore deprecation errors in existing code; new code is checked by the other configuration
# unused
tagalign:
sort: true
order:
- name
- cmd
- arg
- default
- help
unparam:
check-exported: false
unused:
field-writes-are-uses: false
post-statements-are-reads: false
exported-fields-are-used: false
parameters-are-used: true # it should be false, TODO https://github.com/FerretDB/FerretDB-DocumentDB/issues/823
local-variables-are-used: false
generated-is-used: false
whitespace:
multi-if: false
multi-func: false
@@ -117,7 +244,10 @@ linters:
- asciicheck
- depguard
- exhaustive
- exhaustruct
- forbidigo
- gci
- gochecksumtype
- goconst
- godot
- godox
@@ -132,7 +262,10 @@ linters:
- misspell
- nolintlint
- revive
- sloglint
- staticcheck
- tagalign
- unparam
- unused
- whitespace
@@ -142,57 +275,10 @@ issues:
exclude-use-default: false
exclude-rules:
# only `wire` package can import `bson` package
- linters: [depguard]
path: internal/wire
text: bson
# only `testutil`, `bson` (for testing), and `wire` packages can import `fjson` package
- linters: [depguard]
path: internal/util/testutil
text: fjson
- linters: [depguard]
path: internal/bson
text: fjson
- linters: [depguard]
path: internal/wire
text: fjson
# only `pg` handler can import `pgdb` package, no other handler can do that
- linters: [depguard]
path: internal/handlers/pg
text: pgdb
- linters: [depguard]
path: internal/handlers/registry
text: pgdb
- linters: [depguard]
path: cmd/envtool
text: pgdb
# only `pg` handler and `sqlite` backend can import `sjson` package, no other handlers or backends can do that
- linters: [depguard]
path: internal/handlers/pg
text: sjson
- linters: [depguard]
path: internal/backends/sqlite
test: sjson
# only `tigris` handler can import `tigrisdb` package, no other handler can do that
- linters: [depguard]
path: internal/handlers/tigris
text: tigrisdb
- linters: [depguard]
path: internal/handlers/registry
text: tigrisdb
- linters: [depguard]
path: cmd/envtool
text: tigrisdb
# only `tigris` handler can import `tjson` package, no other handler can do that
- linters: [depguard]
path: internal/handlers/tigris
text: tjson
# we don't want to introduce that constant
- linters: [goconst]
text: "^string `_id` has \\d+ occurrences, make it a constant"
- linters: [forbidigo]
path: "\\Qferretdb/ferretdb_test.go"
text: "\\Quse of `bson.D` forbidden"
+6
View File
@@ -0,0 +1,6 @@
# We can't have it in build/.prettierignore due to https://github.com/prettier/prettier/issues/15428
# Textlint uses the same format, so we re-use the file.
build/postgres-documentdb/documentdb/**
internal/dataapi/api/openapi.json
internal/dataapi/api/openapi-original.json
website/static/codapi/snippet.js
+575 -293
View File
@@ -2,337 +2,619 @@
<!-- markdownlint-disable MD024 MD034 -->
## [v1.3.0](https://github.com/FerretDB/FerretDB/releases/tag/v1.3.0) (2023-06-05)
## [v2.7.0](https://github.com/FerretDB/FerretDB/releases/tag/v2.7.0) (2025-11-10)
### New Features 🎉
(We skipped v2.6.0 to align DocumentDB and FerretDB version numbers.)
- Implement positional operator in projection by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2688
- Implement `logout` command by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/2639
This version works best with
[DocumentDB v0.107.0-ferretdb-2.7.0](https://github.com/FerretDB/documentdb/releases/tag/v0.107.0-ferretdb-2.7.0).
### Fixed Bugs 🐛
### Breaking changes
- Fix reporting of updates availability by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2653
- Fix `.deb` and `.rpm` package versions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2725
- Allow query to be type null in `distinct` command by @b1ron in https://github.com/FerretDB/FerretDB/pull/2658
- Fix path collisions for multiple update operators by @noisersup in https://github.com/FerretDB/FerretDB/pull/2713
### Enhancements 🛠
- Fix `_id` formatting in update error messages by @noisersup in https://github.com/FerretDB/FerretDB/pull/2711
### Documentation 📄
- Add release blog post for FerretDB version 1.2.0 by @Fashander in https://github.com/FerretDB/FerretDB/pull/2686
- Update `$project` in Supported Commands by @Fashander in https://github.com/FerretDB/FerretDB/pull/2710
- Add formatter for markdown tables by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2693
- Reformat and lint more documentation files by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2740
- Document aggregation operations by @Fashander in https://github.com/FerretDB/FerretDB/pull/2672
- Improve authentication documentation by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2737
### Other Changes 🤖
- Refactor `gitBinaryMaskParam` function by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2634
- Add `distinct` command errors test by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2687
- Clarify what's left in handling OP_MSG checksum by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2677
- Return a better error for authentication problems by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2703
- Aggregation operators refactor by @noisersup in https://github.com/FerretDB/FerretDB/pull/2664
- Implement `envtool version` command by @jeremyphua in https://github.com/FerretDB/FerretDB/pull/2714
- Make `go test -list=.` work by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2718
- Include Hana in integration tests by @polyal in https://github.com/FerretDB/FerretDB/pull/2715
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2702
- Add `logout` test for all backend by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2726
- Fix telemetry reporter logging by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2707
- Add supported aggregations to the `buildInfo` output by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/2716
- Add aggregation operator tests by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2724
- Add more consistency to table tests' field names by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2717
- Don't use `sjson.GetTypeOfValue` where it shouldn't be used by @noisersup in https://github.com/FerretDB/FerretDB/pull/2728
- Unify test file names by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2709
- Make `testFindAndModifyCompat` work with `compatTestCaseResultType` by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2739
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2745
- Call `ListSpecifications` driver's method in tests to check indexes by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2746
- Simplify `CountIterator` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2759
- Check for `nil` values in iterators explicitly by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2758
- Trigger GC to run finalizers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2771
- Update `golangci-lint` config by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2772
- Remove the need to call `DeepCopy` in some places by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2774
- Clean-up `lazyerrors`, use them in more places by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2770
- Replace document slices with iterators by @noisersup in https://github.com/FerretDB/FerretDB/pull/2730
- Fix `findAndModify` tests for MongoDB 6.0.6 by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2779
- Implement a few command stubs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2777
- Add more handler tests by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2769
- Remove `findAndModify` integration tests with `$` prefixed key for MongoDB 6.0.6 compatibility by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2785
## New Contributors
- @jeremyphua made their first contribution in https://github.com/FerretDB/FerretDB/pull/2714
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/42?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v1.2.1...v1.3.0).
## [v1.2.1](https://github.com/FerretDB/FerretDB/releases/tag/v1.2.1) (2023-05-24)
### Fixed Bugs 🐛
- Fix reporting of updates availability by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2653
### Other Changes 🤖
- Return a better error for authentication problems by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2703
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/43?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v1.2.0...v1.2.1).
## [v1.2.0](https://github.com/FerretDB/FerretDB/releases/tag/v1.2.0) (2023-05-22)
There are some changes in our Prometheus metrics and OpenTelemetry traces.
Please note that they are
[not stable yet](https://docs.ferretdb.io/v2.7/configuration/observability/).
### What's Changed
This release includes a highly experimental and unsupported SQLite backend.
It will be improved in future releases.
#### Basic MCP server
### Fixed Bugs 🐛
This release adds basic MCP server support.
Future release will bring additional functionality.
- Fix compatibility with C# driver by @b1ron in https://github.com/FerretDB/FerretDB/pull/2613
- Fix a bug with unset field sorting by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2638
- Return `int64` values for `dbStats` and `collStats` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2642
- Return command error from `findAndModify` by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2646
- Fix index creation on nested fields by @wqhhust in https://github.com/FerretDB/FerretDB/pull/2637
#### Connectivity improvements
### Enhancements 🛠
- Perform `insertMany` in a single transaction by @raeidish in https://github.com/FerretDB/FerretDB/pull/2532
- Relax PostgreSQL connection checks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2602
- Cleanup `insert` command by @noisersup in https://github.com/FerretDB/FerretDB/pull/2609
- Support dot notation in projection by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2536
### Documentation 📄
- Add FerretDB v1.1.0 release blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/2594
- Update blog post image for 1.1.0 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2601
- Add documentation for `.rpm` packages by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2604
- Fix a typo in a blog post by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2611
- Fix typo on RPM package file name by @christiano in https://github.com/FerretDB/FerretDB/pull/2628
- Update documentation formatting by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2640
- Add blog post on "Meteor and FerretDB" by @Fashander in https://github.com/FerretDB/FerretDB/pull/2654
### Other Changes 🤖
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2592
- Remove `TODO` comment for closed issue by @adetunjii in https://github.com/FerretDB/FerretDB/pull/2573
- Add experimental integration test flag for pushdown sorting by @noisersup in https://github.com/FerretDB/FerretDB/pull/2595
- Extract handler parameters from corresponding structure by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2513
- Add `shell` subcommands (`mkdir`, `rmdir`) in `envtool` by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/2596
- Add basic postcondition checker for errors by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2607
- Add `sqlite` handler stub by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2608
- Make protocol-level crashes easier to understand by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2610
- Simplify `envtool shell` subcommands by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2614
- Cleanup old Docker images by @wqhhust in https://github.com/FerretDB/FerretDB/pull/2533
- Fix exponential backoff minimum duration by @noisersup in https://github.com/FerretDB/FerretDB/pull/2578
- Fix `count`'s `query` parameter by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2622
- Add a README.md file for assertions by @b1ron in https://github.com/FerretDB/FerretDB/pull/2569
- Use `ExtractParameters` in handlers by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2620
- Verify `OP_MSG` message checksum by @adetunjii in https://github.com/FerretDB/FerretDB/pull/2540
- Separate codebase for aggregation `$project` and query `projection` by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2631
- Implement `envtool shell read` subcommand by @wqhhust in https://github.com/FerretDB/FerretDB/pull/2626
- Cleanup projection by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2641
- Add common backend interface prototype by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2619
- Add SQLite handler flags by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2651
- Add tests for aggregation expressions with dots in `$group` aggregation stage by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2636
- Implement some SQLite backend commands by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2655
- Fix tests to assert correct error by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2546
- Aggregation expression refactor by @noisersup in https://github.com/FerretDB/FerretDB/pull/2644
- Move common commands to `commoncommands` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2660
- Add basic observability into backend interfaces by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2661
- Implement metadata storage by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2656
- Add `Query` to the common backend interface by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2662
- Implement query request for SQLite backend by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2665
- Add test case for read in envtools by @wqhhust in https://github.com/FerretDB/FerretDB/pull/2657
- Run integration tests for `sqlite` handler by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2666
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2671
- Create SQLite directory if needed by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2673
- Implement SQLite `update` and `delete` commands by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2674
### New Contributors
- @adetunjii made their first contribution in https://github.com/FerretDB/FerretDB/pull/2573
- @christiano made their first contribution in https://github.com/FerretDB/FerretDB/pull/2628
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/41?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v1.1.0...v1.2.0).
## [v1.1.0](https://github.com/FerretDB/FerretDB/releases/tag/v1.1.0) (2023-05-09)
PostgreSQL connections are now reused, often yielding modest performance gains.
### New Features 🎉
- Implement projection fields assignment by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2484
- Implement `$project` pipeline aggregation stage by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2383
- Handle `create` and `drop` commands in Hana handler by @polyal in https://github.com/FerretDB/FerretDB/pull/2458
- Implement `renameCollection` command by @b1ron in https://github.com/FerretDB/FerretDB/pull/2343
### Fixed Bugs 🐛
- Fix `findAndModify` for `$exists` query operator by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2385
- Fix `SchemaStats` to return correct data by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2426
- Fix `findAndModify` for `$set` operator setting `_id` by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2507
- Fix `update` for conflicting dot notation paths by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2521
- Fix `$` path errors for sort by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2534
- Fix empty projections panic by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2562
- Fix `runCommand`'s inserts of documents without `_id`s by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/2574
- Add basic MCP server by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5279
- Implement DataAPI graceful shutdown and add OpenAPI spec endpoint by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5357
- Improve proxy mode observability by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5440
- Add tracing of SQL queries by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5514
### Enhancements 🛠
- Validate `scale` param for `dbStats` and `collStats` correctly by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2418
- Allow database name contain uppercase characters by @syasyayas in https://github.com/FerretDB/FerretDB/pull/2504
- Add identifying Arch Linux version in `hostInfo` command by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/2525
- Handle absent `os-release` file by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/2541
- Improve handling of `os-release` files by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/2553
- Add `PostgreSQL` metrics by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5427
- Rename OpenTelemetry spans by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5512
### Documentation 📄
- Document test script by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2353
- Use `draft` instead of `unlisted` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2372
- Make example docker compose file restart on failure by @noisersup in https://github.com/FerretDB/FerretDB/pull/2376
- Document how to get logs by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2355
- Update writing guide by @Fashander in https://github.com/FerretDB/FerretDB/pull/2373
- Add comments to our documentation workflow by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2390
- Add blogpost: Announcing FerretDB 1.0 GA - a truly Open Source MongoDB alternative by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2397
- Update documentation for index options by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2417
- Add query pushdown documentation by @noisersup in https://github.com/FerretDB/FerretDB/pull/2339
- Update README.md to link to SSPL by @cooljeanius in https://github.com/FerretDB/FerretDB/pull/2420
- Improve documentation for Docker by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2396
- Add more detailed PR guides in CONTRIBUTING.md by @AuruTus in https://github.com/FerretDB/FerretDB/pull/2435
- Remove a few double spaces by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2431
- Add image for a future blog post by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2453
- Add blogpost - Using FerretDB with Studio 3T by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2454
- Fix YAML indentation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2455
- Update blog post on Using FerretDB with Studio3T by @Fashander in https://github.com/FerretDB/FerretDB/pull/2457
- Document `createIndexes`, `listIndexes`, and `dropIndexes` commands by @Fashander in https://github.com/FerretDB/FerretDB/pull/2488
- Add blog post on Formio by @Fashander in https://github.com/FerretDB/FerretDB/pull/5395
- Document cloud instance deployment and setup by @Fashander in https://github.com/FerretDB/FerretDB/pull/5424
- Update content guide by @Fashander in https://github.com/FerretDB/FerretDB/pull/5441
- Update compatible apps by @Fashander in https://github.com/FerretDB/FerretDB/pull/5442
- Add documentation page stub for MCP server by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5451
- Add FerretDB Cloud blog post by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5461
- Update cloud installation docs by @Fashander in https://github.com/FerretDB/FerretDB/pull/5466
### Other Changes 🤖
- Allow setting "package" variable with a testing flag by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2357
- Make it easier to use Docker-related Task targets by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2358
- Do not mark released binaries as dirty by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2371
- Make Docker Compose flags compatible by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2377
- Bump dependencies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2367
- Fix version.txt generation for git tags by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2388
- Fix types order linter by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2391
- Cleanup deprecated errors by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2411
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2408
- Use parallel tests consistently by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2409
- Compress CI artifacts by @noisersup in https://github.com/FerretDB/FerretDB/pull/2424
- Use exponential backoff with jitter by @j0holo in https://github.com/FerretDB/FerretDB/pull/2419
- Add Mergify rules for blog posts by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2434
- Migrate to `pgx/v5` by @craigpastro in https://github.com/FerretDB/FerretDB/pull/2439
- Make it harder to misuse iterators by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2428
- Update PR template by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2441
- Rename testing flag by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2437
- Fix compilation on riscv64 by @afiskon in https://github.com/FerretDB/FerretDB/pull/2456
- Cleanup exponential backoff with jitter by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2443
- Add workaround for CockroachDB issue by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2464
- Implement blog posts previews by @noisersup in https://github.com/FerretDB/FerretDB/pull/2433
- Introduce integration benchmarks by @noisersup in https://github.com/FerretDB/FerretDB/pull/2381
- Add tests to findAndModify on `$exists` operator by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2422
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2479
- Refactor aggregation by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2463
- Tweak documentation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2452
- Fix query projection for top level fields by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2386
- Handle `envtool` panic on timeout by @syasyayas in https://github.com/FerretDB/FerretDB/pull/2499
- Enable debugging tracing of SQL queries by @craigpastro in https://github.com/FerretDB/FerretDB/pull/2467
- Update blog file names to match with slug by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2497
- Add benchmark for replacing large document by @noisersup in https://github.com/FerretDB/FerretDB/pull/2482
- Add more documentation-related items to definition of done by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2494
- Return unsupported operator error for `$` projection operator by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2512
- Use `update_available` from Beacon by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2496
- Use iterator in aggregation stages by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2480
- Increase timeout for tests by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2508
- Add `InsertMany` benchmark by @raeidish in https://github.com/FerretDB/FerretDB/pull/2518
- Add coveralls.io integration by @noisersup in https://github.com/FerretDB/FerretDB/pull/2483
- Add linter for checking blog posts by @raeidish in https://github.com/FerretDB/FerretDB/pull/2459
- Add a YAML formatter by @wqhhust in https://github.com/FerretDB/FerretDB/pull/2485
- Fix `collStats` for Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2520
- Small addition to YAML formatter usage by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2524
- Cleanup of blog post linter for slug by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2526
- Pushdown simplest sorting for `find` command by @noisersup in https://github.com/FerretDB/FerretDB/pull/2506
- Move `handlers/pg/pjson` to `handlers/sjson` by @craigpastro in https://github.com/FerretDB/FerretDB/pull/2531
- Check test database name length in compat test setup by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2527
- Document `not ready` issues label by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2544
- Remove version and name assertions in integration tests by @raeidish in https://github.com/FerretDB/FerretDB/pull/2552
- Add helpers for iterators and generators by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2542
- Do various small cleanups by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2561
- Pushdown simplest sorting for `aggregate` command by @noisersup in https://github.com/FerretDB/FerretDB/pull/2530
- Move handlers parameters to common by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2529
- Use our own Prettier Docker image by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2535
- Improve fuzzing with recorded seed data by @fenogentov in https://github.com/FerretDB/FerretDB/pull/2392
- Add proper CLI to `envtool` - `envtool setup` subcommand by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/2570
- Recover from more errors, close connection less often by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2564
- Tweak issue templates and contributing docs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2572
- Refactor integration benchmarks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2537
- Do panic in integration tests if connection can't be established by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2577
- Small refactoring by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2575
- Merge `no ci` label into `not ready` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2580
- Use middleware by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5377
- Use generated structs in Data API by @noisersup in https://github.com/FerretDB/FerretDB/pull/5382
- Upload YugabyteDB log files by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5401
- Update documentation to point to the next release by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5423
- Bump YugabyteDB to stable version by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5428
- Use QEMU on arm64 for Yugabyte for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5429
- Add comments to supervisord config by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5430
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5431
- Make `Run` wait for all `Handle` calls to finish by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5434
- Tweak `conninfo` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5435
- Add middleware by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5437
- Update expected PostgreSQL version by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5438
- Avoid hijacking connections from the pool and immediately closing them by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5443
- Remove flaky test by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5444
- Add TODO comment about Debian 13 Trixie by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5450
- Add MCP tools by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5452
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5455
- Update `wire` dependency by @noisersup in https://github.com/FerretDB/FerretDB/pull/5465
- Add helpers for lazy logging by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5467
- Move to `documentdb/documentdb` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5468
- Update dependencies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5479
- Add a test for `*documentdb.Conn` finalizing by @noisersup in https://github.com/FerretDB/FerretDB/pull/5484
- Finalize PostgreSQL metrics by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5485
- Fix spelling in `.go` files by @jsoref in https://github.com/FerretDB/FerretDB/pull/5492
- Fix `CODEOWNERS` grammar by @jsoref in https://github.com/FerretDB/FerretDB/pull/5495
- Use Go 1.25.1 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5508
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5509
- Minor observability cleanup by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5511
- Bump dependencies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5519
- Use Go 1.25.3 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5525
- Skip flaky test for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5526
- Use forked lazyerrors by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5527
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5528
- Use Go 1.25.4 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5534
- Bump DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5536
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5537
### New Contributors
- @cooljeanius made their first contribution in https://github.com/FerretDB/FerretDB/pull/2420
- @j0holo made their first contribution in https://github.com/FerretDB/FerretDB/pull/2419
- @AuruTus made their first contribution in https://github.com/FerretDB/FerretDB/pull/2435
- @craigpastro made their first contribution in https://github.com/FerretDB/FerretDB/pull/2439
- @afiskon made their first contribution in https://github.com/FerretDB/FerretDB/pull/2456
- @syasyayas made their first contribution in https://github.com/FerretDB/FerretDB/pull/2499
- @raeidish made their first contribution in https://github.com/FerretDB/FerretDB/pull/2518
- @polyal made their first contribution in https://github.com/FerretDB/FerretDB/pull/2458
- @wqhhust made their first contribution in https://github.com/FerretDB/FerretDB/pull/2485
- @jsoref made their first contribution in https://github.com/FerretDB/FerretDB/pull/5486
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/40?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v1.0.0...v1.1.0).
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/80?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.5.0...v2.7.0).
## [v1.0.0](https://github.com/FerretDB/FerretDB/releases/tag/v1.0.0) (2023-04-03)
## [v2.5.0](https://github.com/FerretDB/FerretDB/releases/tag/v2.5.0) (2025-08-12)
This version works best with
[DocumentDB v0.106.0-ferretdb-2.5.0](https://github.com/FerretDB/documentdb/releases/tag/v0.106.0-ferretdb-2.5.0).
### Breaking changes
#### Metric names
We changed Prometheus metric names and `HELP` texts to highlight the fact that they are
[not stable yet](https://docs.ferretdb.io/configuration/observability/#metrics).
We plan to promote most of them to stable in the next release.
### What's Changed
We are delighted to announce the release of FerretDB 1.0 GA!
#### RPM packages for DocumentDB
### New Features 🎉
- Support `$sum` accumulator of `$group` aggregation by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2292
- Implement `createIndexes` command by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2244
- Add basic `getMore` command by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2309
- Implement `dropIndexes` command by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2313
- Implement `$limit` aggregation pipeline stage by @noisersup in https://github.com/FerretDB/FerretDB/pull/2270
- Add partial support for `collStats`, `dbStats` and `dataSize` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2322
- Implement `$skip` aggregation pipeline stage by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2310
- Implement `$unwind` aggregation pipeline stage by @noisersup in https://github.com/FerretDB/FerretDB/pull/2294
- Support `count` and `storageStats` fields in `$collStats` aggregation pipeline stage by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2338
### Fixed Bugs 🐛
- Fix dot notation negative index errors by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2246
- Apply `skip` before `limit` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2351
DocumentDB `.rpm` packages for Red Hat Enterprise Linux are
[now available](https://docs.ferretdb.io/installation/documentdb/rpm/)!
### Documentation 📄
- Update supported command for `$sum` aggregation operator by @chilagrow in https://github.com/FerretDB/FerretDB/pull/2318
- Add supported shells and GUIs images by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2323
- Publish FerretDB v0.9.4 blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/2268
- Use dashes instead of underscores or spaces by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2329
- Update documentation sidebar by @Fashander in https://github.com/FerretDB/FerretDB/pull/2347
- Update FerretDB descriptions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2281
- Improve flags documentation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2331
- Describe supported fields for `$collStats` aggregation stage by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/2352
- Enable full visibility for images on zoom by @Fashander in https://github.com/FerretDB/FerretDB/pull/5346
- Add Vault blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/5368
- Add WeKan blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/5381
### Other Changes 🤖
- Use iterators for `sort`, `limit`, `skip`, and `projection` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2254
- Bump dependencies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2307
- Improve resource tracking by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2319
- Add tests for `find`'s and `count`'s `skip` argument by @w84thesun in https://github.com/FerretDB/FerretDB/pull/2325
- Close iterator properly by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2333
- Improve large numbers initialization in test data by @noisersup in https://github.com/FerretDB/FerretDB/pull/2324
- Ignore `unique` index option for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/2350
- Add YugabyteDB integration tests by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5274
- Run all YugabyteDB integration tests by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5283
- Refactor normal and error responses by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5326
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5353
- Use Codecov for flaky integration tests detection by @noisersup in https://github.com/FerretDB/FerretDB/pull/5361
- Make accessing YugabyteDB logs easier by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5362
- Add components in codecov by @noisersup in https://github.com/FerretDB/FerretDB/pull/5364
- Skip YugabyteDB setup for `arm64` by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5372
- Tweak Ollama and MCPHost setup by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5375
- Simplify flags handling by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5378
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5380
- Extract wiring into a separate package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5383
- Small cleanup by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5388
- Encapsulate PostgreSQL pool in the Handler by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5389
- Bump DocumentDB version by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5392
- Test flaky tests detection by @noisersup in https://github.com/FerretDB/FerretDB/pull/5393
- Small tweaks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5394
- Make a resource.Untrack thread-safe by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5396
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5398
- Enable MongoDB test commands by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5400
- Update Prometheus metrics by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5403
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5411
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/39?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v0.9.4...v1.0.0).
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/79?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.4.0...v2.5.0).
## [v2.4.0](https://github.com/FerretDB/FerretDB/releases/tag/v2.4.0) (2025-07-16)
This version works best with
[DocumentDB v0.105.0-ferretdb-2.4.0](https://github.com/FerretDB/documentdb/releases/tag/v0.105.0-ferretdb-2.4.0).
### New Features 🎉
- Allow `clusterAdmin` users to perform user management commands by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5314
### Enhancements 🛠
- Use debug-level log messages for continuations by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5266
### Documentation 📄
- Add blog post on setting up LibreChat with FerretDB by @Fashander in https://github.com/FerretDB/FerretDB/pull/4999
- Add blog post for Payload CMS by @Fashander in https://github.com/FerretDB/FerretDB/pull/5257
- Add blog post on using Compass GUI by @Fashander in https://github.com/FerretDB/FerretDB/pull/5263
- Fix social links by @Fashander in https://github.com/FerretDB/FerretDB/pull/5264
- Add PayloadCMS to compatible apps by @Fashander in https://github.com/FerretDB/FerretDB/pull/5270
- Add Compass to compatible apps by @Fashander in https://github.com/FerretDB/FerretDB/pull/5275
- Wrap long lines in a blog post by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5280
- Add NodeBB compatibility blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/5285
- Add Librechat to compatibility section by @Fashander in https://github.com/FerretDB/FerretDB/pull/5286
- Add NodeBB to compatible apps by @Fashander in https://github.com/FerretDB/FerretDB/pull/5293
- Cleanup NodeBB blog post by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5294
- Add Growthbook blogpost by @Fashander in https://github.com/FerretDB/FerretDB/pull/5304
- Add Heyform compatibility blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/5316
- Add GrowthBook to compatible apps by @Fashander in https://github.com/FerretDB/FerretDB/pull/5319
- Add DBeaver compatibility blogpost by @Fashander in https://github.com/FerretDB/FerretDB/pull/5321
- Add HyperDX blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/5334
- Add compatible applications by @Fashander in https://github.com/FerretDB/FerretDB/pull/5335
- Prepare v2.4.0 release by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5344
### Other Changes 🤖
- Add YugabyteDB to local setup by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5258
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5261
- Remove skipping of `bypassEmptyTsReplacement` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5267
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5268
- Bring back Codecov and Coveralls integration by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5276
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5282
- Add `mcphost` as tool by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5287
- Refactor requests handling by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5292
- Add Dependabot configuration for mcphost by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5296
- Extend middleware requests and responses by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5301
- Minor refactoring of Data API by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5302
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5307
- Refactor responses handling by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5310
- Add authentication test for client reconnecting by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5311
- Do not use deprecated method by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5312
- Update TODO URLs by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5317
- Remove `must.NotFail(wire[bson].NewXXX(` pattern by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5318
- Update TODO URL for `dropUsers` test by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5324
- Avoid extra marshaling by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5327
- Split command handling and handlers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5328
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5342
### New Contributors
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/77?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.3.1...v2.4.0).
## [v2.3.1](https://github.com/FerretDB/FerretDB/releases/tag/v2.3.1) (2025-06-12)
Hotfix release to restore compatibility with various tools such as `mongoimport` and `mongorestore`.
### Fixed Bugs 🐛
- Revert "Remove hack for `bypassEmptyTsReplacement` (#5217)" by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5256
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/78?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.3.0...v2.3.1).
## [v2.3.0](https://github.com/FerretDB/FerretDB/releases/tag/v2.3.0) (2025-06-11)
This version works best with
[DocumentDB v0.104.0-ferretdb-2.3.0](https://github.com/FerretDB/documentdb/releases/tag/v0.104.0-ferretdb-2.3.0).
### New Features 🎉
- Add telemetry configuration for embedded FerretDB by @jyz0309 in https://github.com/FerretDB/FerretDB/pull/5109
- Use DocumentDB's support for `bypassEmptyTsReplacement` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5217
- Use DocumentDB's `compat` command by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5242
### Documentation 📄
- Enable `onInlineAuthors` in blog settings by @Balou9 in https://github.com/FerretDB/FerretDB/pull/5079
- Create compatible apps section by @Fashander in https://github.com/FerretDB/FerretDB/pull/5108
- Improve insert operations in guides by @Fashander in https://github.com/FerretDB/FerretDB/pull/5131
- Update versions to point to the next release by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5144
- Update Docker tags in docs by @Fashander in https://github.com/FerretDB/FerretDB/pull/5156
- Update Docker tags for next release by @Fashander in https://github.com/FerretDB/FerretDB/pull/5157
- Do not format MDX as Markdown by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5186
- Add blog post on Mongo Express compatibility by @Fashander in https://github.com/FerretDB/FerretDB/pull/5194
- Add blog post for Novu compatibility by @Fashander in https://github.com/FerretDB/FerretDB/pull/5195
- Update CTS tool to wrap long lines by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5202
- Disable Markdownlint rule that clashes with MDX by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5210
- Small documentation tweaks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5218
- Prepare v2.3.0 release by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5254
### Other Changes 🤖
- Use `runtime.Cleanup` for resource tracking by @sahinakyol in https://github.com/FerretDB/FerretDB/pull/5077
- Add Dependabot configuration for `main-v1` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5098
- Bump deps by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5159
- Make `conninfo` a resource by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5166
- Revert "Update CODEOWNERS" by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5169
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5170
- Add `permissions` to GitHub Actions workflows by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5182
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5184
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5197
- Add test for inserting zero timestamp by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5199
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5201
- Refactor resource tracking tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5208
- Unskip test by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5211
- Use Ollama in local setup by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5215
- Update TODO comments by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5223
- Bump Go and deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5236
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5240
- Build production Docker images for PRs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5251
- Improve telemetry configuration for embedded FerretDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5252
### New Contributors
- @sahinakyol made their first contribution in https://github.com/FerretDB/FerretDB/pull/5077
- @Balou9 made their first contribution in https://github.com/FerretDB/FerretDB/pull/5079
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/74?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.2.0...v2.3.0).
## [v2.2.0](https://github.com/FerretDB/FerretDB/releases/tag/v2.2.0) (2025-05-09)
This version works best with
[DocumentDB v0.103.0-ferretdb-2.2.0](https://github.com/FerretDB/documentdb/releases/tag/v0.103.0-ferretdb-2.2.0).
### New Features 🎉
- Add full arm64 support by @AlekSi, @chilagrow in https://github.com/FerretDB/FerretDB/pull/5113
- Rename old `ferretdb-eval` image to `ferretdb-eval-dev` by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5040
- Provide `ferretdb-eval` Docker image with production build by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5051
- Supervise services in evaluation images by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5041
- Use volume for `state` directory by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5083
### Enhancements 🛠
- Rename binaries and packages by @vardbabayan in https://github.com/FerretDB/FerretDB/pull/5078
- Decode `dropIndexes` response by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5117
### Documentation 📄
- Update DocumentDB debian packages by @Fashander in https://github.com/FerretDB/FerretDB/pull/4959
- Add Kubernetes installation guide by @Fashander in https://github.com/FerretDB/FerretDB/pull/4971
- Add blog post on FerretDB and CNPG by @Fashander in https://github.com/FerretDB/FerretDB/pull/4998
- Update Docker images by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5015
- Add blog post on migrating to FerretDB with dsync by @Fashander in https://github.com/FerretDB/FerretDB/pull/5033
- Use &#34;PostgreSQL with DocumentDB extension&#34; phrase by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5050
- Backport Kubernetes docs to 2.1 by @Fashander in https://github.com/FerretDB/FerretDB/pull/5053
- Rename and move code files in guides by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5057
- Update redirects by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5060
- Update OpenAPI spec description by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5062
- Document Data API usage by @Fashander in https://github.com/FerretDB/FerretDB/pull/5063
- Backport `.deb` installation guide by @Fashander in https://github.com/FerretDB/FerretDB/pull/5066
- Unconvert syntax examples in documentation by @noisersup in https://github.com/FerretDB/FerretDB/pull/5072
- Reformat linter by @Fashander in https://github.com/FerretDB/FerretDB/pull/5075
- Update evaluation Docker image documentation by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5076
- Document required features by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5086
- Document update process for new releases by @Fashander in https://github.com/FerretDB/FerretDB/pull/5124
- Remove old TODOs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5132
### Other Changes 🤖
- Remove MongoDB driver v1 by @KrishnaSindhur in https://github.com/FerretDB/FerretDB/pull/4961
- Hook CTS tool into documentation building by @noisersup in https://github.com/FerretDB/FerretDB/pull/4990
- Do not send zero values to telemetry by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5016
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5020
- Update deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5024
- Minor tweaks for proxy code by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5025
- Move tests for sessions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5026
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5027
- Merge Msg and Query into a single type by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5032
- Make proxy handler implement an interface by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5036
- Move `findAndModify` integration tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5037
- Update wire by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5042
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5045
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5054
- Implement handler `Handle` function by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5055
- Use new `wire` helpers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5056
- Fix docker health check on evaluation image by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5067
- Define docker tags for `ferretdb-eval` image by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5068
- Use `Handle` function in Data API by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5069
- Use `Handle` function in `clientconn` by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5070
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5074
- Skip `bypassEmptyTsReplacement` parameters for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5080
- Reorgonize cts output files by @noisersup in https://github.com/FerretDB/FerretDB/pull/5082
- Unexport handlers by @chilagrow in https://github.com/FerretDB/FerretDB/pull/5084
- Use new `wire` helpers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5094
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5096
- Fix Docker tags for pre-release git tags by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5099
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5115
- Hook CTS into CI by @noisersup in https://github.com/FerretDB/FerretDB/pull/5120
- Run CTS tests against Full Text Search guide examples by @noisersup in https://github.com/FerretDB/FerretDB/pull/5121
- Run CTS tests against Vector Search guide examples by @noisersup in https://github.com/FerretDB/FerretDB/pull/5122
- Run CTS tests against TTL Indexes guide examples by @noisersup in https://github.com/FerretDB/FerretDB/pull/5123
- Remove `$db` parameter from generated mongosh requests by @noisersup in https://github.com/FerretDB/FerretDB/pull/5125
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5141
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5142
- Prepare v2.2.0 release by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5138
### New Contributors
- @vardbabayan made their first contribution in https://github.com/FerretDB/FerretDB/pull/5078
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/73?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.1.0...v2.2.0).
## [v2.1.0](https://github.com/FerretDB/FerretDB/releases/tag/v2.1.0) (2025-04-03)
This version works only with
[DocumentDB v0.102.0-ferretdb-2.1.0](https://github.com/FerretDB/documentdb/releases/tag/v0.102.0-ferretdb-2.1.0).
### Breaking changes
<!-- textlint-disable one-sentence-per-line -->
> [!CAUTION]
> Please note that due to incompatibilities in our previous releases, DocumentDB can't be updated in place,
> even with a manual `ALTER EXTENSION UPDATE` query or other means.
> A new clean installation into an empty data directory/volume is required.
> All data should be backed up with `mongodump`/`mongoexport` before and restored
> with `mongorestore`/`mongoimport` after.
> [See our blog post for more details](https://blog.ferretdb.io/ferretdb-v210-release-performance-improvements-bug-fixes/).
>
> We expect future updates to be much smoother.
<!-- textlint-enable one-sentence-per-line -->
### Fixed Bugs 🐛
- Fix version detection for embeddable package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4936
### Enhancements 🛠
- Add colorized levels to `console` logger by @noisersup in https://github.com/FerretDB/FerretDB/pull/4904
- Improve `--help` output by @KrishnaSindhur in https://github.com/FerretDB/FerretDB/pull/4918
- Add support for reading PostgreSQL URL from a file by @KrishnaSindhur in https://github.com/FerretDB/FerretDB/pull/4937
- Do not decode incoming document twice by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4981
### Documentation 📄
- Add post on MongoDB queries and operations on FerretDB by @Fashander in https://github.com/FerretDB/FerretDB/pull/4732
- Add example telemetry report to documentation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4861
- Add FerretDB v2 GA blog post by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4884
- Add full text search guide by @Fashander in https://github.com/FerretDB/FerretDB/pull/4886
- Add guide for GUI apps by @Fashander in https://github.com/FerretDB/FerretDB/pull/4906
- Add TTL index guide by @Fashander in https://github.com/FerretDB/FerretDB/pull/4926
- Update `deb` and `rpm` installation docs by @Fashander in https://github.com/FerretDB/FerretDB/pull/4927
- Sync flags grouping with docs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4933
- Add a note to documentation about PR titles by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4944
- Update/backport full-text and TTL indexes guides by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4948
- Backport documentation changes to v2.0 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4952
- Add basic documentation for supported commands by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4970
- Update feature blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/4991
- Add blogpost on FerretDB v2.1.0 release by @Fashander in https://github.com/FerretDB/FerretDB/pull/5004
- Create redirects for `/v2.0/` documentation URLs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5011
### Other Changes 🤖
- Update changelog generator by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4810
- Update TODO URLs for `listDatabase` tests by @noisersup in https://github.com/FerretDB/FerretDB/pull/4863
- Document non-enforced format of log messages in `envtool` package by @noisersup in https://github.com/FerretDB/FerretDB/pull/4867
- Start working on a new release by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4885
- Adjust pool connection timeout by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4888
- Check issue URLs in documentation by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4890
- Add TODO comments for observability tasks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4896
- Refactor `clientconn` by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4907
- Add basic structure for middlewares by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4908
- Make production builds of the `main` branch by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4911
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4916
- Move message processing in `clientconn` to a function by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4919
- Change the way OP_MSG handlers are invoked by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4923
- Improve integration benchmarks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4925
- Configure connection pool size in tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4932
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4941
- Handle `OP_QUERY` in middleware using interface by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4947
- Implement error middleware by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4951
- Use ERROR level logging for failed tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4974
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4975
- Disable tracing in benchmarks for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4980
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4982
- Add TODOs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4986
- Partially revert middleware changes by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4995
- Add more tests for error handling by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4996
- Use Go 1.24.2 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5005
- Remove error middleware for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5008
- Disable commit check for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/5012
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/72?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.0.0...v2.1.0).
## [v2.0.0](https://github.com/FerretDB/FerretDB/releases/tag/v2.0.0) (2025-03-05)
The first generally available release of FerretDB v2,
powered by [DocumentDB PostgreSQL extension](https://github.com/microsoft/documentdb)!
This version works best with
[DocumentDB v0.102.0-ferretdb-2.0.0](https://github.com/FerretDB/documentdb/releases/tag/v0.102.0-ferretdb-2.0.0).
[Release blog post](https://blog.ferretdb.io/ferretdb-v2-ga-open-source-mongodb-alternative-ready-for-production/).
### Documentation 📄
- Add migration guide from v1.x to v2.x by @Fashander in https://github.com/FerretDB/FerretDB/pull/4850
- Add basic troubleshooting guide by @Fashander in https://github.com/FerretDB/FerretDB/pull/4854
- Final preparations by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4874
### Other Changes 🤖
- Unskip tests that refer to closed issue by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4865
- Use GitHub-hosted CI runners by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4866
- Skip flaky `currentOp` test and add TODO by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4872
- Bump Go and safe deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4875
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/69?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.0.0-rc.5...v2.0.0).
## [v2.0.0-rc.5](https://github.com/FerretDB/FerretDB/releases/tag/v2.0.0-rc.5) (2025-03-04)
This is the final release candidate before the GA release tomorrow!
Most users don't need to update.
This version works best with
[DocumentDB v0.102.0-ferretdb-2.0.0-rc.5](https://github.com/FerretDB/documentdb/releases/tag/v0.102.0-ferretdb-2.0.0-rc.5).
### New Features 🎉
- Use DocumentDB API for `listDatabases` by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4841
- Implement `currentOp` command by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4855
### Fixed Bugs 🐛
- Make Data API work without authentication if requested by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4849
### Enhancements 🛠
- Publish build info, state, and CLI flags in expvar by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4837
- Enforce log messages format in development builds by @noisersup in https://github.com/FerretDB/FerretDB/pull/4754
- Filter out sensitive information from debug archive by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4836
- Improve messages about DocumentDB version by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4832
### Documentation 📄
- Move comment in docs to fix DocCard by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4845
- Update URL to join Slack by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4851
- Recommend using full tags/versions by @Fashander in https://github.com/FerretDB/FerretDB/pull/4834
### Other Changes 🤖
- Change `dbStats` tests TODO links by @noisersup in https://github.com/FerretDB/FerretDB/pull/4823
- Update TODO comment by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4831
- Bump DocumentDB for development by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4839
- Update DocumentDB Docker image by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4853
- Remove old code for tracking operations by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4842
- Remove DocumentDB building from this repo by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4852
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/71?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.0.0-rc.2...v2.0.0-rc.5).
## [v2.0.0-rc.2](https://github.com/FerretDB/FerretDB/releases/tag/v2.0.0-rc.2) (2025-02-25)
This version works best with
[DocumentDB v0.102.0-ferretdb-2.0.0-rc.2](https://github.com/FerretDB/documentdb/releases/tag/v0.102.0-ferretdb-2.0.0-rc.2).
### Breaking changes
The `:latest` Docker image tag now points to this release.
It is highly recommended always to specify the full version (like `:2.0.0-rc.1`).
### What's Changed
#### Docker images
Docker images are again available on [Docker Hub](https://hub.docker.com/r/ferretdb/ferretdb)
and [quay.io](https://quay.io/repository/ferretdb/ferretdb)
(although we recommend using [GitHub Packages](https://github.com/ferretdb/FerretDB/pkgs/container/ferretdb)).
#### Embeddable Go package
Once again, FerretDB can be used as a [Go library](https://pkg.go.dev/github.com/FerretDB/FerretDB/v2/ferretdb).
#### `.deb` packages for DocumentDB
`.deb` packages for DocumentDB are now available [there](https://github.com/FerretDB/documentdb/releases).
#### Indexes
Multiple issues with indexes were resolved, and support for TTL indexes was added.
After updating DocumentDB and FerretDB, rebuilding indexes using the `reIndex` command is recommended.
### New Features 🎉
- Update Docker tags by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4812
- Enable Docker Hub and quay.io by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4815
- Re-introduce embeddable package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4778
- Make embeddable package logging configurable by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4807
- Implement `reIndex` command by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4735
- Implement `dbStats` command by @noisersup in https://github.com/FerretDB/FerretDB/pull/4804
- Add `mongo` slog format by @noisersup in https://github.com/FerretDB/FerretDB/pull/4716
- Enable building FerretDB as PostgreSQL background worker by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4802
### Enhancements 🛠
- Set `GOARM64` explicitly by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4760
- Tweak CLI for disabling interfaces by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4781
### Documentation 📄
- Add replication blog post by @Fashander in https://github.com/FerretDB/FerretDB/pull/4717
- Add explicit `platform: linux/amd64` to docs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4749
- Add missing space in command by @tlinhart in https://github.com/FerretDB/FerretDB/pull/4753
- Update config flags by @Fashander in https://github.com/FerretDB/FerretDB/pull/4740
- Update TLS docs by @Fashander in https://github.com/FerretDB/FerretDB/pull/4752
- Use `/` consistently in MongoDB URIs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4759
- Reformat request/response `.js` files by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4787
- Update Docker image tag in v1 docs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4796
- Convert `json5` to `js` responses in docs by @Fashander in https://github.com/FerretDB/FerretDB/pull/4800
- Tweak Docusaurus configuration by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4805
- Update release checklist and `.deb` installation guide by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4767
- Update blogs to use `js` instead of `json5` by @Fashander in https://github.com/FerretDB/FerretDB/pull/4801
### Other Changes 🤖
- Disable xfail CI configuration for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4698
- Skip private issue links in `checkcomments` by a flag by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4695
- Fix Dependabot config by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4708
- Fix error mapping generation by @noisersup in https://github.com/FerretDB/FerretDB/pull/4691
- Do not use Git LFS for Go files by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4713
- Refactor extract and convert in `genwrap` tool by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4703
- Introduce smoke test for Data API by @noisersup in https://github.com/FerretDB/FerretDB/pull/4712
- Do not use a global variable for logging by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4727
- Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4743
- Refactor and generate using `genwrap` tool by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4705
- Check DocumentDB issues in `checkcomments` and `checkdocs` by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4714
- Use `wireclient` for readiness probe by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4718
- Remove "all backends" from the issue template by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4751
- Add/update TODO comments for some issues by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4723
- Remove `golang.org/x/exp/maps` package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4711
- Use Go 1.24.0 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4775
- Use directories instead of files for state and telemetry by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4784
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4788
- Make handler take over the pool by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4795
- Add test helper by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4799
- Bump Go deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4803
- Fix `envtool` for Go 1.24 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4809
- Update DocumentDB by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4811
### New Contributors
- @tlinhart made their first contribution in https://github.com/FerretDB/FerretDB/pull/4753
[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/70?closed=1).
[All commits](https://github.com/FerretDB/FerretDB/compare/v2.0.0-rc.1...v2.0.0-rc.2).
## [v2.0.0-rc.1](https://github.com/FerretDB/FerretDB/releases/tag/v2.0.0-rc.1) (2025-01-23)
The first release candidate of FerretDB v2, powered by [DocumentDB PostgreSQL extension](https://github.com/microsoft/documentdb)!
## Older Releases
See <https://github.com/FerretDB/FerretDB/blob/v1.0.0/CHANGELOG.md>.
See https://github.com/FerretDB/FerretDB/blob/main-v1/CHANGELOG.md.
+221 -126
View File
@@ -5,18 +5,18 @@ Thank you for your interest in making FerretDB better!
## Finding something to work on
We are interested in all contributions, big or small, in code or documentation.
But unless you are fixing a very small issue like a typo,
we kindly ask you first to [create an issue](https://github.com/FerretDB/FerretDB/issues/new/choose),
to leave a comment on an existing issue if you want to work on it,
or to [join our Slack chat](./README.md#community) and leave a message for us in the `#dev` channel.
This way, you will get help from us and avoid wasted efforts if something can't be worked on right now
or someone is already working on it.
But unless you are fixing a tiny issue like a typo,
we kindly ask you first to [create an issue](https://github.com/FerretDB/FerretDB/issues/new/choose)
or leave a comment on an existing issue if you want to work on it.
This way, we could assign the issue to you, marking it as being worked on,
preventing others from wasting efforts working on it at the same time.
Additionally, you can [join our Slack chat](./README.md#community) and leave a message for us in the `#dev` channel.
You can find a list of good first issues for contributors [there](https://github.com/FerretDB/FerretDB/contribute).
Once you have some experience with contributing to FerretDB,
feel free to pick any issue
[that is not assigned to anyone and doesn't have `not ready` label](https://github.com/FerretDB/FerretDB/issues?q=is%3Aissue+is%3Aopen+no%3Aassignee+-label%3A%22not+ready%22).
Still, please let us know as described above.
Still, please leave a comment on it as described above.
## Setting up the environment
@@ -30,28 +30,30 @@ On macOS and Windows, [Docker Desktop](https://www.docker.com/products/docker-de
On Windows, it should be [configured to use WSL 2](https://docs.docker.com/desktop/windows/wsl/) without any distro;
all commands should be run on the host.
You will need Go 1.20 or later on the host.
You will need Go 1.25 or later on the host.
If your package manager doesn't provide it yet,
please install it from [go.dev](https://go.dev/dl/).
You will also need `git` installed; the version provided by your package manager should do.
On Windows, the simplest way to install it might be <https://gitforwindows.org>.
On Windows, the simplest way to install it might be https://gitforwindows.org.
Finally, you will also need [git-lfs](https://git-lfs.github.com) installed and configured (`git lfs install`).
### Making a working copy
Fork the [FerretDB repository on GitHub](https://github.com/FerretDB/FerretDB/fork).
To have all the tags in the repository and what they point to, copy all branches by removing checkmark for `copy the main branch only` before forking.
After forking FerretDB on GitHub, you can clone the repository:
After that, you can clone the repository and add the upstream repository as a remote:
```sh
git clone git@github.com:<YOUR_GITHUB_USERNAME>/FerretDB.git
cd FerretDB
git remote add upstream https://github.com/FerretDB/FerretDB.git
git fetch --all --tags
```
The last command would fetch all Git tags from our repository that GitHub won't copy to fork by default.
`git describe` command uses them to determine the FerretDB version during the build process.
To run development commands, you should first install the [`task`](https://taskfile.dev/) tool.
You can do this by changing the directory to `tools` (`cd tools`) and running `go generate -x`.
That will install `task` into the `bin` directory (`bin/task` on Linux and macOS, `bin\task.exe` on Windows).
@@ -62,18 +64,56 @@ You can also [install `task` globally](https://taskfile.dev/#/installation),
but that might lead to the version skew.
With `task` installed,
you should install development tools with `task init`
you can see all available tasks by running `task -l` in the root of the repository
(not in the `tools` directory).
After that, you should install development tools with `task init`
and download required Docker images with `task env-pull`.
If something does not work correctly,
you can reset the environment with `task env-reset`.
You can see all available `task` tasks with `task -l`.
### Building a production release binaries
### Building a production release binary
To build a production release binaries, run `task build-production`.
The results will be saved `tmp/bin`.
To build a production release binary, run `task build-release`.
The result will be saved as `bin/ferretdb`.
### Setting a GITHUB_TOKEN
Some of our development tools require access to public information on GitHub
at a rate higher than allowed for unauthenticated requests.
Those tools will report a problem in this case.
It could be solved by creating a new classic or fine-grained personal access token
[there](https://github.com/settings/tokens).
No scopes are needed for classic tokens, not even `public_repo`.
For fine-grained tokens, only read-only access to public repositories is needed without any additional permissions.
After generating a token, set the `GITHUB_TOKEN` environment variable:
```sh
export GITHUB_TOKEN=ghp_XXX
```
or
```sh
export GITHUB_TOKEN=github_pat_XXX
```
## Reporting a bug
We appreciate reporting a bug to us.
To help us accurately identify the cause, we encourage you to include a pull request with test script.
Please write the test script in [build/legacy-mongo-shell/test.js](build/legacy-mongo-shell/test.js).
You can find an overview of the available assertions [here](build/legacy-mongo-shell/README.md).
Use these assertions to validate your test's assumptions and invariants.
With `task` installed (see above), you may test your script using following steps:
1. Start the development environment with `task env-up`.
2. Start FerretDB with `task run`.
3. Run the test script with `task testjs`.
Please create a pull request and include the link of the pull request in the bug issue.
## Contributing code
@@ -82,27 +122,20 @@ The result will be saved as `bin/ferretdb`.
With `task` installed (see above), you may do the following:
1. Start the development environment with `task env-up`.
2. Run all tests in another terminal window with `task test`.
2. Run all tests with `task test` (see [below](#running-tests)).
3. Start FerretDB with `task run`.
This will start it in a development mode where all requests are handled by FerretDB, but also routed to MongoDB.
The differences in response are then logged and the FerretDB response is sent back to the client.
4. Fill collections in `test` database with data for experiments with `task env-data`.
The development environment uses `diff-normal` mode as the default mode.
Set preferred mode such as `task run MODE=diff-proxy`.
(See [Operation modes](https://docs.ferretdb.io/configuration/operation-modes/) page in our documentation.)
4. Fill collections in the `test` database with data for experiments with `task env-data`.
5. Run `mongosh` with `task mongosh`.
This allows you to run commands against FerretDB.
For example, you can see what data was inserted by the previous command with `db.values.find()`.
See what collections were created by the previous command with `show collections`.
### Operation modes
#### Commands for authenticated connection
FerretDB can run in multiple operation modes.
Operation mode specify how FerretDB handles incoming requests.
FerretDB supports four operation modes: `normal`, `proxy`, `diff-normal`, `diff-proxy`,
see [Operation modes documentation page](https://docs.ferretdb.io/configuration/operation-modes/) for more details.
By running `task run` FerretDB starts on `diff-normal` mode, which routes all of
the sent requests both to the FerretDB and MongoDB.
While running, it logs a difference between both returned responses,
but sends the one from FerretDB to the client.
If you want to get the MongoDB response, you can run `task run-proxy` to start FerretDB in `diff-proxy` mode.
1. Start the development environment with `task env-up`.
2. Start FerretDB with `task run-secure MODE=normal` or `task run-secure MODE=proxy`.
3. Run `task mongosh-secure` to establish an authenticated connection.
### Code overview
@@ -114,29 +147,19 @@ They are installed into `bin/` by `cd tools; go generate -x`.
The `internal` subpackages contain most of the FerretDB code:
- `types` package provides Go types matching BSON types that don't have built-in Go equivalents:
we use `int32` for BSON's int32, but `types.ObjectID` for BSON's ObjectId.
- `types/fjson` provides converters from/to FJSON for built-in and `types` types.
It is used for logging of BSON values and wire protocol messages.
- `bson` package provides converters from/to BSON for built-in and `types` types.
- `wire` package provides wire protocol implementation.
- `clientconn` package provides client connection implementation.
It accepts client connections, reads `wire`/`bson` protocol messages, and passes them to `handlers`.
Responses are then converted to `wire`/`bson` messages and sent back to the client.
- `handlers` contains a common interface for backend handlers that they should implement.
Handlers use `types` and `wire` packages, but `bson` package details are hidden.
- `handlers/common` contains code shared by different handlers.
- `handlers/sjson` provides converters from/to SJSON for built-in and `types` types.
SJSON adds some extensions to JSON for keeping object keys in order,
preserving BSON type information in the values themselves, etc.
It is used by `sqlite` and `pg` handlers.
- `handlers/sqlite` contains the implementation of the SQLite handler.
It is being converted into universal handler for all backends.
- `handlers/pg` contains the implementation of the PostgreSQL handler.
- `handlers/tigris` contains the implementation of the Tigris handler.
- `handlers/tigris/tjson` provides converters from/to TJSON with JSON Schema for built-in and `types` types.
BSON type information is preserved either in the schema (where possible) or in the values themselves.
It is used by `tigris` handler.
- `handler` provides implementations of command handlers.
The logic of commands like `find` and `aggregate` is there.
- `dataapi` provides an Data API wrapper for `handler`.
It allows FerretDB to be used over HTTP instead of MongoDB wire protocol.
- `clientconn` provides wire protocol server implementation.
It accepts client connections, reads wire protocol messages, and passes them to `handler`.
Responses are then converted and sent back to the client.
- `documentdb` provides DocumentDB extension integration.
- `mongoerrors` provides MongoDB-compatible error types and codes.
They are used by `handler` and `documentdb`.
The wire protocol implementation and BSON handling code were extracted into a separate repository:
https://github.com/FerretDB/wire
#### Running tests
@@ -149,16 +172,16 @@ you can run those with `task test-unit` after starting the environment as descri
We also have a set of "integration" tests in the `integration` directory.
They use the Go MongoDB driver like a regular user application.
They could test any MongoDB-compatible database (such as FerretDB or MongoDB itself) via a regular TCP or TLS port or Unix socket.
They could test any MongoDB-compatible database (such as FerretDB or MongoDB itself) via a regular TCP or TLS port
or Unix domain socket.
They also could test in-process FerretDB instances
(meaning that integration tests start and stop them themselves) with a given handler.
Finally, some tests (so-called compatibility or "compat" tests) connect to two systems
(meaning that integration tests start and stop them themselves).
Finally, some integration tests (so-called compatibility or "compat" tests) connect to two systems
("target" for FerretDB and "compat" for MongoDB) at the same time,
send the same queries to both, and compare results.
You can run them with:
- `task test-integration-pg` for in-process FerretDB with `pg` handler and MongoDB;
- `task test-integration-tigris` for in-process FerretDB with `tigris` handler and MongoDB;
- `task test-integration-postgresql` for in-process FerretDB and MongoDB;
- `task test-integration-mongodb` for MongoDB only, skipping compat tests;
- or `task test-integration` to run all in parallel.
@@ -167,23 +190,29 @@ If tests fail and the output is too confusing, try running them sequentially by
You can also run `task -C 1` to limit the number of concurrent tasks, which is useful for debugging.
Finally, since all tests just run `go test` with various arguments and flags under the hood,
To run a subset of integration tests and test cases, you may use Task variable `TEST_RUN`.
For example, to run all tests for the `getMore` command with in-process FerretDB
you may use `task test-integration-postgresql TEST_RUN='(?i)GetMore'`.
Finally, since all tests just run `go test` with various arguments and flags under the hood
(for example, `TEST_RUN` just provides the value for the [`-run` flag](https://pkg.go.dev/cmd/go#hdr-Testing_flags)),
you may also use all standard `go` tool facilities,
including [`GOFLAGS` environment variable](https://pkg.go.dev/cmd/go#hdr-Environment_variables).
For example:
- to run a single test case for in-process FerretDB with `pg` handler
with all subtests running sequentially,
you may use `env GOFLAGS='-run=TestName/TestCaseName -parallel=1' task test-integration-pg`;
- to run all tests for in-process FerretDB with `tigris` handler
with [Go execution tracer](https://pkg.go.dev/runtime/trace) enabled,
you may use `env GOFLAGS='-trace=trace.out' task test-integration-tigris`.
- to run all tests for the `getMore` command sequentially,
you may use `env GOFLAGS='-parallel=1 -p=1' task test-integration-postgresql TEST_RUN='(?i)GetMore'`;
- to run all tests with MongoDB with [Go execution tracer](https://pkg.go.dev/runtime/trace) enabled
you may use `env GOFLAGS='-trace=trace.out' task test-integration-mongodb`.
> **Note**
>
<!-- textlint-disable one-sentence-per-line -->
> [!NOTE]
> It is not recommended to set `GOFLAGS` and other Go environment variables with `export GOFLAGS=...`
> or `go env -w GOFLAGS=...` because they are invisible and easy to forget about, leading to confusion.
<!-- textlint-enable one-sentence-per-line -->
In general, we prefer integration tests over unit tests,
tests using real databases over short tests
and real objects over mocks.
@@ -191,13 +220,13 @@ and real objects over mocks.
(You might disagree with our terminology for "unit" and "integration" tests;
let's not fight over it.)
We have an additional integration testing system in another repository: <https://github.com/FerretDB/dance>.
We have an additional integration testing system in another repository: https://github.com/FerretDB/dance.
#### Observability in tests
Integration tests start a debug handler with pprof profiles and execution traces on a random port
(to allow running multiple test configurations in parallel).
They also send telemetry traces to the local Jaeger instance that can be accessed at <http://127.0.0.1:16686/>.
They also send telemetry traces to the local Jaeger instance that can be accessed at http://127.0.0.1:16686/.
### Code style and conventions
@@ -208,95 +237,158 @@ but please also tell us about it, so we can improve all of it.
If, on the other hand, you see code that is inconsistent without apparent reason (or comment),
please improve it as you work on it.
Our code most of the standard Go conventions,
documented on [CodeReviewComments wiki page](https://github.com/golang/go/wiki/CodeReviewComments).
Some of our idiosyncrasies:
Our code follows most of the standard Go conventions,
documented on [CodeReviewComments wiki page](https://go.dev/wiki/CodeReviewComments)
and some other pages such as [Spelling](https://go.dev/wiki/Spelling).
Some of our idiosyncrasies are documented below.
1. We use type switches over BSON types in many places in our code.
The order of `case`s follows this order: <https://pkg.go.dev/github.com/FerretDB/FerretDB/internal/types#hdr-Mapping>
It may seem random, but it is only pseudo-random and follows BSON spec: <https://bsonspec.org/spec.html>
The order of `case`s follows this order: https://pkg.go.dev/github.com/FerretDB/wire/wirebson#hdr-Types
It may seem random, but it is only pseudo-random and follows BSON spec: https://bsonspec.org/spec.html
2. We generally pass and return `struct`s by pointers.
There are some exceptions like `types.Path` that has value semantics, but when in doubt – use pointers.
There are some exceptions like `time.Time` that have value semantics, but when in doubt – use pointers.
#### Comments conventions
1. All top-level declarations, even unexported, should have documentation comments.
2. In documentation comments do not describe the name in terms of the name itself (`// Registry is a registry of …`).
Use other words instead; often, they could add additional information and make reading more pleasant (`// Registry stores …`).
3. In code comments, in general, do not describe _what_ the code does: it should be clear from the code itself
(and when it doesn't and the code is tricky, simplify it instead).
Instead, describe _why_ the code does that if it is not clear from the surrounding context, names, etc.
There is no need to add comments just because there are no comments if everything is already clear without them.
4. For code comments, write either
sentence fragments (do not start it with a capital letter, do not end it with a dot, use the simplified grammar) for short notes
or full sentences (do start them with capital letters, do end them with dots, do check their grammar) when a longer (2+ sentences)
explanation is needed (and the code could not be simplified).
#### Logging conventions
(See also our user documentation for notes about logging levels, logging sensitive information, etc.)
1. Log messages should contain a single sentence; use a semicolon if you must.
2. Log messages should not have leading/trailing spaces or end with punctuation.
3. Log field names should use `snake_case`.
4. Whatever sensitive information can be logged should be checked by calling `.Enabled(slog.LevelDebug)` on the appropriate logger,
not by directly comparing levels with `<` / `>` operators.
The same check should be applied if additional sensitive fields should be added to the log message on a different level.
#### Integration tests conventions
We prefer our integration tests to be straightforward,
branchless (with a few, if any, `if` and `switch` statements),
and backend-independent.
Ideally, the same test should work for both FerretDB with all handlers and MongoDB.
We prefer our integration tests to be straightforward and
branchless (with a few, if any, `if` and `switch` statements).
Ideally, the same test should work for both FerretDB and MongoDB.
If that's impossible without some branching, use helpers exported from the `setup` package,
such us `IsTigris`, `SkipForTigrisWithReason`, `TigrisOnlyWithReason`.
such us `FailsForFerretDB`, `SkipForMongoDB`, etc.
Please use expected failure rather than skipping the test, whenever it's possible.
It makes tracking development progress much easier.
The bar for using other ways of branching, such as checking error codes and messages, is very high.
Writing separate tests might be much better than making a single test that checks error text.
Also, we should use driver methods as much as possible instead of testing commands directly via `RunCommand`.
In most cases, helpers such as `AssertEqualDocuments` are used to compare `bson.D` documents.
The differences in field order, types, missing fields and others should be reported.
If differences are expected such as `version` field, only the field key can be used for `bson.D` document comparison.
Use of (deprecated) `bson.D.Map()` or converting `bson.D` to other types using helpers should be avoided when possible.
The bar for adding new helpers is very high.
Please check all existing ones.
If there's a need to use any large number to test corner cases,
we create constants for them with explanation what do they represent, and refer to them.
For example:
```go
const doubleMaxPrec = float64(1<<53 - 1) // 9007199254740991.0: largest double values that could be represented as integer exactly
```
Avoid writing tests that cannot run in parallel with other tests.
The `integration` directory contains multiple test packages,
and tests from other packages may run at the same time.
Such test becomes flaky and hard to maintain.
#### Integration tests naming guidelines
<!-- https://github.com/FerretDB/FerretDB/issues/694 -->
Use `Test<Command><Operator><Scenario>` format for test names, omitting `<Operator>` and `<Scenario>` if unnecessary.
1. Include the name of the command (and the operator if any).
For example, `TestDistinct` for testing the distinct command.
2. Compatibility tests should have `Compat` in the name, following the command.
For example, `TestDistinctCompat`.
3. If the test runs a command directly via `RunCommand`, add the suffix `Command`.
For example, `TestDistinctCommand`.
4. If the test is both compat and runs a command, add the suffix `CommandCompat`.
For example, `TestInsertCommandCompat`.
5. If the file consists of compatibility tests, add the `_compat` suffix.
For example, `distinct_compat_test.go`.
6. Use descriptive test names to include the condition or the specific error being tested.
For example, `TestAggregateCompatSortDotNotation` for compatibility tests
on `aggregate` command `$sort` operator on a document field.
7. Keep test names concise, avoiding overly cryptic names.
Use abbreviations when appropriate.
8. Avoid including test data in the name to maintain clarity and prevent excessively long names.
9. Use `TitleCase` capitalization style for test case names.
No spaces, dashes or underscores should be used neither for test names nor for test case names.
10. Use [BSON notation](https://bsonspec.org/spec.html) vocabulary.
For example, use `Double` and not `float64`.
11. Keep the concatenation of test name segments (test, subtests) within 64 characters
to satisfy the maximum limit for database names.
12. Use a package for tests in the same scope.
Separating into packages can reduce binary sizes and may enhance performance.
For example, use `users` package for user management test files.
### Submitting code changes
#### Before submitting PR
Before submitting a pull request, please make sure that:
1. Tests are added for new functionality or fixed bugs.
1. Your changes are committed to a [new branch](https://docs.github.com/en/get-started/quickstart/github-flow)
created from the [current state](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork)
of our main branch.
2. Tests are added or updated for new functionality or fixed bugs.
Typical test cases include:
- happy paths;
- dot notation for existing and non-existent paths;
- edge cases for invalid or unexpected values or types.
2. Comments are added or updated for all new or changed code.
3. Comments are added or updated for all new or changed code.
Please add missing comments for all (both exported and unexported)
new and changed top-level declarations (`package`, `var`, `const`, `func`, `type`).
Please also check that formatting is correct in the `task godocs` output.
3. `task all` passes.
4. `task all` passes.
#### Submitting PR
1. If the pull request is related to some issues,
please mention the issue number in the pull request **description** like `Closes #{issue_number}.`
or `Closes org/repo#{issue_number}.`
(You can just follow the pull request template).
Please do not use URLs like `https://github.com/org/repo/issue/{issue_number}`
or paths like `org/repo/issue/{issue_number}` even if they are rendered the same on GitHub.
1. Please follow the pull request template.
2. If the pull request is related to some issue,
please mention the issue number in the pull request description like `Closes #<issue_number>.`
or `Closes FerretDB/<repo>#<issue_number>.`
Please do not use URLs like `https://github.com/FerretDB/<repo>/issue/<issue_number>`
or paths like `FerretDB/<repo>/issue/<issue_number>` even if they are rendered the same on GitHub.
If you propose a tiny fix, there is no needed to create a new issue.
2. There is no need to use draft pull requests.
3. There is no need to use draft pull requests.
If you want to get feedback on something you are working on,
please create a normal pull request, even if it is not "fully" ready yet.
3. In the pull request review conversations,
4. In the pull request review conversations,
please either leave a new comment or resolve (close) the conversation,
which ensures the other people can read all comments.
But **do not** do that simultaneously.
4. During your development,
commit messages (both titles and bodies) are not important and can be "WIP" or anything else.
All commits are always squashed on merge by GitHub,
so there is **no need** to squash them manually, amend them, and/or do force pushes.
But notice that the autogenerated GitHub's squash commit's body
**should be** manually replaced by "Closes #{issue_number}.".
5. Please don't forget to click
which ensures other people can read all comments.
But do not do that simultaneously.
Conversations should typically be resolved by the conversation starter, not the PR author.
5. During development in a branch/PR,
commit messages (both titles and bodies) are not important and can be anything.
All commits are always squashed on merge by GitHub.
Please **do not** squash them manually, amend them, and/or force push them -
that makes the review process harder.
6. Please don't forget to click
["re-request review" buttons](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review)
once PR is ready for re-review.
If you have interest in becoming or are a long-term contributor,
please read [PROCESS.md](.github/PROCESS.md) for more details.
## Reporting a bug
We appreciate reporting a bug to us.
To help us accurately identify the cause, we encourage
you to include a pull request with test script.
Please write the test script in
[build/legacy-mongo-shell/test.js](build/legacy-mongo-shell/test.js).
You can find an overview of the available assertions [here](build/legacy-mongo-shell/README.md).
Use these assertions to validate your test's assumptions and invariants.
You can also find an example of how to prepare a test script in
[build/legacy-mongo-shell/test.example.js](build/legacy-mongo-shell/test.example.js).
Test your script using following steps:
1. Start the development environment with `task env-up`.
2. Start FerretDB with `task run`.
3. Run the test script with `task testjs`.
Please create a pull request and include the link of the pull request in the bug issue.
## Contributing documentation
### Commands for contributing documentation
@@ -311,5 +403,8 @@ With `task` installed (see above), you may do the following:
Before submitting a pull request, please make sure that:
1. Documentation is formatted, linted, and built with `task docs`.
2. Documentation is written according to our [writing guide](https://docs.ferretdb.io/contributing/writing-guide/).
1. Your changes are committed to a [new branch](https://docs.github.com/en/get-started/quickstart/github-flow)
created from the [current state](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork)
of our main branch.
2. Documentation is formatted, linted, and built with `task docs`.
3. Documentation is written according to our [writing guide](https://docs.ferretdb.io/contributing/writing-guide/).
-2
View File
@@ -1,2 +0,0 @@
FerretDB database system (https://www.ferretdb.io/).
Copyright 2021 FerretDB Inc.
+59 -39
View File
@@ -1,18 +1,35 @@
# FerretDB
[![Go Reference](https://pkg.go.dev/badge/github.com/FerretDB/FerretDB/ferretdb.svg)](https://pkg.go.dev/github.com/FerretDB/FerretDB/ferretdb)
<!-- textlint-disable one-sentence-per-line -->
> [!TIP]
> Looking for FerretDB v1?
> It is [there](https://github.com/FerretDB/FerretDB/tree/main-v1).
<!-- textlint-enable one-sentence-per-line -->
[![Go Reference](https://pkg.go.dev/badge/github.com/FerretDB/FerretDB/v2/ferretdb.svg)](https://pkg.go.dev/github.com/FerretDB/FerretDB/v2/ferretdb)
[![Go](https://github.com/FerretDB/FerretDB/actions/workflows/go.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/go.yml)
[![Integration](https://github.com/FerretDB/FerretDB/actions/workflows/integration.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/integration.yml)
[![codecov](https://codecov.io/gh/FerretDB/FerretDB/branch/main/graph/badge.svg?token=JZ56XFT3DM)](https://codecov.io/gh/FerretDB/FerretDB)
[![Security](https://github.com/FerretDB/FerretDB/actions/workflows/security.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/security.yml)
[![Packages](https://github.com/FerretDB/FerretDB/actions/workflows/packages.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/packages.yml)
[![Docs](https://github.com/FerretDB/FerretDB/actions/workflows/docs.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/docs.yml)
FerretDB was founded to become the de-facto open-source substitute to MongoDB.
FerretDB is an open-source proxy, converting the MongoDB 6.0+ wire protocol queries to SQL -
using PostgreSQL as a database engine.
FerretDB is an open-source alternative to MongoDB.
It is a proxy that converts MongoDB 5.0+ wire protocol queries to SQL
and uses PostgreSQL with [DocumentDB extension](https://github.com/documentdb/documentdb) as a database engine.
```mermaid
flowchart LR
A["Any application<br>Any MongoDB driver"]
F{{FerretDB}}
P[(PostgreSQL<br>DocumentDB extension)]
A -- "MongoDB protocol<br>BSON" --> F
F -- "PostgreSQL protocol<br>SQL" --> P
```
## Why do we need FerretDB?
@@ -20,7 +37,7 @@ MongoDB was originally an eye-opening technology for many of us developers,
empowering us to build applications faster than using relational databases.
In its early days, its ease-to-use and well-documented drivers made MongoDB one of the simplest database solutions available.
However, as time passed, MongoDB abandoned its open-source roots;
changing the license to [SSPL](https://www.mongodb.com/licensing/server-side-public-license) - making it unusable for many open source and early-stage commercial projects.
changing the license to [SSPL](https://www.ferretdb.com/sspl) - making it unusable for many open-source and early-stage commercial projects.
Most MongoDB users do not require any advanced features offered by MongoDB;
however, they need an easy-to-use open-source document database solution.
@@ -29,72 +46,75 @@ Recognizing this, FerretDB is here to fill that gap.
## Scope and current state
FerretDB is compatible with MongoDB drivers and popular MongoDB tools.
It functions as a drop-in replacement for MongoDB 6.0+ in many cases.
It functions as a drop-in replacement for MongoDB 5.0+ in many cases.
Features are constantly being added to further increase compatibility and performance.
We welcome all contributors.
See our [public roadmap](https://github.com/orgs/FerretDB/projects/2/views/1),
a list of [known differences with MongoDB](https://docs.ferretdb.io/diff/),
lists of [known differences and supported commands](https://docs.ferretdb.io/migration/compatibility/),
and [contributing guidelines](CONTRIBUTING.md).
## Quickstart
Run this command to start FerretDB with PostgreSQL, make sure to update `<username>` and `<password>`:
```sh
docker run -d --rm --name ferretdb -p 27017:27017 ghcr.io/ferretdb/all-in-one
docker run -d --rm --name ferretdb -p 27017:27017 \
-e POSTGRES_USER=<username> \
-e POSTGRES_PASSWORD=<password> \
ghcr.io/ferretdb/ferretdb-eval:2
```
This command will start a container with FerretDB, PostgreSQL, and MongoDB Shell for quick testing and experiments.
This command will start a container with FerretDB, pre-packaged PostgreSQL with DocumentDB extension, and MongoDB Shell for quick testing and experiments.
However, it is unsuitable for production use cases because it keeps all data inside and loses it on shutdown.
See our [Docker quickstart guide](https://docs.ferretdb.io/quickstart-guide/docker/) for instructions
See our [installation guides](https://docs.ferretdb.io/installation/) for instructions
that don't have those problems.
With that container running, you can:
- Connect to it with any MongoDB client application using MongoDB URI `mongodb://127.0.0.1:27017/`.
- Connect to it using MongoDB Shell by just running `mongosh`.
- Connect to it with any MongoDB client application using the MongoDB URI `mongodb://<username>:<password>@127.0.0.1:27017/`.
- Connect to it using the MongoDB Shell by just running `mongosh`.
If you don't have it installed locally, you can run `docker exec -it ferretdb mongosh`.
- Connect to PostgreSQL running inside the container by running `docker exec -it ferretdb psql -U username ferretdb`.
FerretDB uses PostgreSQL schemas for MongoDB databases.
So, if you created some collections in the `test` database using any MongoDB client,
you can switch to it by running `SET search_path = 'test';` query
and see a list of PostgreSQL tables by running `\d` `psql` command.
- For PostgreSQL, connect to it by running `docker exec -it ferretdb psql -U <username> postgres`.
You can stop the container with `docker stop ferretdb`.
We also provide binaries and packages for various Linux distributions.
See [our documentation](https://docs.ferretdb.io/quickstart-guide/) for more details.
as well as [Go library package](https://pkg.go.dev/github.com/FerretDB/FerretDB/v2/ferretdb)
that embeds FerretDB into your application.
See [our documentation](https://docs.ferretdb.io/installation/) for more details.
## Building and packaging
We strongly advise users not to build FerretDB themselves.
Instead, use binaries, Docker images, or `.deb`/`.rpm` packages provided by us.
<!-- textlint-disable one-sentence-per-line -->
If you want to package FerretDB for your operating system or distribution,
the recommended way to build the binary is to use the `build-release` task;
see our [instructions for contributors](CONTRIBUTING.md) for more details.
FerretDB could also be built as any other Go program,
> [!NOTE]
> We advise users not to build FerretDB themselves.
> Instead, use binaries, Docker images, or packages provided by us.
<!-- textlint-enable one-sentence-per-line -->
FerretDB could be built as any other Go program,
but a few generated files and build tags could affect it.
See [there](https://pkg.go.dev/github.com/FerretDB/FerretDB/build/version) for more details.
See [there](https://pkg.go.dev/github.com/FerretDB/FerretDB/v2/build/version) for more details.
## Managed FerretDB at cloud providers
- [Civo](https://www.civo.com) (see [here](https://www.civo.com/marketplace/FerretDB)).
- [Scaleway](https://www.scaleway.com/) (request access [here](https://www.scaleway.com/en/betas/#managed-document-database)).
## Documentation
- [Documentation for users](https://docs.ferretdb.io/).
- [Documentation for Go developers about embeddable FerretDB](https://pkg.go.dev/github.com/FerretDB/FerretDB/ferretdb).
- [FerretDB Cloud](https://cloud.ferretdb.com/)
- [Civo](https://www.civo.com/marketplace/FerretDB)
- [Tembo](https://tembo.io/docs/tembo-stacks/mongo-alternative)
- [Elestio](https://elest.io/open-source/ferretdb)
- [Cozystack](https://cozystack.io/docs/components/#managed-ferretdb)
## Community
- Website and blog: [https://ferretdb.io](https://ferretdb.io/).
- Twitter: [@ferret_db](https://twitter.com/ferret_db).
- Website: https://www.ferretdb.com/.
- Blog: https://blog.ferretdb.io/.
- Documentation: https://docs.ferretdb.io/.
- X (Twitter): [@ferret_db](https://x.com/ferret_db).
- Mastodon: [@ferretdb@techhub.social](https://techhub.social/@ferretdb).
- [Slack chat](https://join.slack.com/t/ferretdb/shared_invite/zt-zqe9hj8g-ZcMG3~5Cs5u9uuOPnZB8~A) for quick questions.
- [Slack chat](https://slack.ferretdb.io/) for quick questions.
- [GitHub Discussions](https://github.com/FerretDB/FerretDB/discussions) for longer topics.
- [GitHub Issues](https://github.com/FerretDB/FerretDB/issues) for bugs and missing features.
- [Open Office Hours meeting](https://calendar.google.com/event?action=TEMPLATE&tmeid=NjNkdTkyN3VoNW5zdHRiaHZybXFtb2l1OWtfMjAyMTEyMTNUMTgwMDAwWiBjX24zN3RxdW9yZWlsOWIwMm0wNzQwMDA3MjQ0QGc&tmsrc=c_n37tquoreil9b02m0740007244%40group.calendar.google.com&scp=ALL)
every Monday at 18:00 UTC at [Google Meet](https://meet.google.com/mcb-arhw-qbq).
If you want to contact FerretDB Inc., please use [this form](https://www.ferretdb.io/contact/).
If you want to contact FerretDB Inc., please use [this form](https://www.ferretdb.com/contact/).
+2 -2
View File
@@ -2,12 +2,12 @@
## Supported Versions
We support all FerretDB versions since 1.0.0.
We support two of the latest minor versions of FerretDB.
## Reporting a Vulnerability
Please do not use public issues for security problems.
Instead, report them [there](https://github.com/FerretDB/FerretDB/security/advisories/new).
You can also reach us by email at <security@ferretdb.io>.
You can also reach us by email at security@ferretdb.io.
We should respond to you within seven days.
+591 -282
View File
File diff suppressed because it is too large. Load diff
+6 -2
View File
@@ -1,6 +1,5 @@
---
# https://github.com/DavidAnson/markdownlint
# https://github.com/DavidAnson/markdownlint-cli2
# https://github.com/DavidAnson/markdownlint-cli2#configuration
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
default: true
@@ -10,4 +9,9 @@ MD003: { style: atx }
MD004: { style: "dash" }
MD006: false # deprecated
MD013: false # we use https://sembr.org that could lead to long lines
MD026: { punctuation: ".,;:。,;:" } # default is .,;:!。,;:!
MD029: { style: ordered }
MD033: false # for MDX
MD034: false # autolink tags <link> no longer supported by MDX
MD037: false # clashes with MDX comments
MD059: false # not yet
+20 -2
View File
@@ -5,19 +5,37 @@
"one-sentence-per-line": true,
"@textlint-rule/pattern": {
"patterns": [
// mostly to keep JS/JSON snippets with correct
{
"message": "Use straight ASCII double quotes instead of curly double quotes",
"pattern": "/(“|”)/",
"pattern": "/“|”/",
"replace": "\"",
"forceCode": true
},
{
"message": "Use straight ASCII single quotes instead of curly single quotes",
"pattern": "/(‘|’)/",
"pattern": "/‘|’/",
"replace": "'",
"forceCode": true
},
// to prevent --flags from being converted to en dashes or em dashes
{
"message": "Use en dashes with spaces instead of em dashes",
"pattern": "/—/",
"replace": " – ",
"forceCode": true
},
{
"message": "Use en dashes with spaces",
"pattern": "/(\\S)–([\\S])/",
"replace": "$1 – $2",
"forceCode": true
}
]
}
},
"filters": {
"comments": true
}
}
+7
View File
@@ -0,0 +1,7 @@
# https://github.com/cloudwego/eino#dependencies
# TODO https://github.com/cloudwego/eino/issues/291
CVE-2025-30153
# https://nvd.nist.gov/vuln/detail/CVE-2025-51471
# https://github.com/ollama/ollama/pull/10750
CVE-2025-51471
+5
View File
@@ -0,0 +1,5 @@
[worker.oci]
gc = false
[worker.containerd]
gc = false
+5
View File
@@ -1,11 +1,16 @@
# see https://github.com/FiloSottile/mkcert
export CAROOT=$(PWD)
export TRUST_STORES=system
HOSTS=localhost 127.0.0.1 ::1 host.docker.internal
gen:
rm -f *.pem
mkcert -install
mkcert -client -cert-file client-cert.pem -key-file client-key.pem $(HOSTS)
cat client-cert.pem client-key.pem > client.pem
mkcert -cert-file server-cert.pem -key-file server-key.pem $(HOSTS)
cat server-cert.pem server-key.pem > server.pem
mkcert -uninstall
mv rootCA.pem rootCA-cert.pem
rm -f rootCA-key.pem
+25 -25
View File
@@ -1,27 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEkjCCAvqgAwIBAgIQIJJuiEy6fblSjN6q3SwleDANBgkqhkiG9w0BAQsFADCB
kTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTMwMQYDVQQLDCphbGVr
c2lAUHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykxOjA4BgNVBAMM
MW1rY2VydCBhbGVrc2lAUHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5r
bykwHhcNMjIxMjEwMDcxODA1WhcNMjUwMzEwMDcxODA1WjBeMScwJQYDVQQKEx5t
a2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxMzAxBgNVBAsMKmFsZWtzaUBQ
cm9ib29rLmxvY2FsIChBbGV4ZXkgUGFsYXpoY2hlbmtvKTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAL6Wjqflpl7y4g/N0LZGFBZOmUMCveNA9VhSBVYK
wgaeY8Ypl/xmfTjAcVXbzkSunwxFDVL1cZavaM5fRFLlF9Tj7A8hxaE/Cwr3Gr9U
qAiFgRMQZb1CxkCdkqw6dgsXx8N5TfcEijG8CEiKhSYTFVD6ca8tgE0F8c568ES1
CVxynoxAmLedNNGYt3IyCSow6c8YUouWOccf3EzuhoL0NnuYgm0hwIJB2WCJlEJA
HcYabDMdDCAWhKQ2kNoh4hV576L3I9zl549ghnGrZzGhjcHn8AgNRvZasfgaSttx
dCAiPqtvc2KJJO6fG3Ue+bDftMk3n9/IZ+XpCRD7gznBVbcCAwEAAaOBlzCBlDAO
BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8G
A1UdIwQYMBaAFKrDcJcU9cWHA3BoHNr90+chUt2qMEIGA1UdEQQ7MDmCCWxvY2Fs
aG9zdIIUaG9zdC5kb2NrZXIuaW50ZXJuYWyHBH8AAAGHEAAAAAAAAAAAAAAAAAAA
AAEwDQYJKoZIhvcNAQELBQADggGBABbgVfpgwwMNMXa359jwzrjDZA9MMhCec5Du
UbbwZJxQqWkbvlHsn11VTCTjvRqpjc7pgU9vclZgj3/h+j8cw8uy1ZsjV2sQhyJX
DQVVfm60jvb3+deamePciPPwXzOHZswdfnEHgRYQiSx035HKniErAFTXR9v+ZSl9
9qVjkuR6cRi02iLmjmnXB55vzyfgXmlNwMlYqIe9e3WsqdGKKw50qx6B6VU1J0tz
H7DDmgzF3jiOhNmdjHVFoz4wDnx3e1GhziVc8e8tuBANIAyTasahVlnP+KtJPao2
ciqFZrRbSxYwXCQRwd5F4FvVLLkqVYO2PRDBGi8m483hHgI5bkOfyrNIvgiNGGWV
Fq/uVEwgqUItmgpy2ZdRz4zA1GL4olCKX8FALDgwVI6t1Ygo5EoUP1m1xyC7NK5R
WI701gZnMICUos39Usvp8EagwYyDtkLxumznMS1q+m9sy+gY4Kfag3tnzcJHyjUN
yfWf5P+Sjdx0+qAVOnAHd+2estdu5g==
MIIEkzCCAvugAwIBAgIRAJQIOW0DsoWpmhRIS6qVTMkwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTI1MDQyNDA2Mjg1NVoXDTI3MDcyNDA2Mjg1NVowXjEnMCUGA1UEChMe
bWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTMwMQYDVQQLDCphbGVrc2lA
UHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDGNj/3rcpjgu8GZHg1AS8lAEy8tbg73+9YRPJs
IAytaCmoQYbRZncrWa9hWT0568DGSWbHye4+ZFrYyW1vNb0ANWPGVd6ReqtJm0wt
plfcyzbgGN4EIYgHEUjFvVfDg6fHdV5K8z6UGGfnHHtwoj649Vw3CjAIRXufB9dD
EPAZoh2NKp+EEQiNlX8+oNIMGYmGP6QAh1l/RCrj2yhVeXqXC7s8y9HCKSa08tBO
e3AzHfWrcksVC2HugR6+/KjinOowlL4GwtpQ9clJF8Vk9ilA+PXL37CIaTkdJOsX
doacEC84NpeSyQYf8g4q5uHDTEc4kg5NQ04TizFpag1LWs/nAgMBAAGjgZcwgZQw
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAf
BgNVHSMEGDAWgBRMfF45cY0dizvyML/k08KmEEPhkjBCBgNVHREEOzA5gglsb2Nh
bGhvc3SCFGhvc3QuZG9ja2VyLmludGVybmFshwR/AAABhxAAAAAAAAAAAAAAAAAA
AAABMA0GCSqGSIb3DQEBCwUAA4IBgQBiim9kFNYL81xP6MHNJe2erc3IrpCCn7IC
WfrhqIz89o/2gYIWqwlc7IWA+y13btUAkaXVDZvZMoFMKbvUcF89OpO8G+4XpbX4
uu9Q5pC3cjnFymO8xTRNgOam6yySLbjwzZwQIZ/0hh9xCeQ64tlw/a4VT6+UJrYn
SNTPI38f/MwCFkyr4vCkCUIOIwTRfDc2BwHu1CJ820Hu3Jpr10CRzBOvsDJlDg8c
vcmbdo+jsqEFMNIZpTblZA+MALRq4eK6Bas3YQcqIGjo+lxx9eYCGzZH1ygS/K5X
501rBpLJ4OklIVTFWuo5IVwJ9RWMPgX3htl3HzpGztEV8nB9LEjKl9Lmm7xPb8+n
ytycvckVyFe5JtejNtiB+9v0jNyqvEe2B7hdGfSLchuCv0a3xsocnayxnJChKtqI
vo022s1k9k7wwJ2Qeq49HfK3yY00SgXYpUljKHLZocisYBxHmNbegzSBa2x7RU+k
YexHKXvwNHdkVNOTs9LgER0EexdK+AM=
-----END CERTIFICATE-----
+26 -26
View File
@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+lo6n5aZe8uIP
zdC2RhQWTplDAr3jQPVYUgVWCsIGnmPGKZf8Zn04wHFV285Erp8MRQ1S9XGWr2jO
X0RS5RfU4+wPIcWhPwsK9xq/VKgIhYETEGW9QsZAnZKsOnYLF8fDeU33BIoxvAhI
ioUmExVQ+nGvLYBNBfHOevBEtQlccp6MQJi3nTTRmLdyMgkqMOnPGFKLljnHH9xM
7oaC9DZ7mIJtIcCCQdlgiZRCQB3GGmwzHQwgFoSkNpDaIeIVee+i9yPc5eePYIZx
q2cxoY3B5/AIDUb2WrH4GkrbcXQgIj6rb3NiiSTunxt1Hvmw37TJN5/fyGfl6QkQ
+4M5wVW3AgMBAAECggEAMiun+gK2PSBq6gYf/xuLhiPCrKU4H26mJ03QIcpLMTrY
wP2KCONh62KdcyCdt+7P54b17vS1phke2dSyQ7ATCfPF3GXjhIL4ATbzT5KVeUjL
pZ0Xay78yV2xkq0BDgKAj7CLGY+UYWtCMvZj/pXfcqW674Zm09/Qu64ZObz+bds5
cCrGyhpj1pXZJNBwfaJg82VwWIdytwcFdRwtgywiUJOZ+ldcnJU13f3HjxERpYYA
zSvNi63bkBEMnj844p9MMsqwb5r8/lZQRvI2K6dW/dRa8xmQKi00AjtPOZMly1Re
07brcVTmav2jYhZp9PxZUiRMmCdzEnhLtsynaYWVoQKBgQDGQxJeQncM12GuV1Oo
nHJwRyICzB6DJ8nmErpK0a/zvIiQxUD+/qPVzTDI9C5lBWWPniGjdv57Nb0on1l3
zp9MPzZrzLBTYyFT5nPBLyhcrRyd0Acz0MeB8p/UwErBP4JsJsjfuSB/Pa9YmbgV
4GtWQ8khV05vhtivtR3xZl+RRQKBgQD2F2DQjfEuq4tD08v1JiBQQLM+Yw3k0tSe
f4HFlbOHtPGEHbzrt3eD6fOhJmkVEkQcde4h22+oHpKff/5h0iiW5N4NUrIoL4WN
34ZHIcpo+gjcdzrLF9fytzLbaaSpDApVVhcRX3JinwKpCp9G4y06KKKRV5EhW4MM
+1kdZbzUywKBgEG/GkdB2ULb5duvv+FpSBXtsNymnfO2bSCr0zVehe/Y9Jy1nREy
llgfPG9Xck8z0/MlaFhR7KAlOP5QoZW2YmMhj0V+UnbEp9ev03Eb11GsYpH+23SW
ZqK0N8aQofmluvVsgy6VsK4hYZWLHF281zt7LSauUidv20mhUTWtUkHVAoGBAJUa
fRJfri30yiCChyU1wIZfbTrzkUt/YkvWPa6VkX076Ml/qyO2ubc3XOHa//hAZPxJ
h8sDxZc7TuNNDbf/OZCTgubXoBIxGN5o/FbE5nrMY+oQY5MCE1mAHlRKofW60df6
nWdtSUTvyxDY2sB8jL6cOEOPpuNrKvAGqmvhZJQZAoGBAJOR7QEbU7L5rWEHDs2z
QU8ry3y9stbt/ViP/RE63jLcxP5RG7LueDRYsNSdY0WA8wbJ6WNElo3EvxMurmmn
jkjuhbcFgDFZ5W6cjjG8kDytIHcH73xbZLjqmN/NfsSW211HudkembKfQ4G6llPu
dZpM5PgCoeFawQ1SnC+CSmcR
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDGNj/3rcpjgu8G
ZHg1AS8lAEy8tbg73+9YRPJsIAytaCmoQYbRZncrWa9hWT0568DGSWbHye4+ZFrY
yW1vNb0ANWPGVd6ReqtJm0wtplfcyzbgGN4EIYgHEUjFvVfDg6fHdV5K8z6UGGfn
HHtwoj649Vw3CjAIRXufB9dDEPAZoh2NKp+EEQiNlX8+oNIMGYmGP6QAh1l/RCrj
2yhVeXqXC7s8y9HCKSa08tBOe3AzHfWrcksVC2HugR6+/KjinOowlL4GwtpQ9clJ
F8Vk9ilA+PXL37CIaTkdJOsXdoacEC84NpeSyQYf8g4q5uHDTEc4kg5NQ04TizFp
ag1LWs/nAgMBAAECggEBAJBcqrJFzYY0sspBGpvgROn6EenPoGNbcgMkFDxUC2ew
2cZGE18n9duI8odAa6tn3XuNsmII3JBsnw4NhrrctM8WE5k8qWHjqiVuCkmlQZD6
IPmOowT3Nw+OsyXyBZ3MocJP5WFJUGakb+iPgghC4tPrQEKGFP2xPZxSJaIfEABa
HgSYTSr+n8lJUKdld00BNSWXBxsVQ8NAw/5AFjFP4R3TeCwbd34lpMpkLvOax05j
xbdZr0MP03MT8PYMBRzqMcST0OR7bK8vyAnB/ezxhrnQaMV2NeHpisB3UbNFi+PT
63tNV/S2hCOGDZ5V+jFQ6FRyUw1gOlJK/EMGLIEt3kECgYEA1gMXqlp5w0OIBBkS
MbhY2LhVO0v3LBHtRCqFbKGdA3yrHrsq/YJKlJbEoiw9mWGgYq7h0jNAsvI/WLgo
tm4AUxRdG9YZDqNEcfcODnLqFg5D7/abSXx+An3pwZ+fQgL8STGu9up/Xl1Sss1T
JHBEOM+vqb7TQxPPvl77SUHUwX8CgYEA7RmVO6PEepnJuMGYgG9Au5SMkcFY5iK5
AqlEHio097+KsQ+K4nxW8yvtNoXnSBsfX3t78vI6zjSeFgk/MhoVUGLKIQTwq6KO
WvASeB1zIzSkfXISznMs/CxGMt9FODvM9PCJMpeFAvJNDn83vupo0oxagu+EUVoF
eGoqNEMMVZkCgYEAgx+d7lhE5miH+8rIpQIIHbDDN/ORW8UYFH3hBe/3Xd2Skt+m
tXCQ9X1yuNJWY5W3SP9RiRKx/3IBcgBToYLAXCbL7XQ+IgPSuejfCedKmXzgDzSP
bHUEV86B3IpKb42YudfhFZQTueN/+eFnoZnPkudc/6nVkvGehUt4tyfIjU0CgYAP
PebHB7cYvowmMWPRVdWOeXUz5X8GhFLqZeE4IzR2fLy4tywRdTbNuRQtvhvpGb1B
kRmdu46mNOG4vu1uFhkqqr8dskiab//AvtAhIpuFNtwgKFYnKWZJ67qziIDVpZp+
YHwhYXYug08K0IjP4BfO+TDUW/tgk23omMKPy4OeeQKBgQCiKzdHtUO6KujjueYX
lbDVbdEiXYbGzKcMmE0E/DK73xXpXT/CQ+tjB3nZKHDwkTN6h9ZZYzjhRWmHRlRh
WqGqmWr4D3I0B9jnxCTpDuZIlJ21G336RbsZD8yi+eyMwJXN4csItGSlMig04jvo
5vTIN0D0uXAvDD23TEcilpQzcA==
-----END PRIVATE KEY-----
+51 -51
View File
@@ -1,55 +1,55 @@
-----BEGIN CERTIFICATE-----
MIIEkjCCAvqgAwIBAgIQIJJuiEy6fblSjN6q3SwleDANBgkqhkiG9w0BAQsFADCB
kTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTMwMQYDVQQLDCphbGVr
c2lAUHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykxOjA4BgNVBAMM
MW1rY2VydCBhbGVrc2lAUHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5r
bykwHhcNMjIxMjEwMDcxODA1WhcNMjUwMzEwMDcxODA1WjBeMScwJQYDVQQKEx5t
a2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxMzAxBgNVBAsMKmFsZWtzaUBQ
cm9ib29rLmxvY2FsIChBbGV4ZXkgUGFsYXpoY2hlbmtvKTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAL6Wjqflpl7y4g/N0LZGFBZOmUMCveNA9VhSBVYK
wgaeY8Ypl/xmfTjAcVXbzkSunwxFDVL1cZavaM5fRFLlF9Tj7A8hxaE/Cwr3Gr9U
qAiFgRMQZb1CxkCdkqw6dgsXx8N5TfcEijG8CEiKhSYTFVD6ca8tgE0F8c568ES1
CVxynoxAmLedNNGYt3IyCSow6c8YUouWOccf3EzuhoL0NnuYgm0hwIJB2WCJlEJA
HcYabDMdDCAWhKQ2kNoh4hV576L3I9zl549ghnGrZzGhjcHn8AgNRvZasfgaSttx
dCAiPqtvc2KJJO6fG3Ue+bDftMk3n9/IZ+XpCRD7gznBVbcCAwEAAaOBlzCBlDAO
BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8G
A1UdIwQYMBaAFKrDcJcU9cWHA3BoHNr90+chUt2qMEIGA1UdEQQ7MDmCCWxvY2Fs
aG9zdIIUaG9zdC5kb2NrZXIuaW50ZXJuYWyHBH8AAAGHEAAAAAAAAAAAAAAAAAAA
AAEwDQYJKoZIhvcNAQELBQADggGBABbgVfpgwwMNMXa359jwzrjDZA9MMhCec5Du
UbbwZJxQqWkbvlHsn11VTCTjvRqpjc7pgU9vclZgj3/h+j8cw8uy1ZsjV2sQhyJX
DQVVfm60jvb3+deamePciPPwXzOHZswdfnEHgRYQiSx035HKniErAFTXR9v+ZSl9
9qVjkuR6cRi02iLmjmnXB55vzyfgXmlNwMlYqIe9e3WsqdGKKw50qx6B6VU1J0tz
H7DDmgzF3jiOhNmdjHVFoz4wDnx3e1GhziVc8e8tuBANIAyTasahVlnP+KtJPao2
ciqFZrRbSxYwXCQRwd5F4FvVLLkqVYO2PRDBGi8m483hHgI5bkOfyrNIvgiNGGWV
Fq/uVEwgqUItmgpy2ZdRz4zA1GL4olCKX8FALDgwVI6t1Ygo5EoUP1m1xyC7NK5R
WI701gZnMICUos39Usvp8EagwYyDtkLxumznMS1q+m9sy+gY4Kfag3tnzcJHyjUN
yfWf5P+Sjdx0+qAVOnAHd+2estdu5g==
MIIEkzCCAvugAwIBAgIRAJQIOW0DsoWpmhRIS6qVTMkwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTI1MDQyNDA2Mjg1NVoXDTI3MDcyNDA2Mjg1NVowXjEnMCUGA1UEChMe
bWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTMwMQYDVQQLDCphbGVrc2lA
UHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDGNj/3rcpjgu8GZHg1AS8lAEy8tbg73+9YRPJs
IAytaCmoQYbRZncrWa9hWT0568DGSWbHye4+ZFrYyW1vNb0ANWPGVd6ReqtJm0wt
plfcyzbgGN4EIYgHEUjFvVfDg6fHdV5K8z6UGGfnHHtwoj649Vw3CjAIRXufB9dD
EPAZoh2NKp+EEQiNlX8+oNIMGYmGP6QAh1l/RCrj2yhVeXqXC7s8y9HCKSa08tBO
e3AzHfWrcksVC2HugR6+/KjinOowlL4GwtpQ9clJF8Vk9ilA+PXL37CIaTkdJOsX
doacEC84NpeSyQYf8g4q5uHDTEc4kg5NQ04TizFpag1LWs/nAgMBAAGjgZcwgZQw
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAf
BgNVHSMEGDAWgBRMfF45cY0dizvyML/k08KmEEPhkjBCBgNVHREEOzA5gglsb2Nh
bGhvc3SCFGhvc3QuZG9ja2VyLmludGVybmFshwR/AAABhxAAAAAAAAAAAAAAAAAA
AAABMA0GCSqGSIb3DQEBCwUAA4IBgQBiim9kFNYL81xP6MHNJe2erc3IrpCCn7IC
WfrhqIz89o/2gYIWqwlc7IWA+y13btUAkaXVDZvZMoFMKbvUcF89OpO8G+4XpbX4
uu9Q5pC3cjnFymO8xTRNgOam6yySLbjwzZwQIZ/0hh9xCeQ64tlw/a4VT6+UJrYn
SNTPI38f/MwCFkyr4vCkCUIOIwTRfDc2BwHu1CJ820Hu3Jpr10CRzBOvsDJlDg8c
vcmbdo+jsqEFMNIZpTblZA+MALRq4eK6Bas3YQcqIGjo+lxx9eYCGzZH1ygS/K5X
501rBpLJ4OklIVTFWuo5IVwJ9RWMPgX3htl3HzpGztEV8nB9LEjKl9Lmm7xPb8+n
ytycvckVyFe5JtejNtiB+9v0jNyqvEe2B7hdGfSLchuCv0a3xsocnayxnJChKtqI
vo022s1k9k7wwJ2Qeq49HfK3yY00SgXYpUljKHLZocisYBxHmNbegzSBa2x7RU+k
YexHKXvwNHdkVNOTs9LgER0EexdK+AM=
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+lo6n5aZe8uIP
zdC2RhQWTplDAr3jQPVYUgVWCsIGnmPGKZf8Zn04wHFV285Erp8MRQ1S9XGWr2jO
X0RS5RfU4+wPIcWhPwsK9xq/VKgIhYETEGW9QsZAnZKsOnYLF8fDeU33BIoxvAhI
ioUmExVQ+nGvLYBNBfHOevBEtQlccp6MQJi3nTTRmLdyMgkqMOnPGFKLljnHH9xM
7oaC9DZ7mIJtIcCCQdlgiZRCQB3GGmwzHQwgFoSkNpDaIeIVee+i9yPc5eePYIZx
q2cxoY3B5/AIDUb2WrH4GkrbcXQgIj6rb3NiiSTunxt1Hvmw37TJN5/fyGfl6QkQ
+4M5wVW3AgMBAAECggEAMiun+gK2PSBq6gYf/xuLhiPCrKU4H26mJ03QIcpLMTrY
wP2KCONh62KdcyCdt+7P54b17vS1phke2dSyQ7ATCfPF3GXjhIL4ATbzT5KVeUjL
pZ0Xay78yV2xkq0BDgKAj7CLGY+UYWtCMvZj/pXfcqW674Zm09/Qu64ZObz+bds5
cCrGyhpj1pXZJNBwfaJg82VwWIdytwcFdRwtgywiUJOZ+ldcnJU13f3HjxERpYYA
zSvNi63bkBEMnj844p9MMsqwb5r8/lZQRvI2K6dW/dRa8xmQKi00AjtPOZMly1Re
07brcVTmav2jYhZp9PxZUiRMmCdzEnhLtsynaYWVoQKBgQDGQxJeQncM12GuV1Oo
nHJwRyICzB6DJ8nmErpK0a/zvIiQxUD+/qPVzTDI9C5lBWWPniGjdv57Nb0on1l3
zp9MPzZrzLBTYyFT5nPBLyhcrRyd0Acz0MeB8p/UwErBP4JsJsjfuSB/Pa9YmbgV
4GtWQ8khV05vhtivtR3xZl+RRQKBgQD2F2DQjfEuq4tD08v1JiBQQLM+Yw3k0tSe
f4HFlbOHtPGEHbzrt3eD6fOhJmkVEkQcde4h22+oHpKff/5h0iiW5N4NUrIoL4WN
34ZHIcpo+gjcdzrLF9fytzLbaaSpDApVVhcRX3JinwKpCp9G4y06KKKRV5EhW4MM
+1kdZbzUywKBgEG/GkdB2ULb5duvv+FpSBXtsNymnfO2bSCr0zVehe/Y9Jy1nREy
llgfPG9Xck8z0/MlaFhR7KAlOP5QoZW2YmMhj0V+UnbEp9ev03Eb11GsYpH+23SW
ZqK0N8aQofmluvVsgy6VsK4hYZWLHF281zt7LSauUidv20mhUTWtUkHVAoGBAJUa
fRJfri30yiCChyU1wIZfbTrzkUt/YkvWPa6VkX076Ml/qyO2ubc3XOHa//hAZPxJ
h8sDxZc7TuNNDbf/OZCTgubXoBIxGN5o/FbE5nrMY+oQY5MCE1mAHlRKofW60df6
nWdtSUTvyxDY2sB8jL6cOEOPpuNrKvAGqmvhZJQZAoGBAJOR7QEbU7L5rWEHDs2z
QU8ry3y9stbt/ViP/RE63jLcxP5RG7LueDRYsNSdY0WA8wbJ6WNElo3EvxMurmmn
jkjuhbcFgDFZ5W6cjjG8kDytIHcH73xbZLjqmN/NfsSW211HudkembKfQ4G6llPu
dZpM5PgCoeFawQ1SnC+CSmcR
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDGNj/3rcpjgu8G
ZHg1AS8lAEy8tbg73+9YRPJsIAytaCmoQYbRZncrWa9hWT0568DGSWbHye4+ZFrY
yW1vNb0ANWPGVd6ReqtJm0wtplfcyzbgGN4EIYgHEUjFvVfDg6fHdV5K8z6UGGfn
HHtwoj649Vw3CjAIRXufB9dDEPAZoh2NKp+EEQiNlX8+oNIMGYmGP6QAh1l/RCrj
2yhVeXqXC7s8y9HCKSa08tBOe3AzHfWrcksVC2HugR6+/KjinOowlL4GwtpQ9clJ
F8Vk9ilA+PXL37CIaTkdJOsXdoacEC84NpeSyQYf8g4q5uHDTEc4kg5NQ04TizFp
ag1LWs/nAgMBAAECggEBAJBcqrJFzYY0sspBGpvgROn6EenPoGNbcgMkFDxUC2ew
2cZGE18n9duI8odAa6tn3XuNsmII3JBsnw4NhrrctM8WE5k8qWHjqiVuCkmlQZD6
IPmOowT3Nw+OsyXyBZ3MocJP5WFJUGakb+iPgghC4tPrQEKGFP2xPZxSJaIfEABa
HgSYTSr+n8lJUKdld00BNSWXBxsVQ8NAw/5AFjFP4R3TeCwbd34lpMpkLvOax05j
xbdZr0MP03MT8PYMBRzqMcST0OR7bK8vyAnB/ezxhrnQaMV2NeHpisB3UbNFi+PT
63tNV/S2hCOGDZ5V+jFQ6FRyUw1gOlJK/EMGLIEt3kECgYEA1gMXqlp5w0OIBBkS
MbhY2LhVO0v3LBHtRCqFbKGdA3yrHrsq/YJKlJbEoiw9mWGgYq7h0jNAsvI/WLgo
tm4AUxRdG9YZDqNEcfcODnLqFg5D7/abSXx+An3pwZ+fQgL8STGu9up/Xl1Sss1T
JHBEOM+vqb7TQxPPvl77SUHUwX8CgYEA7RmVO6PEepnJuMGYgG9Au5SMkcFY5iK5
AqlEHio097+KsQ+K4nxW8yvtNoXnSBsfX3t78vI6zjSeFgk/MhoVUGLKIQTwq6KO
WvASeB1zIzSkfXISznMs/CxGMt9FODvM9PCJMpeFAvJNDn83vupo0oxagu+EUVoF
eGoqNEMMVZkCgYEAgx+d7lhE5miH+8rIpQIIHbDDN/ORW8UYFH3hBe/3Xd2Skt+m
tXCQ9X1yuNJWY5W3SP9RiRKx/3IBcgBToYLAXCbL7XQ+IgPSuejfCedKmXzgDzSP
bHUEV86B3IpKb42YudfhFZQTueN/+eFnoZnPkudc/6nVkvGehUt4tyfIjU0CgYAP
PebHB7cYvowmMWPRVdWOeXUz5X8GhFLqZeE4IzR2fLy4tywRdTbNuRQtvhvpGb1B
kRmdu46mNOG4vu1uFhkqqr8dskiab//AvtAhIpuFNtwgKFYnKWZJ67qziIDVpZp+
YHwhYXYug08K0IjP4BfO+TDUW/tgk23omMKPy4OeeQKBgQCiKzdHtUO6KujjueYX
lbDVbdEiXYbGzKcMmE0E/DK73xXpXT/CQ+tjB3nZKHDwkTN6h9ZZYzjhRWmHRlRh
WqGqmWr4D3I0B9jnxCTpDuZIlJ21G336RbsZD8yi+eyMwJXN4csItGSlMig04jvo
5vTIN0D0uXAvDD23TEcilpQzcA==
-----END PRIVATE KEY-----
+27 -27
View File
@@ -1,29 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIE8zCCA1ugAwIBAgIQTrUnODKCVekcQa56Q2OQzTANBgkqhkiG9w0BAQsFADCB
kTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTMwMQYDVQQLDCphbGVr
c2lAUHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykxOjA4BgNVBAMM
MW1rY2VydCBhbGVrc2lAUHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5r
bykwHhcNMjIxMjA1MDgxNzA0WhcNMzIxMjA1MDgxNzA0WjCBkTEeMBwGA1UEChMV
bWtjZXJ0IGRldmVsb3BtZW50IENBMTMwMQYDVQQLDCphbGVrc2lAUHJvYm9vay5s
b2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykxOjA4BgNVBAMMMW1rY2VydCBhbGVr
c2lAUHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggGiMA0GCSqG
SIb3DQEBAQUAA4IBjwAwggGKAoIBgQCgLa+u4TDI3iPESTdOpaSO3C1zN4Kx+AwV
6y5MQHs3tQUx5jDdo66wDXkcSIv2xQERbbQSmpTy1rbarN2fq5H4KvgTTQZkpYbt
ho9sziZjMlAUD1VP7Xo0FkgXK20z+t1i7b5DSuZ8oOGTFxwL67qZwkTP5VKHstEm
tLiVgNnmNBsGtxZxpkj8zG8Emn7LSS0DpaKAgxeoyDqkMkpU834+sHdqfTbCfWLA
J8ClkJv4gjR8iXswBl9Gr0j3fOcWNCTOZz0Rn8k6aEUyFnQBSQ5ENN5X44QoXeB9
Xvh0c0T3tC8M3LLXW6i/LioeHjnQ8tlHl8p8SC+ICz22mrAiMHl2ALVE3qJGd15R
4Ni0RGL743URQG2r38WzzVqJ/cZHCfi66eCNSMfeP0XOG5UtJUl0Ko6FwKd7bRY4
BgT6dvxSsCXT2wMyr+Lf4nTkRwKmdJ7PpiG/67fq8b9Jy/1TUK9Y+8F0dyCrDo1O
iHNfnngVtcCJSS1WmxEY+zPkPir0pykCAwEAAaNFMEMwDgYDVR0PAQH/BAQDAgIE
MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFKrDcJcU9cWHA3BoHNr90+ch
Ut2qMA0GCSqGSIb3DQEBCwUAA4IBgQAeM0iseib1sINK9rlZs2sp4ueg8l/oRr1O
Jqqlgt8MnF948HM0XDneiqXpKDRjmcNTgFocHEDnGfGObiyqjnOfgdu7+q/pDzkH
wAnWUc3zQPS2Z4tvy0SFVlZSl1RDgOA8tjt4MyoZLJII+y3O6N/Y9Lu/kCkYzdnQ
GeiYKYS1CiZ5CfUvuL4uQihdUBIBol7OY2S7/udbmEqBUMw6xOZ7j8DMx5p9BGs/
zWVCrIYDihHOdSbDb0Dy4cKc12l8YvabzxpUvIte5l7V8/7jLgv0mBAaY1mz6LeT
xStnsUVL1qUwiUT4LLXc57HT/j4AAWZLW4lvQGSVfDLvpudT9tHJzlizAfJ3XQcq
3wc5VxUiWi98W63yzX+jDgpdGi9qZwnuTR9oukWkquNJcq7zGl6bgwg15cfnsKwd
918cPTZ7bhpH2JqiaTcUSXfYm6fOSPGTG3JqKE7R8zyOeITJAM+F19fmmROy3iRE
h9CGy7MtERq0izVN39Nv/7fEQYISpck=
MIIE9DCCA1ygAwIBAgIRAKmp4Hngu2VSn3W3/HbqhhcwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTI1MDQyNDA2Mjg1MFoXDTM1MDQyNDA2Mjg1MFowgZExHjAcBgNVBAoT
FW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxla3NpQFByb2Jvb2su
bG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQDDDFta2NlcnQgYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMIIBojANBgkq
hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAw/ZCWaFBwUs1uiVu5vwfx7CJKL10EvH7
rBJfUnDMoK/AYUzAhvVumi1WDmT4TnVG4MSQ/Ep5RV5HsidT8Sz75NB5Vu6rRyD1
4BVgR0R4WnyE4XQ7QX/eFvuAL1ToRWwqUtKLPaeYN1v+Xvi7HSeiwS1fPYnZ60mt
SpTOUn3c2EptKwHSZF5g5nrlX0RNEWiqZLW8zy49psDF57883DTOOvDvreH75zRy
jbaz2zXHdERct/zdnAOqPu5D/dT7Oi6ubtbqpp6Ytd0SYASf1DkMc+pq5ta1ZL6j
hs9x6a2X/INYwjXIH+TVqhW6VLR15ieT960dFeJOU2kRRDoOoFegOR5DlLgXyt4c
fap053vL5qbctAWKV0q/4oF4TNRh+9iAXm70HSfPvA8CYv2QIanmsAKlFxkw4lSY
kh2Gycbi2te8AjA8IYYo++DJiy5Y23NWYswZv/qtnZDymaYc3zVooriCie270iiN
Dwysl3saSQL2m2C6VimLJZy8CqyCt3HTAgMBAAGjRTBDMA4GA1UdDwEB/wQEAwIC
BDASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRMfF45cY0dizvyML/k08Km
EEPhkjANBgkqhkiG9w0BAQsFAAOCAYEAKSq6dmHItnF8C4yWP6i08BHAmhqmGo/Q
PvgnnDjNMMX888dJ+cDSTi4r6ukPsjmCj16XZ2RNg2v2nYzO4S6qjuW3vPOGBugG
lCanj0AOZVcZY+te2z8hTxwLDVaRGTm9Tw8jEmjtiNwpChnkIBqAjlHbJZpHpjzv
khusNY8KKH0I/uMBQfIOMKf8fBvu2k8wYlyW1pwwgmVDWbiTv3tU9px7Lh7WSd3w
NFTC+xGAsl+tR7Z/UZB9FcI522IZm6A5LsTp4JfsQ4deUdU7iV36cqTrxG6A59BL
P/BS711oUlei3ORBloFhSXGKVPHqHu1jGGnpIFyQx6uS/0v1M6FN5wmZxAN+YVmO
7B7ttS3mN3PpALJIy+/P/EjtwVqzX+2HdJ+zo3JIHqtIQunBWAeeCZpltn3yd/35
MCa9RG7ftdfVrh2SwdZkR/bhKlgbelZ4EoxHXBiJxwZwVY8rJx/n2Bp+fp7crjhC
ZTscssX+5FbczWgIqzG5vmNescyM4XE3
-----END CERTIFICATE-----
-40
View File
@@ -1,40 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQCgLa+u4TDI3iPE
STdOpaSO3C1zN4Kx+AwV6y5MQHs3tQUx5jDdo66wDXkcSIv2xQERbbQSmpTy1rba
rN2fq5H4KvgTTQZkpYbtho9sziZjMlAUD1VP7Xo0FkgXK20z+t1i7b5DSuZ8oOGT
FxwL67qZwkTP5VKHstEmtLiVgNnmNBsGtxZxpkj8zG8Emn7LSS0DpaKAgxeoyDqk
MkpU834+sHdqfTbCfWLAJ8ClkJv4gjR8iXswBl9Gr0j3fOcWNCTOZz0Rn8k6aEUy
FnQBSQ5ENN5X44QoXeB9Xvh0c0T3tC8M3LLXW6i/LioeHjnQ8tlHl8p8SC+ICz22
mrAiMHl2ALVE3qJGd15R4Ni0RGL743URQG2r38WzzVqJ/cZHCfi66eCNSMfeP0XO
G5UtJUl0Ko6FwKd7bRY4BgT6dvxSsCXT2wMyr+Lf4nTkRwKmdJ7PpiG/67fq8b9J
y/1TUK9Y+8F0dyCrDo1OiHNfnngVtcCJSS1WmxEY+zPkPir0pykCAwEAAQKCAYBH
A1oy/vVA6HMU75zMilVFXMntnbucqSq6gPSaq6+1B9UQxUv+xzWIKcD60BL1SWvq
zScbZFsKujSBCEiNJGRnkK1A6VIfRt9l6NUnWNHeAo1MB2w8Lj2SYBp/4ynb9Kk3
1c0XSlqbADxhmMo/YrfsuRsGzFVlgdqF/XMkHOb9zzX4KS2THzSWlw/VC6WQ/JUv
W7yKmxPfKT4OU5luxjC/HD8k//RKD4q7RCR9gnoTl64rVExAA2M0FDwWNNLCnkTL
iMJVZY8JzGawJr97sMMJ1vKCPyAJIKS/Qv/K49BT01pb08dsgUR0LSwr+e+E8jNL
f8WBlDD4maHSovztqWeR7Gnczv0WTjIzn+UpiUUmAmBVDjeidXH/NsP01NJUyhPa
HlKJBCfNbtFNWZkliwMu2Yq5cZnOFFHb3O+3FhyZc7c46np3EdQOJwX+jVgjaaT/
aQYMTNib0nrVkoliM4vNxH8lNhKZlsPzSXLlr9mAWXa/+iK3HiXmWO6jENRIFq0C
gcEAzL/2kp8MjbQrKyFrmF9hNQ7e6/ObadgjGwjGAliIlVRwC38lc5tdFbthRQpt
VfAunRimh2LI+8SBiJnigFa8IezgPkNVuOlopYwcOHTdm//NcAmNH5f5aan99QJS
IYnD3txvZgKT4kBW8Amt3MdYbBrXJmnDz5AA0ofqJH7XfycIsXuUb8RGML3xi87M
9Fw81lXsOqag/sAwmTybN0C69iypDTOLEU+LfHd5JYs908JRbSkWfvGozKik9ZHR
G9IfAoHBAMhFqS0x4Vejs0mZSdXkcdqFbN5eAeNj0+xVuscCbv4ir2QQS9xUqYmy
gHKbHKASSUXyQ2iKoEdVrvPD0XWQbBbZ0Hx61zdGo9SdDItU4pvZ+jpXsQrmnmxV
0e3DOKQpkEDJJKVFwVvF/Z/LqK0Zm1aPVjcLXn9t5BAQbATfAlprJF8JziJiNJDy
csjtuR7wGsXQRWdbnqg3hn6/upl8WtPHhMwew/Cgf8WGYXi0fcqOFyfjjWq+Lu0Y
lTkqQ54ttwKBwQCGn9VtVHx5k7QqmL/ZISWWMF/svnE6Z+21MdCX7ERqA2nkdUZX
vBi5WEo9jfyT2+eaTYH5VL+Xov4UpjHidqUenVRYPAfaHEY9S2Gm0ViA4PHgL7eF
xXQtwKMFfPApsx6Bo2jvptQ7mFhRXdveZYhDFGbQkAw6ppGT29/c/TWOGklCAWJ5
FpGcLNfsOB5UsW0i9L3tVnBW8GFD8DCSZNJJWNYSowhWannpbdjPEb2mRYcqgjCT
aSu23VARUz4tz7sCgcAzvrPwZnPntfcr6/xE1IqKQHEZn0ZznyZxaNEifEF7TjDs
9Lz1B7bqSgGgGu2xeigOd4LtLuwsojna59xluNQEr3CLyR10Pb80vwMvuNX4GMDr
dB7dRyrlqOLdwNQQrmCELLRYM4a7FJPsRq2lU/lrywsmm7xlxlnnwKZ4N7qe7BHw
sFLfVWppjQsVWT68fKMeOyrDgsuigP4yH42x/IxnLaTlLInJ0V5SBd+HVXMu87mN
5+BxFQSA5BoiNAZWh08CgcAriIjqFrqxLEPJZQxmTIB3ZrCiaG27Df9AskFdCCR0
k+zBNVqQUCVSbJHTwn/hQ/eaQk2DQoGZEfYptGaKaTulhwA17WvmDKdkR2rJrtGk
6KD54eM3x6spwmk0bNf52d7ATOVqKOTUFZkFjuH7TYM8Mq1QiyUjQK8U7yJz3C8g
7vc5UB8grPTMHKcmmHD1OUfldVSkHOkpWsPPCE7MQIKE8/Pd+Mw+yEJu2RjTTk4i
7/buVacrwTZs6HZc8WXXQMA=
-----END PRIVATE KEY-----
+18 -18
View File
@@ -1,27 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEiTCCAvGgAwIBAgIRAIudq+AfKl856muWz/i3yLkwDQYJKoZIhvcNAQELBQAw
MIIEiTCCAvGgAwIBAgIRAMa57BhiUa7ds8bjquZeuGwwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTIyMTIxMDA3MTgwNVoXDTI1MDMxMDA3MTgwNVowXjEnMCUGA1UEChMe
a28pMB4XDTI1MDQyNDA2Mjg1NVoXDTI3MDcyNDA2Mjg1NVowXjEnMCUGA1UEChMe
bWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTMwMQYDVQQLDCphbGVrc2lA
UHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCv9ohL1csSCSPGrQrXhcBrsuQH5w9OskV68cpn
8E49cofnAeGN462G5Fk98GRfBNLXQOwBXA4KpzjQDWLpWRSnNXjuSa9Y+uti7JCa
SEVS668euY891vFT2IQyf9ZPr5DYp/t6VPz6UeslrCYFxMI9z/o1ucl/h7Ti+iRV
pbbaeO6K5kR9/XMC/0kDFS1ORmdC25gFDENpje60dM04MEzJmJECTZCoQ5iSz+bL
aOt0LmxIgrCN7yH/kjpC64PXWwrUIylMYq/AmnojD0S3RKwRMlNGJOWers5ExYix
DWZ83BGZiZCJqLxExl7vyiz2D84xdNbWWXJBjQF1l2ye7/tZAgMBAAGjgY0wgYow
DQEBAQUAA4IBDwAwggEKAoIBAQDBYwQjUTxzptQQJQl5bSSkK8bCA6wAnuzk3lOi
h0Szk463wSsPpDWPf/NgxsB3HP2ANUtGCdCcKxCmcCJMA8+nZuvJSTdGeYMYF8Ca
eBGRyQK1ifucZp9o0F+oK02cx36v/BzjhCEyn20IZ4LBcC6dBalox8/iUcZHQpRm
Rejo07KrLSws8w/T21Lk7GURnHWZej+dicukxZlEZ/fDiYwQC0z0JJaG/+3OQG1p
gRqYD6Dn/lnB8DvMZfW+EV/zyjT292WgHr9NQ+Yb/99oPLUDL7QcEqQ0yETGTx2i
jVlN8A3DM0gwlWD7TYXorc6bTQeDiG6vJk+I11Q25TvoE0AtAgMBAAGjgY0wgYow
DgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaA
FKrDcJcU9cWHA3BoHNr90+chUt2qMEIGA1UdEQQ7MDmCCWxvY2FsaG9zdIIUaG9z
FEx8XjlxjR2LO/Iwv+TTwqYQQ+GSMEIGA1UdEQQ7MDmCCWxvY2FsaG9zdIIUaG9z
dC5kb2NrZXIuaW50ZXJuYWyHBH8AAAGHEAAAAAAAAAAAAAAAAAAAAAEwDQYJKoZI
hvcNAQELBQADggGBAFRfs4mj3CnK43sdCUd30K6ILhTIii2Mjb+olCUmOrR3Gka6
J3LLEOdvanFpHDpx3wcxHe6YKuBpDAqTkwB/4LuOA0hHyLsV3O+U+QMgNuTvpAWq
BgB0xs02mXIvcIYmTOI100Nh9SYULNuohZo4Jtw9+noLMc3xIKlEUCKqDjEu26mp
N9hKkFd4Qf8hs0j4UFNFfZC7qOzTyX1XGd0roGlNFc9Pm/bjo2hW1PgI3wa72Cux
FXul8NoKUyBYZ0xnUjeXc5akfpxl7cywqOorKXRk2xikr388R5fuAoeBnQK/unr5
AUOuAVG0zfLheRed46Op5cF7KJmc66OgPFYcgMAdYIwiy+LXZcXmCCuVU+t0WX4S
2zJ52HcfOHp+ius0FJwYgZ0G0SiVnj0tbxqLj1kBRK3qyyIEWaTdXTjYeotWbDzh
0BrtGxzft7ploi2CfpSh1vPhTWWoAvtr4I/sHmV91yDLY3PUU/ywoCCk2JCWmBvh
8ytaa2MFPzdWI6t9Bw==
hvcNAQELBQADggGBAMOYUQen1PpG34YcmdSNIO62/GFSNR0CID8R+1lvqZFyiaeA
HTUhDfWVopY8KuqzgXgXE2nAxLf6WSa0kIJOUIE7eLU5zMBW/rLcoa6UxhT2nXjh
gd7d2PPLSXE/ZBMkoXeQVuZVImywT7haNI0tee3ariIbXeaiaLP6NBlnFva50Tkn
qKeQpV5UPDQcEvChDtWSvsPkb9yp1CcavBEEJ8XZwgIbV4qKB0z2Q812wsPadpXE
VLy8KwYhjxBVJyAEH3qpiZH5N+nTnQwu3slWCIck5cskpXGPBX+WIY4nS/4y+idX
EhnwowfDewWGum58sdUYdyUpdC7NTw4AoZ42y9PcgXu8/qhLr0N0n5/Slmlxe7oN
zOQfOZduv8oOLW0GuccqGEPwDManU995syDOmqZbBuBt590E2Pid3dwtr/0kyLax
SyAACTQi7Q0WUPfFj13jCqGU5z99Y6W7RudUg/+snCxiSvc+x/wphjmnGO73X9+p
uH5dRdyAeGHFw9e2kQ==
-----END CERTIFICATE-----
+26 -26
View File
@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCv9ohL1csSCSPG
rQrXhcBrsuQH5w9OskV68cpn8E49cofnAeGN462G5Fk98GRfBNLXQOwBXA4KpzjQ
DWLpWRSnNXjuSa9Y+uti7JCaSEVS668euY891vFT2IQyf9ZPr5DYp/t6VPz6Uesl
rCYFxMI9z/o1ucl/h7Ti+iRVpbbaeO6K5kR9/XMC/0kDFS1ORmdC25gFDENpje60
dM04MEzJmJECTZCoQ5iSz+bLaOt0LmxIgrCN7yH/kjpC64PXWwrUIylMYq/Amnoj
D0S3RKwRMlNGJOWers5ExYixDWZ83BGZiZCJqLxExl7vyiz2D84xdNbWWXJBjQF1
l2ye7/tZAgMBAAECggEBAKVMZds/moV12orfscim2A0UPwyBbarS41xMWYTshMNK
nQpQhQ+iqzeFuaPq+I8eW+ZkEZBxZqtxTXh8qsdkrHcrT1AiHjvrc0Y5ztlwPNdZ
mee2Dy7bhVbrlbxOxQeUePBeVWok/oU0gT6hihJvNL2Wa4ke34AS/sUekRV4F98A
nujWss06lvIv0RqivhFDuYBdGuteygcMyHjCwZj597KQAjoo+p5nvN3DJJ5C/bcq
dwmRSbKMmauv1tnMl9h8EsZUFM89x2xrCtXEzSzV6ZCe32TF7DimDGhNlCkiVnoC
Ohzz6eYZzEYfRQTMQT5s3jix24C8Wc6wOYyDGjdjQmUCgYEA1Y+Ju+mLYnhF6xKm
XOvMGgna16E33LVJessTY3gy1+MZtfvHm3Op+xkGmOAjoVXTk/za5yuDOZf5CR0/
slY1N/PolZ6/K++ObqIOBBYYt1jE1FX3sGM8tJEIwgq6UCItCxDWPxHOG+ZHRtvx
v+4A1v7/2PtaYOTiGMGmsbP5RxcCgYEA0u5KKO7fWZG6PSy/kD6LGx68t8nviCY4
POrG171jir7Rs00qi3PNpln2qzgcnkJdOxpKv/VfDcxZgb42kAVN4O/xeqti/k/4
YCUfXL2VmQE6T/slBkzhRAKpBLZOf49Awwh3JTutfeCL2MB9JiCHbzrObO5g3MgC
92L5I6C0Vw8CgYEAl95MV0o8qdjX99Q6ZEf2y+mIK+FlBVoSF/WEIy9eELJaHVUg
XIbDMWJZk6uJCvkqzcl5rfz+g510JqwbGOo/TDvygTvzvP3NbxVlHDjOeMvypQFB
c7kOeWXOMZdJaST0nTLq+Mzjoml+9IACibdp93o9XQNaAR+jPXGw5hwTQB8CgYBW
DmYvQRXawzvKjaEyRnIWhHnWOgsB7yXupJKvnlMoXiXME2WSM5LplbavsFrsroK/
BEEPBBrd1EuIRYSZSbC2Xu6Ub6wZuaLKBxs+iRKps/iIfRxj76XQS42NoJtyK43u
hFun0ys7OguUSSRGE+ttk/54LuFR8kBTkgu3X290PQKBgF8s/Fx3akNCpgjG8at3
U+Edmb3wLVckAiYIDHksnreowdJB4yR/05QDbgGYTrRhppEMuHmsN1geYfQmNa3b
GAlSvv4H5YK4QrUUJZTcBXBFneMdZK67bohfbRkQIwSm5u0xLDUVoD3UhSz26Pu3
b1anKvC576arrZ8pewyW2kp1
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBYwQjUTxzptQQ
JQl5bSSkK8bCA6wAnuzk3lOih0Szk463wSsPpDWPf/NgxsB3HP2ANUtGCdCcKxCm
cCJMA8+nZuvJSTdGeYMYF8CaeBGRyQK1ifucZp9o0F+oK02cx36v/BzjhCEyn20I
Z4LBcC6dBalox8/iUcZHQpRmRejo07KrLSws8w/T21Lk7GURnHWZej+dicukxZlE
Z/fDiYwQC0z0JJaG/+3OQG1pgRqYD6Dn/lnB8DvMZfW+EV/zyjT292WgHr9NQ+Yb
/99oPLUDL7QcEqQ0yETGTx2ijVlN8A3DM0gwlWD7TYXorc6bTQeDiG6vJk+I11Q2
5TvoE0AtAgMBAAECggEBAJWdVGM6g0l6hVBkRxsxbIqy75fEnXrxeZdrxkrU2jsQ
avcRNI5qXaHCvPlfayH8RMe+85ihGUrpKn2J/Y7P2ATMZJka0u/sLJckMTeQsw8V
88mdkhMjdiryIz+JGQe1c/cVVwhSfhibLRC2fHvJndaPvcw54kRXPc593S/u4E3X
uc5pyoPkiyon4AzQ3piVTRrdtQRyyT1UDJ+lRyTBLuWcM50H4O50VliIrk2HVxGA
dfL8tnYOGnW7l12xCa6OoT03/qOBS1yPd8vXFAmnbEzbzvAEIDXC0GXQ5CPHOsFu
ZnviDmjt2I/OSygBqnaxCuE0cMgIvI7zf2ie43Onu4UCgYEA0STl3mC80lSg8Ddo
qGj+uPck3aOtUtI0ni94rM4YwgqDakm1aMDtVbivg3F9HLjDPxCe+iyQFOvjJ+uR
KEdp5zFmS3Sf9lB0PymCbeAicRJA6ku+9GxbYk9VNWkxrNozDn4iolio41xjZSZ4
iXHBh/s2xeZeGfW65/MOJMjvk/cCgYEA7LZh6ueBrBJkMf3imcmz7cfEkUyzioyM
3Gz8JMNINPsb8QTYLaAog0m7eQ6FVZB0lIQV9V+pTzbhCxSbAryL7aOr7vKmFlgb
tB5YqsdYHGftZAqwJzFNorAA2Yh5Z5H1+xAB3i4uB4lHwIC1Sl79vor7tccvGFPK
hWX8Mz82+/sCgYAmI3NjpQJp3JLom0ITi+n/ctofLMzbkIeV3RRFduPe5qnmRQC2
1I+zFRW0g4qMJUk9g9tpxZyUpBttWTDERpmSVljQI7lT4oIATqKBROEi+3ApCZ0N
14Cmoc7pCYDMg5HR78CDGGXb6Cob9PMAJWVkVbQ8THEWjNADojgPDzFZKwKBgGGN
tIL7z9wbZEGaEUYx8z4+gwsioieqTu8U10FLXbm/9z74MSN0it24iFOWoWqm8vS2
DtqmBv/HbS2E23FgRQa12kjKpZo1y40KqJ4RM4XZauM86GXuksFGacM81FPTup0y
dqKbQ4sFj5WNNamlxks9ugirQwRym9coNazlE4L7AoGBAMaeWaVaRbFu+jgscPud
k5J27o9zH8CS+xngOYEjGFpdR/52ZMhpQOrtFJX0mCOi9vpAQ5Ro0kk1HMPH0mGU
5b75OUy6SBfnYR7mw7imc85bP+lQoe8kmb+wrIJMYx9RGGbDatDFbxCEasqNzvFf
VQXTnh0brizumpbOfHlZXced
-----END PRIVATE KEY-----
+44 -44
View File
@@ -1,55 +1,55 @@
-----BEGIN CERTIFICATE-----
MIIEiTCCAvGgAwIBAgIRAIudq+AfKl856muWz/i3yLkwDQYJKoZIhvcNAQELBQAw
MIIEiTCCAvGgAwIBAgIRAMa57BhiUa7ds8bjquZeuGwwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTIyMTIxMDA3MTgwNVoXDTI1MDMxMDA3MTgwNVowXjEnMCUGA1UEChMe
a28pMB4XDTI1MDQyNDA2Mjg1NVoXDTI3MDcyNDA2Mjg1NVowXjEnMCUGA1UEChMe
bWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTMwMQYDVQQLDCphbGVrc2lA
UHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCv9ohL1csSCSPGrQrXhcBrsuQH5w9OskV68cpn
8E49cofnAeGN462G5Fk98GRfBNLXQOwBXA4KpzjQDWLpWRSnNXjuSa9Y+uti7JCa
SEVS668euY891vFT2IQyf9ZPr5DYp/t6VPz6UeslrCYFxMI9z/o1ucl/h7Ti+iRV
pbbaeO6K5kR9/XMC/0kDFS1ORmdC25gFDENpje60dM04MEzJmJECTZCoQ5iSz+bL
aOt0LmxIgrCN7yH/kjpC64PXWwrUIylMYq/AmnojD0S3RKwRMlNGJOWers5ExYix
DWZ83BGZiZCJqLxExl7vyiz2D84xdNbWWXJBjQF1l2ye7/tZAgMBAAGjgY0wgYow
DQEBAQUAA4IBDwAwggEKAoIBAQDBYwQjUTxzptQQJQl5bSSkK8bCA6wAnuzk3lOi
h0Szk463wSsPpDWPf/NgxsB3HP2ANUtGCdCcKxCmcCJMA8+nZuvJSTdGeYMYF8Ca
eBGRyQK1ifucZp9o0F+oK02cx36v/BzjhCEyn20IZ4LBcC6dBalox8/iUcZHQpRm
Rejo07KrLSws8w/T21Lk7GURnHWZej+dicukxZlEZ/fDiYwQC0z0JJaG/+3OQG1p
gRqYD6Dn/lnB8DvMZfW+EV/zyjT292WgHr9NQ+Yb/99oPLUDL7QcEqQ0yETGTx2i
jVlN8A3DM0gwlWD7TYXorc6bTQeDiG6vJk+I11Q25TvoE0AtAgMBAAGjgY0wgYow
DgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaA
FKrDcJcU9cWHA3BoHNr90+chUt2qMEIGA1UdEQQ7MDmCCWxvY2FsaG9zdIIUaG9z
FEx8XjlxjR2LO/Iwv+TTwqYQQ+GSMEIGA1UdEQQ7MDmCCWxvY2FsaG9zdIIUaG9z
dC5kb2NrZXIuaW50ZXJuYWyHBH8AAAGHEAAAAAAAAAAAAAAAAAAAAAEwDQYJKoZI
hvcNAQELBQADggGBAFRfs4mj3CnK43sdCUd30K6ILhTIii2Mjb+olCUmOrR3Gka6
J3LLEOdvanFpHDpx3wcxHe6YKuBpDAqTkwB/4LuOA0hHyLsV3O+U+QMgNuTvpAWq
BgB0xs02mXIvcIYmTOI100Nh9SYULNuohZo4Jtw9+noLMc3xIKlEUCKqDjEu26mp
N9hKkFd4Qf8hs0j4UFNFfZC7qOzTyX1XGd0roGlNFc9Pm/bjo2hW1PgI3wa72Cux
FXul8NoKUyBYZ0xnUjeXc5akfpxl7cywqOorKXRk2xikr388R5fuAoeBnQK/unr5
AUOuAVG0zfLheRed46Op5cF7KJmc66OgPFYcgMAdYIwiy+LXZcXmCCuVU+t0WX4S
2zJ52HcfOHp+ius0FJwYgZ0G0SiVnj0tbxqLj1kBRK3qyyIEWaTdXTjYeotWbDzh
0BrtGxzft7ploi2CfpSh1vPhTWWoAvtr4I/sHmV91yDLY3PUU/ywoCCk2JCWmBvh
8ytaa2MFPzdWI6t9Bw==
hvcNAQELBQADggGBAMOYUQen1PpG34YcmdSNIO62/GFSNR0CID8R+1lvqZFyiaeA
HTUhDfWVopY8KuqzgXgXE2nAxLf6WSa0kIJOUIE7eLU5zMBW/rLcoa6UxhT2nXjh
gd7d2PPLSXE/ZBMkoXeQVuZVImywT7haNI0tee3ariIbXeaiaLP6NBlnFva50Tkn
qKeQpV5UPDQcEvChDtWSvsPkb9yp1CcavBEEJ8XZwgIbV4qKB0z2Q812wsPadpXE
VLy8KwYhjxBVJyAEH3qpiZH5N+nTnQwu3slWCIck5cskpXGPBX+WIY4nS/4y+idX
EhnwowfDewWGum58sdUYdyUpdC7NTw4AoZ42y9PcgXu8/qhLr0N0n5/Slmlxe7oN
zOQfOZduv8oOLW0GuccqGEPwDManU995syDOmqZbBuBt590E2Pid3dwtr/0kyLax
SyAACTQi7Q0WUPfFj13jCqGU5z99Y6W7RudUg/+snCxiSvc+x/wphjmnGO73X9+p
uH5dRdyAeGHFw9e2kQ==
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCv9ohL1csSCSPG
rQrXhcBrsuQH5w9OskV68cpn8E49cofnAeGN462G5Fk98GRfBNLXQOwBXA4KpzjQ
DWLpWRSnNXjuSa9Y+uti7JCaSEVS668euY891vFT2IQyf9ZPr5DYp/t6VPz6Uesl
rCYFxMI9z/o1ucl/h7Ti+iRVpbbaeO6K5kR9/XMC/0kDFS1ORmdC25gFDENpje60
dM04MEzJmJECTZCoQ5iSz+bLaOt0LmxIgrCN7yH/kjpC64PXWwrUIylMYq/Amnoj
D0S3RKwRMlNGJOWers5ExYixDWZ83BGZiZCJqLxExl7vyiz2D84xdNbWWXJBjQF1
l2ye7/tZAgMBAAECggEBAKVMZds/moV12orfscim2A0UPwyBbarS41xMWYTshMNK
nQpQhQ+iqzeFuaPq+I8eW+ZkEZBxZqtxTXh8qsdkrHcrT1AiHjvrc0Y5ztlwPNdZ
mee2Dy7bhVbrlbxOxQeUePBeVWok/oU0gT6hihJvNL2Wa4ke34AS/sUekRV4F98A
nujWss06lvIv0RqivhFDuYBdGuteygcMyHjCwZj597KQAjoo+p5nvN3DJJ5C/bcq
dwmRSbKMmauv1tnMl9h8EsZUFM89x2xrCtXEzSzV6ZCe32TF7DimDGhNlCkiVnoC
Ohzz6eYZzEYfRQTMQT5s3jix24C8Wc6wOYyDGjdjQmUCgYEA1Y+Ju+mLYnhF6xKm
XOvMGgna16E33LVJessTY3gy1+MZtfvHm3Op+xkGmOAjoVXTk/za5yuDOZf5CR0/
slY1N/PolZ6/K++ObqIOBBYYt1jE1FX3sGM8tJEIwgq6UCItCxDWPxHOG+ZHRtvx
v+4A1v7/2PtaYOTiGMGmsbP5RxcCgYEA0u5KKO7fWZG6PSy/kD6LGx68t8nviCY4
POrG171jir7Rs00qi3PNpln2qzgcnkJdOxpKv/VfDcxZgb42kAVN4O/xeqti/k/4
YCUfXL2VmQE6T/slBkzhRAKpBLZOf49Awwh3JTutfeCL2MB9JiCHbzrObO5g3MgC
92L5I6C0Vw8CgYEAl95MV0o8qdjX99Q6ZEf2y+mIK+FlBVoSF/WEIy9eELJaHVUg
XIbDMWJZk6uJCvkqzcl5rfz+g510JqwbGOo/TDvygTvzvP3NbxVlHDjOeMvypQFB
c7kOeWXOMZdJaST0nTLq+Mzjoml+9IACibdp93o9XQNaAR+jPXGw5hwTQB8CgYBW
DmYvQRXawzvKjaEyRnIWhHnWOgsB7yXupJKvnlMoXiXME2WSM5LplbavsFrsroK/
BEEPBBrd1EuIRYSZSbC2Xu6Ub6wZuaLKBxs+iRKps/iIfRxj76XQS42NoJtyK43u
hFun0ys7OguUSSRGE+ttk/54LuFR8kBTkgu3X290PQKBgF8s/Fx3akNCpgjG8at3
U+Edmb3wLVckAiYIDHksnreowdJB4yR/05QDbgGYTrRhppEMuHmsN1geYfQmNa3b
GAlSvv4H5YK4QrUUJZTcBXBFneMdZK67bohfbRkQIwSm5u0xLDUVoD3UhSz26Pu3
b1anKvC576arrZ8pewyW2kp1
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBYwQjUTxzptQQ
JQl5bSSkK8bCA6wAnuzk3lOih0Szk463wSsPpDWPf/NgxsB3HP2ANUtGCdCcKxCm
cCJMA8+nZuvJSTdGeYMYF8CaeBGRyQK1ifucZp9o0F+oK02cx36v/BzjhCEyn20I
Z4LBcC6dBalox8/iUcZHQpRmRejo07KrLSws8w/T21Lk7GURnHWZej+dicukxZlE
Z/fDiYwQC0z0JJaG/+3OQG1pgRqYD6Dn/lnB8DvMZfW+EV/zyjT292WgHr9NQ+Yb
/99oPLUDL7QcEqQ0yETGTx2ijVlN8A3DM0gwlWD7TYXorc6bTQeDiG6vJk+I11Q2
5TvoE0AtAgMBAAECggEBAJWdVGM6g0l6hVBkRxsxbIqy75fEnXrxeZdrxkrU2jsQ
avcRNI5qXaHCvPlfayH8RMe+85ihGUrpKn2J/Y7P2ATMZJka0u/sLJckMTeQsw8V
88mdkhMjdiryIz+JGQe1c/cVVwhSfhibLRC2fHvJndaPvcw54kRXPc593S/u4E3X
uc5pyoPkiyon4AzQ3piVTRrdtQRyyT1UDJ+lRyTBLuWcM50H4O50VliIrk2HVxGA
dfL8tnYOGnW7l12xCa6OoT03/qOBS1yPd8vXFAmnbEzbzvAEIDXC0GXQ5CPHOsFu
ZnviDmjt2I/OSygBqnaxCuE0cMgIvI7zf2ie43Onu4UCgYEA0STl3mC80lSg8Ddo
qGj+uPck3aOtUtI0ni94rM4YwgqDakm1aMDtVbivg3F9HLjDPxCe+iyQFOvjJ+uR
KEdp5zFmS3Sf9lB0PymCbeAicRJA6ku+9GxbYk9VNWkxrNozDn4iolio41xjZSZ4
iXHBh/s2xeZeGfW65/MOJMjvk/cCgYEA7LZh6ueBrBJkMf3imcmz7cfEkUyzioyM
3Gz8JMNINPsb8QTYLaAog0m7eQ6FVZB0lIQV9V+pTzbhCxSbAryL7aOr7vKmFlgb
tB5YqsdYHGftZAqwJzFNorAA2Yh5Z5H1+xAB3i4uB4lHwIC1Sl79vor7tccvGFPK
hWX8Mz82+/sCgYAmI3NjpQJp3JLom0ITi+n/ctofLMzbkIeV3RRFduPe5qnmRQC2
1I+zFRW0g4qMJUk9g9tpxZyUpBttWTDERpmSVljQI7lT4oIATqKBROEi+3ApCZ0N
14Cmoc7pCYDMg5HR78CDGGXb6Cob9PMAJWVkVbQ8THEWjNADojgPDzFZKwKBgGGN
tIL7z9wbZEGaEUYx8z4+gwsioieqTu8U10FLXbm/9z74MSN0it24iFOWoWqm8vS2
DtqmBv/HbS2E23FgRQa12kjKpZo1y40KqJ4RM4XZauM86GXuksFGacM81FPTup0y
dqKbQ4sFj5WNNamlxks9ugirQwRym9coNazlE4L7AoGBAMaeWaVaRbFu+jgscPud
k5J27o9zH8CS+xngOYEjGFpdR/52ZMhpQOrtFJX0mCOi9vpAQ5Ro0kk1HMPH0mGU
5b75OUy6SBfnYR7mw7imc85bP+lQoe8kmb+wrIJMYx9RGGbDatDFbxCEasqNzvFf
VQXTnh0brizumpbOfHlZXced
-----END PRIVATE KEY-----
+1 -1
View File
@@ -1,4 +1,4 @@
# What's this?
This directory is a workaround for the lack of support for Docker Compose in Dependabot.
See <https://github.com/dependabot/dependabot-core/issues/390#issuecomment-1062170379>.
See https://github.com/dependabot/dependabot-core/issues/390#issuecomment-1062170379.
+1 -1
View File
@@ -1 +1 @@
FROM ghcr.io/ferretdb/docusaurus-docs:2.4.1-1
FROM ghcr.io/ferretdb/docusaurus-docs:3.7.0-4
+1 -1
View File
@@ -1 +1 @@
FROM ghcr.io/ferretdb/ferretdb-prettier:2.8.8-1
FROM ghcr.io/ferretdb/ferretdb-prettier:3.6.2-1
+1 -1
View File
@@ -1 +1 @@
FROM ghcr.io/ferretdb/ferretdb-textlint:13.3.2-4
FROM ghcr.io/ferretdb/ferretdb-textlint:15.2.0-1
+1 -1
View File
@@ -1 +1 @@
FROM ghcr.io/ferretdb/ferretdb-wrangler:3.0.1-1
FROM ghcr.io/ferretdb/ferretdb-wrangler:4.24.0-1
+1 -1
View File
@@ -1 +1 @@
FROM jaegertracing/all-in-one:1.45.0
FROM jaegertracing/all-in-one:1.74.0
+2 -1
View File
@@ -1 +1,2 @@
FROM ghcr.io/ferretdb/legacy-mongo-shell:6.0.5-1
# TODO https://github.com/FerretDB/FerretDB/issues/5073
FROM ghcr.io/ferretdb/legacy-mongo-shell:7.0.8-1
+1 -3
View File
@@ -1,3 +1 @@
FROM davidanson/markdownlint-cli2:v0.7.1
ENTRYPOINT [ "markdownlint-cli2-config" ]
FROM davidanson/markdownlint-cli2:v0.18.1
-1
View File
@@ -1 +0,0 @@
FROM mongo:6.0.5
+16
View File
@@ -0,0 +1,16 @@
# syntax=docker/dockerfile:1
# TODO https://github.com/FerretDB/FerretDB/issues/5073
FROM mongo:7.0.8
# If you encounter an "unknown instruction" error there,
# please update Docker to the latest version.
# see https://github.com/docker-library/mongo/issues/475
RUN <<EOF
set -ex
echo 'topsecret' > /etc/mongod_keyfile.txt
chmod 0400 /etc/mongod_keyfile.txt
chown 999:999 /etc/mongod_keyfile.txt
EOF
@@ -0,0 +1,5 @@
# Use development image and full tag close to the release.
FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-0.107.0-ferretdb-2.7.0
# Use moving development image during development.
# FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-ferretdb
-1
View File
@@ -1 +0,0 @@
FROM postgres:15.3
-1
View File
@@ -1 +0,0 @@
FROM tigrisdata/tigris-local:1.0.0-beta.51
-1
View File
@@ -1 +0,0 @@
FROM tigrisdata/tigris-local:main
+1 -1
View File
@@ -1,2 +1,2 @@
FROM aquasec/trivy:0.41.0
FROM aquasec/trivy:0.67.2
WORKDIR /workdir
-1
View File
@@ -1 +0,0 @@
FROM redhat/ubi9-minimal:9.2
-1
View File
@@ -1 +0,0 @@
FROM ubuntu:22.04
+1
View File
@@ -0,0 +1 @@
FROM yugabytedb/yugabyte:2025.1.1.0-b197
-134
View File
@@ -1,134 +0,0 @@
# syntax=docker/dockerfile:1
# for all-in-one releases (`all-in-one` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# build stage
FROM ghcr.io/ferretdb/golang:1.20.4-1 AS all-in-one-build
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
ARG TARGETARCH
# see .dockerignore
WORKDIR /src
COPY . .
# use a single directory for all Go caches to simpliy RUN --mount commands below
ENV GOPATH /cache/gopath
ENV GOCACHE /cache/gocache
ENV GOMODCACHE /cache/gomodcache
# copy cached stdlib builds from the image
RUN --mount=type=cache,target=/cache \
rsync -a /root/.cache/go-build/ /cache/gocache
# remove ",direct"
ENV GOPROXY https://proxy.golang.org
ENV CGO_ENABLED=1
ENV GOCOVERDIR=cover
ENV GORACE=halt_on_error=1,history_size=2
ENV GOARM=7
# do not raise it without providing a v1 build because v2+ is problematic
# for some virtualization platforms and older hardware
ENV GOAMD64=v1
# TODO https://github.com/FerretDB/FerretDB/issues/2170
# That command could be run only once by using a separate stage;
# see https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/
RUN --mount=type=cache,target=/cache \
go mod download
# Do not trim paths to make debugging with delve easier.
#
# Disable race detector on arm64 due to https://github.com/golang/go/issues/29948
# (and that happens on GitHub-hosted Actions runners).
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
RACE=false
if test "$TARGETARCH" = "amd64"
then
RACE=true
fi
# check that stdlib was cached
go install -v -race=$RACE std
go build -v -o=bin/ferretdb -race=$RACE -tags=ferretdb_testcover,ferretdb_tigris ./cmd/ferretdb
go test -c -coverpkg=./... -o=bin/ferretdb -race=$RACE -tags=ferretdb_testcover,ferretdb_tigris ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# final stage
FROM postgres:15.3 AS all-in-one
ARG LABEL_VERSION
ARG LABEL_COMMIT
COPY --from=all-in-one-build /src/bin/ferretdb /ferretdb
# all-in-one hacks start there
COPY --from=all-in-one-build /src/build/docker/all-in-one/ferretdb.sh /etc/service/ferretdb/run
COPY --from=all-in-one-build /src/build/docker/all-in-one/postgresql.sh /etc/service/postgresql/run
COPY --from=all-in-one-build /src/build/docker/all-in-one/entrypoint.sh /entrypoint.sh
RUN <<EOF
set -ex
apt update
apt install -y curl runit
curl -L https://www.mongodb.org/static/pgp/server-6.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list
apt update
apt install -y mongodb-mongosh
EOF
ENV FERRETDB_POSTGRESQL_URL=postgres://username:password@127.0.0.1:5432/ferretdb
ENV POSTGRES_USER=username
ENV POSTGRES_PASSWORD=password
ENV POSTGRES_DB=ferretdb
STOPSIGNAL SIGHUP
WORKDIR /
ENTRYPOINT [ "/entrypoint.sh" ]
EXPOSE 27017
# all-in-one hacks stop there
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8080
ENV FERRETDB_STATE_DIR=/state
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB"
LABEL org.opencontainers.image.url="https://ferretdb.io/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash
set -ex
exec /usr/bin/runsvdir /etc/service
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash
set -ex
exec /ferretdb
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash
set -ex
exec /usr/local/bin/docker-entrypoint.sh postgres
-108
View File
@@ -1,108 +0,0 @@
# syntax=docker/dockerfile:1
# for development releases (`ferret-dev` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# build stage
FROM ghcr.io/ferretdb/golang:1.20.4-1 AS development-build
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
ARG TARGETARCH
# see .dockerignore
WORKDIR /src
COPY . .
# use a single directory for all Go caches to simpliy RUN --mount commands below
ENV GOPATH /cache/gopath
ENV GOCACHE /cache/gocache
ENV GOMODCACHE /cache/gomodcache
# copy cached stdlib builds from the image
RUN --mount=type=cache,target=/cache \
rsync -a /root/.cache/go-build/ /cache/gocache
# remove ",direct"
ENV GOPROXY https://proxy.golang.org
ENV CGO_ENABLED=1
ENV GOCOVERDIR=cover
ENV GORACE=halt_on_error=1,history_size=2
ENV GOARM=7
# do not raise it without providing a v1 build because v2+ is problematic
# for some virtualization platforms and older hardware
ENV GOAMD64=v1
# TODO https://github.com/FerretDB/FerretDB/issues/2170
# That command could be run only once by using a separate stage;
# see https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/
RUN --mount=type=cache,target=/cache \
go mod download
# Do not trim paths to make debugging with delve easier.
#
# Disable race detector on arm64 due to https://github.com/golang/go/issues/29948
# (and that happens on GitHub-hosted Actions runners).
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
RACE=false
if test "$TARGETARCH" = "amd64"
then
RACE=true
fi
# check that stdlib was cached
go install -v -race=$RACE std
go build -v -o=bin/ferretdb -race=$RACE -tags=ferretdb_testcover,ferretdb_tigris ./cmd/ferretdb
go test -c -coverpkg=./... -o=bin/ferretdb -race=$RACE -tags=ferretdb_testcover,ferretdb_tigris ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# final stage
FROM golang:1.20.4 AS development
ARG LABEL_VERSION
ARG LABEL_COMMIT
COPY --from=development-build /src/bin/ferretdb /ferretdb
WORKDIR /
ENTRYPOINT [ "/ferretdb" ]
EXPOSE 27017 27018 8080
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8080
ENV FERRETDB_STATE_DIR=/state
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB"
LABEL org.opencontainers.image.url="https://ferretdb.io/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
-95
View File
@@ -1,95 +0,0 @@
# syntax=docker/dockerfile:1
# for production releases (`ferret` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# build stage
FROM ghcr.io/ferretdb/golang:1.20.4-1 AS production-build
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# see .dockerignore
WORKDIR /src
COPY . .
# use a single directory for all Go caches to simpliy RUN --mount commands below
ENV GOPATH /cache/gopath
ENV GOCACHE /cache/gocache
ENV GOMODCACHE /cache/gomodcache
# copy cached stdlib builds from the image
RUN --mount=type=cache,target=/cache \
rsync -a /root/.cache/go-build/ /cache/gocache
# remove ",direct"
ENV GOPROXY https://proxy.golang.org
ENV CGO_ENABLED=0
ENV GOARM=7
# do not raise it without providing a v1 build because v2+ is problematic
# for some virtualization platforms and older hardware
ENV GOAMD64=v1
# TODO https://github.com/FerretDB/FerretDB/issues/2170
# That command could be run only once by using a separate stage;
# see https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/
RUN --mount=type=cache,target=/cache \
go mod download
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# check that stdlib was cached
go install -v -race=false std
go build -v -o=bin/ferretdb -race=false -tags=ferretdb_tigris ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# final stage
# TODO https://github.com/FerretDB/FerretDB/issues/2179
# Consider a different base image after https://github.com/golang/go/issues/57792 is done.
FROM gcr.io/distroless/static-debian11:debug AS production
ARG LABEL_VERSION
ARG LABEL_COMMIT
COPY --from=production-build /src/bin/ferretdb /ferretdb
WORKDIR /
ENTRYPOINT [ "/ferretdb" ]
EXPOSE 27017 27018 8080
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8080
ENV FERRETDB_STATE_DIR=/state
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB"
LABEL org.opencontainers.image.url="https://ferretdb.io/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
+27
View File
@@ -0,0 +1,27 @@
# Use production image and full tag close to the release.
FROM --platform=linux/amd64 ghcr.io/ferretdb/postgres-documentdb:17-0.107.0-ferretdb-2.7.0
# Use moving development image during development.
# FROM --platform=linux/amd64 ghcr.io/ferretdb/postgres-documentdb-dev:17-ferretdb
RUN --mount=type=cache,target=/var/cache/apt <<EOF
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
curl -L https://pgp.mongodb.com/server-7.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list
apt update
apt install -y git-lfs mongodb-mongosh tmux nano
cd /tmp
curl -OJL https://go.dev/dl/go1.25.4.linux-amd64.tar.gz
tar -xf go1.25.4.linux-amd64.tar.gz
rm go1.25.4.linux-amd64.tar.gz
mv go /usr/local/
ln -s /usr/local/go/bin/* /usr/local/bin/
go version
EOF
WORKDIR /ferretdb/build/ferretdb-bw
+26
View File
@@ -0,0 +1,26 @@
all: ferretdb_loader ferretdb
ferretdb_loader:
$(MAKE) -C $@
ferretdb:
$(MAKE) -C $@
clean:
$(MAKE) -C ferretdb_loader clean
$(MAKE) -C ferretdb clean
install:
$(MAKE) -C ferretdb_loader install
$(MAKE) -C ferretdb install
docker:
docker buildx build --builder=ferretdb --tag=ferretdb-bw --load .
docker run --platform=linux/amd64 --name=ferretdb-bw --rm -it \
-e POSTGRES_USER=username -e POSTGRES_PASSWORD=password -e POSTGRES_DB=postgres \
-v $(shell pwd)/../..:/ferretdb ferretdb-bw /bin/bash
docker-exec:
docker exec -it ferretdb-bw /bin/bash
.PHONY: all ferretdb_loader ferretdb
+4
View File
@@ -0,0 +1,4 @@
# FerretDB as a PostgreSQL background worker
Not supported.
Do not use yet.
+21
View File
@@ -0,0 +1,21 @@
GO ?= $(shell which go)
PG_CONFIG ?= pg_config
PG_INCLUDE := $(shell $(PG_CONFIG) --includedir-server)
PG_PKGLIB := $(shell $(PG_CONFIG) --pkglibdir)
INSTALL_BIN = $(shell which install)
CGO_CFLAGS ?= "-I$(PG_INCLUDE) -Wno-implicit-function-declaration"
CGO_LDFLAGS ?= "-shared"
object = ferretdb.so
all: $(object)
$(object): ferretdb.go
CGO_CFLAGS=$(CGO_CFLAGS) CGO_LDFLAGS=$(CGO_LDFLAGS) $(GO) build -v -tags=ferretdb_bw -buildmode=c-shared -o $@ .
install: $(object)
$(INSTALL_BIN) -c -m 755 $(object) $(PG_PKGLIB)
clean:
rm -f $(object)
+77
View File
@@ -0,0 +1,77 @@
// Copyright 2021 FerretDB Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build ferretdb_bw
package main
/*
#include "postgres.h"
*/
import "C"
import (
"context"
"log"
"log/slog"
"os"
"github.com/FerretDB/FerretDB/v2/build/version"
"github.com/FerretDB/FerretDB/v2/ferretdb"
"github.com/FerretDB/FerretDB/v2/internal/util/ctxutil"
)
//export BackgroundWorkerMain
func BackgroundWorkerMain(args C.Datum) {
log.SetPrefix("ferretdb: ")
log.SetFlags(0)
ctx, stop := ctxutil.SigTerm(context.Background())
defer stop()
f, err := ferretdb.New(&ferretdb.Config{
// TODO https://github.com/FerretDB/FerretDB/issues/4771
PostgreSQLURL: "postgres://username:password@127.0.0.1:5432/postgres",
ListenAddr: "127.0.0.1:27017",
StateDir: ".",
LogLevel: slog.LevelDebug,
LogOutput: os.Stderr,
})
if err != nil {
log.Fatal(err)
}
version.Get().Package = "extension"
done := make(chan struct{})
// Use WaitLatch, ResetLatch, and WL_POSTMASTER_DEATH to check if `postmaster` process died and call stop().
// TODO https://github.com/FerretDB/FerretDB/issues/4771
go func() {
f.Run(ctx)
close(done)
}()
uri := f.MongoDBURI()
log.Printf("Running at %s", uri)
<-done
return
}
func main() {
panic("not reached")
}
+86
View File
@@ -0,0 +1,86 @@
/* Code generated by cmd/cgo; DO NOT EDIT. */
/* package github.com/FerretDB/FerretDB/v2/build/ferretdb-bw/ferretdb */
#line 1 "cgo-builtin-export-prolog"
#include <stddef.h>
#ifndef GO_CGO_EXPORT_PROLOGUE_H
#define GO_CGO_EXPORT_PROLOGUE_H
#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
#endif
#endif
/* Start of preamble from import "C" comments. */
#line 3 "ferretdb.go"
#include "postgres.h"
#line 1 "cgo-generated-wrapper"
/* End of preamble from import "C" comments. */
/* Start of boilerplate cgo prologue. */
#line 1 "cgo-gcc-export-header-prolog"
#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H
typedef signed char GoInt8;
typedef unsigned char GoUint8;
typedef short GoInt16;
typedef unsigned short GoUint16;
typedef int GoInt32;
typedef unsigned int GoUint32;
typedef long long GoInt64;
typedef unsigned long long GoUint64;
typedef GoInt64 GoInt;
typedef GoUint64 GoUint;
typedef size_t GoUintptr;
typedef float GoFloat32;
typedef double GoFloat64;
#ifdef _MSC_VER
#include <complex.h>
typedef _Fcomplex GoComplex64;
typedef _Dcomplex GoComplex128;
#else
typedef float _Complex GoComplex64;
typedef double _Complex GoComplex128;
#endif
/*
static assertion to make sure the file is being used on architecture
at least with matching size of GoInt.
*/
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef _GoString_ GoString;
#endif
typedef void *GoMap;
typedef void *GoChan;
typedef struct { void *t; void *v; } GoInterface;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
#endif
/* End of boilerplate cgo prologue. */
#ifdef __cplusplus
extern "C" {
#endif
extern void BackgroundWorkerMain(Datum args);
#ifdef __cplusplus
}
#endif
@@ -0,0 +1,4 @@
MODULES = ferretdb_loader
PG_CONFIG ?= pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
@@ -0,0 +1,53 @@
#include <dlfcn.h>
#include "postgres.h"
#include "pgstat.h"
#include "postmaster/bgworker.h"
#include "storage/ipc.h"
#include "storage/latch.h"
#include "storage/proc.h"
#include "miscadmin.h"
#include "utils/elog.h"
#include "fmgr.h"
PG_MODULE_MAGIC;
static char *ferretdb_so = "ferretdb.so";
PGDLLEXPORT void background_main(Datum main_arg);
void background_main(Datum main_arg)
{
bgworker_main_type f;
char *path;
void *h;
BackgroundWorkerUnblockSignals();
path = (char *)palloc(strlen(pkglib_path) + 1 + strlen(ferretdb_so) + 1);
join_path_components(path, pkglib_path, ferretdb_so);
elog(LOG, "ferretdb_loader: loading '%s'", path);
h = dlopen(path, RTLD_NOW | RTLD_GLOBAL);
pfree(path);
f = (bgworker_main_type)dlsym(h, "BackgroundWorkerMain");
f(main_arg);
dlclose(h);
proc_exit(0);
}
void _PG_init(void)
{
BackgroundWorker worker;
MemSet(&worker, 0, sizeof(BackgroundWorker));
snprintf(worker.bgw_name, BGW_MAXLEN, "FerretDBLoader");
worker.bgw_flags = BGWORKER_SHMEM_ACCESS;
worker.bgw_start_time = BgWorkerStart_RecoveryFinished;
worker.bgw_restart_time = BGW_NEVER_RESTART;
snprintf(worker.bgw_library_name, BGW_MAXLEN, "ferretdb_loader");
snprintf(worker.bgw_function_name, BGW_MAXLEN, "background_main");
RegisterBackgroundWorker(&worker);
}
+17
View File
@@ -0,0 +1,17 @@
[Unit]
Description=FerretDB Database
Documentation=https://docs.ferretdb.io/
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/ferretdb
Restart=on-failure
# Configure the FerretDB service with `systemctl edit ferretdb`.
# For more configuration options check https://docs.ferretdb.io/configuration/flags/
Environment="FERRETDB_POSTGRESQL_URL=postgres://127.0.0.1:5432/postgres"
[Install]
WantedBy=multi-user.target
+143
View File
@@ -0,0 +1,143 @@
# syntax=docker/dockerfile:1
# for development releases (`ferretdb-dev` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# prepare stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM --platform=$BUILDPLATFORM golang:1.25.4-bookworm AS development-prepare
# use a single directory for all Go caches to simplify RUN --mount commands below
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# remove ",direct"
ENV GOPROXY=https://proxy.golang.org
COPY go.mod go.sum /src/
WORKDIR /src
RUN --mount=type=cache,target=/cache <<EOF
set -ex
go mod download
go mod verify
EOF
# build stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS development-build
ARG TARGETARCH
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# use the same directories for Go caches as above
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# modules are already downloaded
ENV GOPROXY=off
# see .dockerignore
WORKDIR /src
COPY . .
# to add a dependency
COPY --from=development-prepare /src/go.mod /src/go.sum /src/
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# Do not raise without providing separate builds with those values
# because higher versions are problematic for some virtualization platforms and older hardware.
export GOAMD64=v1
export GOARM64=v8.0
export CGO_ENABLED=1
# Disable race detector on arm64 due to https://github.com/golang/go/issues/29948
# (and that happens on GitHub-hosted Actions runners).
RACE=false
if test "$TARGETARCH" = "amd64"
then
RACE=true
fi
go env
# Do not trim paths to make debugging with delve easier.
# check if stdlib was cached
go install -v -race=$RACE std
go build -v -o=bin/ferretdb -race=$RACE -tags=ferretdb_dev -coverpkg=./... ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# stage for binary only
FROM scratch AS development-binary
COPY --from=development-build /src/bin/ferretdb /ferretdb
# final stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS development
ENV GOCOVERDIR=/tmp/cover
ENV GORACE=halt_on_error=1,history_size=2
RUN mkdir /tmp/cover
COPY --from=development-build /src/bin/ferretdb /ferretdb
ENTRYPOINT [ "/ferretdb" ]
HEALTHCHECK --interval=1m --timeout=5s --retries=1 --start-period=30s --start-interval=5s \
CMD ["/ferretdb", "ping"]
WORKDIR /
VOLUME /state
EXPOSE 27017 27018 8088
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8088
ENV FERRETDB_STATE_DIR=/state
ARG LABEL_VERSION
ARG LABEL_COMMIT
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative (development image)"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB (development image)"
LABEL org.opencontainers.image.url="https://www.ferretdb.com/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
+149
View File
@@ -0,0 +1,149 @@
# syntax=docker/dockerfile:1
# evaluation image with development release (`ferretdb-eval-dev` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# prepare stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM --platform=$BUILDPLATFORM golang:1.25.4-bookworm AS eval-dev-prepare
# use a single directory for all Go caches to simplify RUN --mount commands below
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# remove ",direct"
ENV GOPROXY=https://proxy.golang.org
COPY go.mod go.sum /src/
WORKDIR /src
RUN --mount=type=cache,target=/cache <<EOF
set -ex
go mod download
go mod verify
EOF
# build stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS eval-dev-build
ARG TARGETARCH
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# use the same directories for Go caches as above
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# modules are already downloaded
ENV GOPROXY=off
# see .dockerignore
WORKDIR /src
COPY . .
# to add a dependency
COPY --from=eval-dev-prepare /src/go.mod /src/go.sum /src/
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# Do not raise without providing separate builds with those values
# because higher versions are problematic for some virtualization platforms and older hardware.
export GOAMD64=v1
export GOARM64=v8.0
export CGO_ENABLED=1
# Disable race detector on arm64 due to https://github.com/golang/go/issues/29948
# (and that happens on GitHub-hosted Actions runners).
RACE=false
if test "$TARGETARCH" = "amd64"
then
RACE=true
fi
go env
# Do not trim paths to make debugging with delve easier.
# check if stdlib was cached
go install -v -race=$RACE std
go build -v -o=bin/ferretdb -race=$RACE -tags=ferretdb_dev -coverpkg=./... ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# final stage
# Use development image and full tag close to the release.
FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-0.107.0-ferretdb-2.7.0 AS eval-dev
# Use moving development image during development.
# FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-ferretdb AS eval-dev
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt <<EOF
apt install -y curl supervisor
curl -L https://pgp.mongodb.com/server-7.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list
apt update
apt install -y mongodb-mongosh
mkdir /tmp/cover
EOF
COPY --from=eval-dev-build /src/bin/ferretdb /usr/local/bin/ferretdb
COPY --from=eval-dev-build /src/build/ferretdb/evaluation/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY --from=eval-dev-build /src/build/ferretdb/evaluation/entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
HEALTHCHECK --interval=1m --timeout=5s --retries=1 --start-period=30s --start-interval=5s \
CMD ["/usr/local/bin/ferretdb", "ping"]
VOLUME /state
EXPOSE 27017 27018 8088
ENV GOCOVERDIR=/tmp/cover
ENV GORACE=halt_on_error=1,history_size=2
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8088
ENV FERRETDB_STATE_DIR=/state
ARG LABEL_VERSION
ARG LABEL_COMMIT
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative (evaluation development image)"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB (evaluation development image)"
LABEL org.opencontainers.image.url="https://www.ferretdb.com/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
+136
View File
@@ -0,0 +1,136 @@
# syntax=docker/dockerfile:1
# evaluation image (formerly "all-in-one") with production release (`ferretdb-eval` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# prepare stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM --platform=$BUILDPLATFORM golang:1.25.4-bookworm AS eval-prepare
# use a single directory for all Go caches to simplify RUN --mount commands below
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# remove ",direct"
ENV GOPROXY=https://proxy.golang.org
COPY go.mod go.sum /src/
WORKDIR /src
RUN --mount=type=cache,target=/cache <<EOF
set -ex
go mod download
go mod verify
EOF
# build stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS eval-build
ARG TARGETARCH
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# use the same directories for Go caches as above
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# modules are already downloaded
ENV GOPROXY=off
# see .dockerignore
WORKDIR /src
COPY . .
# to add a dependency
COPY --from=eval-prepare /src/go.mod /src/go.sum /src/
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# Do not raise without providing separate builds with those values
# because higher versions are problematic for some virtualization platforms and older hardware.
export GOAMD64=v1
export GOARM64=v8.0
export CGO_ENABLED=0
go env
# Trim paths mostly to check that building with `-trimpath` is supported.
# check if stdlib was cached
go install -v -trimpath std
go build -v -trimpath -o=bin/ferretdb ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# final stage
# Use production image and full tag close to the release.
FROM ghcr.io/ferretdb/postgres-documentdb:17-0.107.0-ferretdb-2.7.0 AS eval
# Use moving development image during development.
# FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-ferretdb AS eval
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt <<EOF
apt install -y curl supervisor
curl -L https://pgp.mongodb.com/server-7.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list
apt update
apt install -y mongodb-mongosh
EOF
COPY --from=eval-build /src/bin/ferretdb /usr/local/bin/ferretdb
COPY --from=eval-build /src/build/ferretdb/evaluation/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY --from=eval-build /src/build/ferretdb/evaluation/entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
HEALTHCHECK --interval=1m --timeout=5s --retries=1 --start-period=30s --start-interval=5s \
CMD ["/usr/local/bin/ferretdb", "ping"]
VOLUME /state
EXPOSE 27017 27018 8088
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8088
ENV FERRETDB_STATE_DIR=/state
ARG LABEL_VERSION
ARG LABEL_COMMIT
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative (evaluation image)"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB (evaluation image)"
LABEL org.opencontainers.image.url="https://www.ferretdb.com/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
set -e
if [ -z "$POSTGRES_PASSWORD" ]; then
echo "Error: POSTGRES_PASSWORD must be set. See https://docs.ferretdb.io/installation/evaluation/"
exit 1
fi
if [ "${POSTGRES_DB:-postgres}" != "postgres" ]; then
echo "Error: POSTGRES_DB must be set to 'postgres' or unset. See https://docs.ferretdb.io/installation/evaluation/"
exit 1
fi
# prevent unset POSTGRES_DB using the value of POSTGRES_USER, see https://hub.docker.com/_/postgres
export POSTGRES_DB="postgres"
export FERRETDB_POSTGRESQL_URL="postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}"
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
@@ -0,0 +1,24 @@
; https://supervisord.org/configuration.html#supervisord-section-values
[supervisord]
nodaemon=true
loglevel=info
logfile=/dev/stderr
logfile_maxbytes=0
; https://supervisord.org/configuration.html#program-x-section-values
[program:postgres]
command=/usr/local/bin/docker-entrypoint.sh postgres
; lower priority postgres starts before ferretdb (default priority 999)
priority=1
; fast shutdown https://www.postgresql.org/docs/current/server-shutdown.html
stopsignal=INT
stdout_logfile=/dev/stderr
stdout_logfile_maxbytes=0
redirect_stderr=true
; https://supervisord.org/configuration.html#program-x-section-values
[program:ferretdb]
command=/usr/local/bin/ferretdb
stdout_logfile=/dev/stderr
stdout_logfile_maxbytes=0
redirect_stderr=true
+1
View File
@@ -0,0 +1 @@
ferretdb:x:1000:
+1
View File
@@ -0,0 +1 @@
ferretdb:x:1000:1000::/nonexistent:/nonexistent
+135
View File
@@ -0,0 +1,135 @@
# syntax=docker/dockerfile:1
# for production releases (`ferretdb` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# prepare stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM --platform=$BUILDPLATFORM golang:1.25.4-bookworm AS production-prepare
# use a single directory for all Go caches to simplify RUN --mount commands below
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# remove ",direct"
ENV GOPROXY=https://proxy.golang.org
COPY go.mod go.sum /src/
WORKDIR /src
RUN --mount=type=cache,target=/cache <<EOF
set -ex
go mod download
go mod verify
EOF
# build stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS production-build
ARG TARGETARCH
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# use the same directories for Go caches as above
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# modules are already downloaded
ENV GOPROXY=off
# see .dockerignore
WORKDIR /src
COPY . .
# to add a dependency
COPY --from=production-prepare /src/go.mod /src/go.sum /src/
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# Do not raise without providing separate builds with those values
# because higher versions are problematic for some virtualization platforms and older hardware.
export GOAMD64=v1
export GOARM64=v8.0
export CGO_ENABLED=0
go env
# Trim paths mostly to check that building with `-trimpath` is supported.
# check if stdlib was cached
go install -v -trimpath std
go build -v -trimpath -o=bin/ferretdb ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
mkdir /state
EOF
# stage for binary only
FROM scratch AS production-binary
COPY --from=production-build /src/bin/ferretdb /ferretdb
# final stage
FROM scratch AS production
COPY build/ferretdb/passwd /etc/passwd
COPY build/ferretdb/group /etc/group
USER ferretdb:ferretdb
COPY --from=production-build /src/bin/ferretdb /ferretdb
COPY --from=production-build --chown=ferretdb:ferretdb /state /state
ENTRYPOINT [ "/ferretdb" ]
HEALTHCHECK --interval=1m --timeout=5s --retries=1 --start-period=30s --start-interval=5s \
CMD ["/ferretdb", "ping"]
WORKDIR /
VOLUME /state
EXPOSE 27017 27018 8088
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8088
ENV FERRETDB_STATE_DIR=/state
ARG LABEL_VERSION
ARG LABEL_COMMIT
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB"
LABEL org.opencontainers.image.url="https://www.ferretdb.com/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
-28
View File
@@ -1,28 +0,0 @@
// Copy to test.js and run with `task testjs`.
(function() {
'use strict';
const coll = db.test;
coll.drop();
const init = [
{_id: 'double', v: 42.13},
{_id: 'double-whole', v: 42.0},
{_id: 'double-zero', v: 0.0},
];
coll.insertMany(init);
const query = {v: {$gt: 42.0}};
const expected = [
{_id: 'double', v: 42.13},
];
const actual = coll.find(query).toArray();
assert.eq(expected, actual);
print('test.js passed!');
})();
+24 -3
View File
@@ -1,7 +1,28 @@
// Please do not merge changes in this file.
(function() {
'use strict';
(function () {
"use strict";
print('test.js passed!');
// Update the following example with your test.
const coll = db.test;
coll.drop();
const init = [
{ _id: "double", v: 42.13 },
{ _id: "double-whole", v: 42.0 },
{ _id: "double-zero", v: 0.0 },
];
coll.insertMany(init);
const query = { v: { $gt: 42.0 } };
const expected = [{ _id: "double", v: 42.13 }];
const actual = coll.find(query).toArray();
assert.eq(expected, actual);
print("test.js passed!");
})();
+8
View File
@@ -0,0 +1,8 @@
{
"mcpServers": {
"FerretDB": {
"type": "remote",
"url": "http://127.0.0.1:8081/mcp"
}
}
}
-5
View File
@@ -1,5 +0,0 @@
net:
port: 27017
bindIpAll: true
tls:
mode: disabled
Loaded 100 of 1797 files, more files were not shown because too many files have changed in this diff. Show more