Stabilize dumpless upgrade - #6486
Conversation
c7a5fbd to
8c98526
Compare
|
do we want to fully remove the switch? I was thinking we would still like to keep an We'd remove the what do you think @Kerollmops |
Indeed, I don't think we want to remove the switch entirely and would prefer to keep it explicit that we want to upgrade the database to avoid locking someone into a newer version (rollback is not supported). I would prefer we keep the |
|
Hey, My favorite naming is
What do you think? |
dureuill
left a comment
There was a problem hiding this comment.
I find the "upgrade automatically" wording a bit confusing, so i suggested its removal.
Otherwise I'm all good with this 👍
Just wondering if we should allow both flags for a few versions to make switching from one flag to another easier 🤔
I think it's more work for a switch that the users will have to do at some point when upgrading, and it's experimental so ok to do this as long as the communication is clear on the changelogs |
Co-authored-by: Louis Dureuil <louis@meilisearch.com>
Co-authored-by: Louis Dureuil <louis@meilisearch.com>
Co-authored-by: Louis Dureuil <louis@meilisearch.com>
Co-authored-by: Louis Dureuil <louis@meilisearch.com>
4f263d8 to
c9b8479
Compare
c9b8479 to
1fd2fb8
Compare
dureuill
left a comment
There was a problem hiding this comment.
thank you,
waiting for the changes on Cloud, otherwise
|
https://github.com/meilisearch/meilisearch-cloud/pull/7735 is merged @dureuill , so I merge |
#446) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [getmeili/meilisearch](https://github.com/meilisearch/meilisearch) | minor | `v1.50.0` → `v1.51.0` | --- ### Release Notes <details> <summary>meilisearch/meilisearch (getmeili/meilisearch)</summary> ### [`v1.51.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.51.0): 👽 [Compare Source](meilisearch/meilisearch@v1.50.0...v1.51.0) ##### ✨ Enhancement - **Add filter condition to DSRs** by [@​dureuill](https://github.com/dureuill) in [#​6505](meilisearch/meilisearch#6505) ##### New `filter` rule activation condition ```` Dynamic search rules (DSR) can now declare a new `filter` condition: it contains a single `values` key, whose value is a JSON object. The keys of this `values` JSON object are the facet names (e.g., `color`, `genres`, ...), while their values are the values that a filter must resolve to for these facets, so that the rule is active. <details> <summary>Example of sending a DSR with a filter condition</summary> ```jsonc // PATCH /dynamic-search-rules/test-filter { "conditions": { "filter": { "values": { "color": "red", "category": "shirt" } } }, "actions": [ { "selector": { "id": "red shirt on sales" }, "action": { "type": "pin", "position": 0 } } ] } ``` </details> <details> <summary>Example of search query that enables the DSR above</summary> ```jsonc { "filter": "(category = shirt AND color = red) OR (category = jeans AND color = blue)" } ``` </details> Note that the filter only needs to have one branch resolving to all the facet values declared in the rule for the rule to be active. ```` ##### New `lastUpdatedAt` field ``` Dynamic search rules returned by `GET /dynamic-search-rules/{:ruleUid}` and `POST /dynamic-search-rules` contain an additional `lastUpdatedAt` field. This field is automatically updated with the `enqueuedAt` value of the last task that modified the rule. ``` ##### Rules are listed with the most recently updated first ``` `POST /dynamic-search-rules` now lists rules in descending `lastUpdatedAt` order, meaning that the most recently updated rules will be listed first. ``` ##### New environment variables ``` New environment variables are defined to control the behavior of the DSR fuel: - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_FUEL` (in range 0..4294967296): controls how many filter constraint combinations Meilisearch will attempt to resolve at search time before giving up and applying partial rules. - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_OR_FUEL` (in range 0..65536): controls how many filter disjunctions Meilisearch will build when turning a filter to its canonical shape - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_AND_FUEL` (in range 0..65536): controls how many filter conjunctions Meilisearch will build in total when turning a filter to its canonical shape - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_DEPTH_FUEL` (in range 0..256): controls the maximum recursive depth that Meilisearch allows when turning a filter to its canonical shape ``` - **Speed up search requests** by [@​Kerollmops](https://github.com/Kerollmops) in [#​6528](meilisearch/meilisearch#6528) Improves Meilisearch search speed by avoiding unnecessary internal work. We drastically reduced the number of times we retrieve data from disk to a single time across the whole search pipeline. This improvement will have the greatest effect on datasets with a large number of distinct fields across documents. We have seen search speeds up to 5.4x on a dataset with more than 14k different fields. - **Stabilize dumpless upgrade** by [@​curquiza](https://github.com/curquiza) in [#​6486](meilisearch/meilisearch#6486)⚠️ Breaking change following the stabilization of an experimental feature⚠️ The flag `—-experimental-dumpless-upgrade` is renamed `—-upgrade-db`, keeping the exact same behavior. - **Remove unused experimental features** by [@​curquiza](https://github.com/curquiza) in [#​6489](meilisearch/meilisearch#6489)⚠️ Breaking change: removing the following experimental features⚠️ - [Replication parameters](https://github.com/orgs/meilisearch/discussions/725): removing `--experimental-replication-parameters` because outdated. We now have another way to handle replication. - [Import dumps with old document indexer fallback](https://github.com/orgs/meilisearch/discussions/851): removing `--experimental-no-edition-2024-for-dumps`. This flag existed to prevent bugs related to our new indexer, which is now stable. - [No snapshot compression](https://github.com/orgs/meilisearch/discussions/833): removing `--experimental-no-snapshot-compaction` because it's not useful anymore. ##### 🪲 Bug fixes - Make sure legacy attribute patterns work by [@​Kerollmops](https://github.com/Kerollmops) in [#​6531](meilisearch/meilisearch#6531) - Missing support for the shorthand filterable attributes syntax ##### 🔩 Miscellaneous - Add missing logs in multisearch by [@​ManyTheFish](https://github.com/ManyTheFish) in [#​6529](meilisearch/meilisearch#6529) - Docs: Fix stale pre-v1.0 supported versions statement by [@​vishnujayvel](https://github.com/vishnujayvel) in [#​6524](meilisearch/meilisearch#6524) - Bump sigstore/cosign-installer from 4.1.1 to 4.1.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6427](meilisearch/meilisearch#6427) - Bump actions/github-script from 7 to 9 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6425](meilisearch/meilisearch#6425) - Bump actions/upload-artifact from 4 to 7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6428](meilisearch/meilisearch#6428) ##### New Contributors - [@​vishnujayvel](https://github.com/vishnujayvel) made their first contribution in [#​6524](meilisearch/meilisearch#6524) </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Warsaw) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNzIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI3Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=--> Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/446
#446) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [getmeili/meilisearch](https://github.com/meilisearch/meilisearch) | minor | `v1.50.0` → `v1.51.0` | --- <details> <summary>meilisearch/meilisearch (getmeili/meilisearch)</summary> [Compare Source](meilisearch/meilisearch@v1.50.0...v1.51.0) - **Add filter condition to DSRs** by [@​dureuill](https://github.com/dureuill) in [#​6505](meilisearch/meilisearch#6505) ```` Dynamic search rules (DSR) can now declare a new `filter` condition: it contains a single `values` key, whose value is a JSON object. The keys of this `values` JSON object are the facet names (e.g., `color`, `genres`, ...), while their values are the values that a filter must resolve to for these facets, so that the rule is active. <details> <summary>Example of sending a DSR with a filter condition</summary> ```jsonc // PATCH /dynamic-search-rules/test-filter { "conditions": { "filter": { "values": { "color": "red", "category": "shirt" } } }, "actions": [ { "selector": { "id": "red shirt on sales" }, "action": { "type": "pin", "position": 0 } } ] } ``` </details> <details> <summary>Example of search query that enables the DSR above</summary> ```jsonc { "filter": "(category = shirt AND color = red) OR (category = jeans AND color = blue)" } ``` </details> Note that the filter only needs to have one branch resolving to all the facet values declared in the rule for the rule to be active. ```` ``` Dynamic search rules returned by `GET /dynamic-search-rules/{:ruleUid}` and `POST /dynamic-search-rules` contain an additional `lastUpdatedAt` field. This field is automatically updated with the `enqueuedAt` value of the last task that modified the rule. ``` ``` `POST /dynamic-search-rules` now lists rules in descending `lastUpdatedAt` order, meaning that the most recently updated rules will be listed first. ``` ``` New environment variables are defined to control the behavior of the DSR fuel: - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_FUEL` (in range 0..4294967296): controls how many filter constraint combinations Meilisearch will attempt to resolve at search time before giving up and applying partial rules. - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_OR_FUEL` (in range 0..65536): controls how many filter disjunctions Meilisearch will build when turning a filter to its canonical shape - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_AND_FUEL` (in range 0..65536): controls how many filter conjunctions Meilisearch will build in total when turning a filter to its canonical shape - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_DEPTH_FUEL` (in range 0..256): controls the maximum recursive depth that Meilisearch allows when turning a filter to its canonical shape ``` - **Speed up search requests** by [@​Kerollmops](https://github.com/Kerollmops) in [#​6528](meilisearch/meilisearch#6528) Improves Meilisearch search speed by avoiding unnecessary internal work. We drastically reduced the number of times we retrieve data from disk to a single time across the whole search pipeline. This improvement will have the greatest effect on datasets with a large number of distinct fields across documents. We have seen search speeds up to 5.4x on a dataset with more than 14k different fields. - **Stabilize dumpless upgrade** by [@​curquiza](https://github.com/curquiza) in [#​6486](meilisearch/meilisearch#6486)⚠️ Breaking change following the stabilization of an experimental feature⚠️ The flag `—-experimental-dumpless-upgrade` is renamed `—-upgrade-db`, keeping the exact same behavior. - **Remove unused experimental features** by [@​curquiza](https://github.com/curquiza) in [#​6489](meilisearch/meilisearch#6489)⚠️ Breaking change: removing the following experimental features⚠️ - [Replication parameters](https://github.com/orgs/meilisearch/discussions/725): removing `--experimental-replication-parameters` because outdated. We now have another way to handle replication. - [Import dumps with old document indexer fallback](https://github.com/orgs/meilisearch/discussions/851): removing `--experimental-no-edition-2024-for-dumps`. This flag existed to prevent bugs related to our new indexer, which is now stable. - [No snapshot compression](https://github.com/orgs/meilisearch/discussions/833): removing `--experimental-no-snapshot-compaction` because it's not useful anymore. - Make sure legacy attribute patterns work by [@​Kerollmops](https://github.com/Kerollmops) in [#​6531](meilisearch/meilisearch#6531) - Missing support for the shorthand filterable attributes syntax - Add missing logs in multisearch by [@​ManyTheFish](https://github.com/ManyTheFish) in [#​6529](meilisearch/meilisearch#6529) - Docs: Fix stale pre-v1.0 supported versions statement by [@​vishnujayvel](https://github.com/vishnujayvel) in [#​6524](meilisearch/meilisearch#6524) - Bump sigstore/cosign-installer from 4.1.1 to 4.1.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6427](meilisearch/meilisearch#6427) - Bump actions/github-script from 7 to 9 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6425](meilisearch/meilisearch#6425) - Bump actions/upload-artifact from 4 to 7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6428](meilisearch/meilisearch#6428) - [@​vishnujayvel](https://github.com/vishnujayvel) made their first contribution in [#​6524](meilisearch/meilisearch#6524) </details> --- 📅 **Schedule**: (in timezone Europe/Warsaw) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNzIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI3Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=--> Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/446
#446) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [getmeili/meilisearch](https://github.com/meilisearch/meilisearch) | minor | `v1.50.0` → `v1.51.0` | --- <details> <summary>meilisearch/meilisearch (getmeili/meilisearch)</summary> [Compare Source](meilisearch/meilisearch@v1.50.0...v1.51.0) - **Add filter condition to DSRs** by [@​dureuill](https://github.com/dureuill) in [#​6505](meilisearch/meilisearch#6505) ```` Dynamic search rules (DSR) can now declare a new `filter` condition: it contains a single `values` key, whose value is a JSON object. The keys of this `values` JSON object are the facet names (e.g., `color`, `genres`, ...), while their values are the values that a filter must resolve to for these facets, so that the rule is active. <details> <summary>Example of sending a DSR with a filter condition</summary> ```jsonc // PATCH /dynamic-search-rules/test-filter { "conditions": { "filter": { "values": { "color": "red", "category": "shirt" } } }, "actions": [ { "selector": { "id": "red shirt on sales" }, "action": { "type": "pin", "position": 0 } } ] } ``` </details> <details> <summary>Example of search query that enables the DSR above</summary> ```jsonc { "filter": "(category = shirt AND color = red) OR (category = jeans AND color = blue)" } ``` </details> Note that the filter only needs to have one branch resolving to all the facet values declared in the rule for the rule to be active. ```` ``` Dynamic search rules returned by `GET /dynamic-search-rules/{:ruleUid}` and `POST /dynamic-search-rules` contain an additional `lastUpdatedAt` field. This field is automatically updated with the `enqueuedAt` value of the last task that modified the rule. ``` ``` `POST /dynamic-search-rules` now lists rules in descending `lastUpdatedAt` order, meaning that the most recently updated rules will be listed first. ``` ``` New environment variables are defined to control the behavior of the DSR fuel: - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_FUEL` (in range 0..4294967296): controls how many filter constraint combinations Meilisearch will attempt to resolve at search time before giving up and applying partial rules. - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_OR_FUEL` (in range 0..65536): controls how many filter disjunctions Meilisearch will build when turning a filter to its canonical shape - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_AND_FUEL` (in range 0..65536): controls how many filter conjunctions Meilisearch will build in total when turning a filter to its canonical shape - `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_DEPTH_FUEL` (in range 0..256): controls the maximum recursive depth that Meilisearch allows when turning a filter to its canonical shape ``` - **Speed up search requests** by [@​Kerollmops](https://github.com/Kerollmops) in [#​6528](meilisearch/meilisearch#6528) Improves Meilisearch search speed by avoiding unnecessary internal work. We drastically reduced the number of times we retrieve data from disk to a single time across the whole search pipeline. This improvement will have the greatest effect on datasets with a large number of distinct fields across documents. We have seen search speeds up to 5.4x on a dataset with more than 14k different fields. - **Stabilize dumpless upgrade** by [@​curquiza](https://github.com/curquiza) in [#​6486](meilisearch/meilisearch#6486)⚠️ Breaking change following the stabilization of an experimental feature⚠️ The flag `—-experimental-dumpless-upgrade` is renamed `—-upgrade-db`, keeping the exact same behavior. - **Remove unused experimental features** by [@​curquiza](https://github.com/curquiza) in [#​6489](meilisearch/meilisearch#6489)⚠️ Breaking change: removing the following experimental features⚠️ - [Replication parameters](https://github.com/orgs/meilisearch/discussions/725): removing `--experimental-replication-parameters` because outdated. We now have another way to handle replication. - [Import dumps with old document indexer fallback](https://github.com/orgs/meilisearch/discussions/851): removing `--experimental-no-edition-2024-for-dumps`. This flag existed to prevent bugs related to our new indexer, which is now stable. - [No snapshot compression](https://github.com/orgs/meilisearch/discussions/833): removing `--experimental-no-snapshot-compaction` because it's not useful anymore. - Make sure legacy attribute patterns work by [@​Kerollmops](https://github.com/Kerollmops) in [#​6531](meilisearch/meilisearch#6531) - Missing support for the shorthand filterable attributes syntax - Add missing logs in multisearch by [@​ManyTheFish](https://github.com/ManyTheFish) in [#​6529](meilisearch/meilisearch#6529) - Docs: Fix stale pre-v1.0 supported versions statement by [@​vishnujayvel](https://github.com/vishnujayvel) in [#​6524](meilisearch/meilisearch#6524) - Bump sigstore/cosign-installer from 4.1.1 to 4.1.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6427](meilisearch/meilisearch#6427) - Bump actions/github-script from 7 to 9 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6425](meilisearch/meilisearch#6425) - Bump actions/upload-artifact from 4 to 7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​6428](meilisearch/meilisearch#6428) - [@​vishnujayvel](https://github.com/vishnujayvel) made their first contribution in [#​6524](meilisearch/meilisearch#6524) </details> --- 📅 **Schedule**: (in timezone Europe/Warsaw) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNzIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI3Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=--> Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/446
Related issue
Fixes https://linear.app/meilisearch/issue/ENGPROD-2628/stabilize-dumpless-upgrade
Generative AI tools
Requirements
--experimental-dumpless-upgradeon a DB created with the last released Meilisearchdb changelabel.