{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":19745004,"defaultBranch":"17.0","name":"odoo","ownerLogin":"odoo","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-05-13T15:38:58.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6368483?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1711954392.0","currentOid":""},"activityList":{"items":[{"before":"1b1f58eb54a681f04e2a4e8455f3d17de1ccbcea","after":"57a7375364598b55a77a8ad22dcc53a412fa1b86","ref":"refs/heads/staging.saas-17.2","pushedAt":"2024-05-19T23:40:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"force rebuild\n\nuniquifier: 1PG6DoWJ2rT6R2sb\nFor-Commit-Id: 1b1f58eb54a681f04e2a4e8455f3d17de1ccbcea","shortMessageHtmlLink":"force rebuild"}},{"before":"2623ed6060934bf79f0df6ce32c30b3a86d7a708","after":"62662e54a44d378296551d7054245bf8bfbe97da","ref":"refs/heads/staging.saas-17.1","pushedAt":"2024-05-19T23:06:07.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"force rebuild\n\nuniquifier: zHWzLMoUWyBml25l\nFor-Commit-Id: 6e75745ddbb57286b88c336abd0d88ede652b75e","shortMessageHtmlLink":"force rebuild"}},{"before":"ccd16cc15eaffe865bcc80848a8b467f01c3eb37","after":"d9b4cf2345e8969b3a2470ccec599c2c4f0ab4f2","ref":"refs/heads/staging.17.0","pushedAt":"2024-05-19T23:04:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"force rebuild\n\nuniquifier: Lf/vO79AjkQPuorI\nFor-Commit-Id: ccd16cc15eaffe865bcc80848a8b467f01c3eb37","shortMessageHtmlLink":"force rebuild"}},{"before":"76101bcfb36135b392e83e69f237154fbb84e1b9","after":"ccd16cc15eaffe865bcc80848a8b467f01c3eb37","ref":"refs/heads/17.0","pushedAt":"2024-05-19T19:21:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] pos_restaurant: Grant loyalty points for products only\n\nSteps to reproduce:\n- Install POS app.\n- Go to POS > Products > Discount & Loyalty\n- Create a New program with:\n - Program Type: Loyalty Cards\n - Conditional rules:\n - Minimum Quantity: 2\n - Grant: 1 Loyalty Points per unit paid\n- Rewards:\n - Reward Type: Discount\n - Discount: 100 % one Cheapest Product\n - In exchange of 2 Loyalty Points\n- Start a new POS session\n- Select a Customer\n- Add two different products.\n- Notice the Loyalty Points of +2 shown. This is Correct\n- Click on the Reward button\n- Notice how the Loyalty Points are now +3 which is obviously wrong given we only have two products. Basically it's as if the reward line (100% discount) is taken into consideration as the cheapest product.\n\nInvestigation:\n- Inside `_updatePrograms`, `pointsForPrograms()` are calculated.\n- we sum the lines quantities regardless of whether it's a reward line or not https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L906\n- By doing so, the reward lines are taken into consideration and the rule is triggerd by skipping this if clause https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L917-L921\n\nopw-3855323\n\ncloses odoo/odoo#165833\n\nX-original-commit: fce95140c0f563ad3584cfa35957f0d6f5a35e69\nSigned-off-by: Joseph Caburnay (jcb) \nSigned-off-by: Ali Hassan Youssef (alhy) ","shortMessageHtmlLink":"[FIX] pos_restaurant: Grant loyalty points for products only"}},{"before":"76101bcfb36135b392e83e69f237154fbb84e1b9","after":"ccd16cc15eaffe865bcc80848a8b467f01c3eb37","ref":"refs/heads/tmp.17.0","pushedAt":"2024-05-19T19:21:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] pos_restaurant: Grant loyalty points for products only\n\nSteps to reproduce:\n- Install POS app.\n- Go to POS > Products > Discount & Loyalty\n- Create a New program with:\n - Program Type: Loyalty Cards\n - Conditional rules:\n - Minimum Quantity: 2\n - Grant: 1 Loyalty Points per unit paid\n- Rewards:\n - Reward Type: Discount\n - Discount: 100 % one Cheapest Product\n - In exchange of 2 Loyalty Points\n- Start a new POS session\n- Select a Customer\n- Add two different products.\n- Notice the Loyalty Points of +2 shown. This is Correct\n- Click on the Reward button\n- Notice how the Loyalty Points are now +3 which is obviously wrong given we only have two products. Basically it's as if the reward line (100% discount) is taken into consideration as the cheapest product.\n\nInvestigation:\n- Inside `_updatePrograms`, `pointsForPrograms()` are calculated.\n- we sum the lines quantities regardless of whether it's a reward line or not https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L906\n- By doing so, the reward lines are taken into consideration and the rule is triggerd by skipping this if clause https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L917-L921\n\nopw-3855323\n\ncloses odoo/odoo#165833\n\nX-original-commit: fce95140c0f563ad3584cfa35957f0d6f5a35e69\nSigned-off-by: Joseph Caburnay (jcb) \nSigned-off-by: Ali Hassan Youssef (alhy) ","shortMessageHtmlLink":"[FIX] pos_restaurant: Grant loyalty points for products only"}},{"before":"f7400888f3719866615f0bb92b49692d73237289","after":"76101bcfb36135b392e83e69f237154fbb84e1b9","ref":"refs/heads/tmp.17.0","pushedAt":"2024-05-19T19:21:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"0bed9f11a251e87a5e87b56013f7d9ff39672591","after":"1b1f58eb54a681f04e2a4e8455f3d17de1ccbcea","ref":"refs/heads/saas-17.2","pushedAt":"2024-05-19T18:29:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] mail: show all attachment options\n\nThe template for the attachment list adds a class to show multiple options\nwhen attachments can be deleted.\n\nHowever the condition to display the delete button is different from\nthe condition to apply that style.\n\nMeaning if one condition `showDelete` is true while the other `isDeletable` is false\nit is impossible to access the download button as the correct style is not applied.\n\n- Fix the template to use the same condition everywhere\n- Fix the condition for showDelete to always be false is deletion is disallowed\n\nIssue noticeable since [1] when attachments were made conditionally deletable\nas opposed to always deletable previously.\n\n1: 32a80a3ce1b2cbc46b1fc20f96b82256639beb9f\n\ntask-3519815\n\ncloses odoo/odoo#166094\n\nX-original-commit: 281140f33597b4990da8ed12ca89aea9d5f8a079\nSigned-off-by: Renaud Thiry (reth) ","shortMessageHtmlLink":"[FIX] mail: show all attachment options"}},{"before":"0bed9f11a251e87a5e87b56013f7d9ff39672591","after":"1b1f58eb54a681f04e2a4e8455f3d17de1ccbcea","ref":"refs/heads/tmp.saas-17.2","pushedAt":"2024-05-19T18:29:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] mail: show all attachment options\n\nThe template for the attachment list adds a class to show multiple options\nwhen attachments can be deleted.\n\nHowever the condition to display the delete button is different from\nthe condition to apply that style.\n\nMeaning if one condition `showDelete` is true while the other `isDeletable` is false\nit is impossible to access the download button as the correct style is not applied.\n\n- Fix the template to use the same condition everywhere\n- Fix the condition for showDelete to always be false is deletion is disallowed\n\nIssue noticeable since [1] when attachments were made conditionally deletable\nas opposed to always deletable previously.\n\n1: 32a80a3ce1b2cbc46b1fc20f96b82256639beb9f\n\ntask-3519815\n\ncloses odoo/odoo#166094\n\nX-original-commit: 281140f33597b4990da8ed12ca89aea9d5f8a079\nSigned-off-by: Renaud Thiry (reth) ","shortMessageHtmlLink":"[FIX] mail: show all attachment options"}},{"before":"84cc04d6ced0e68d16f08629e42868f017792352","after":"0bed9f11a251e87a5e87b56013f7d9ff39672591","ref":"refs/heads/tmp.saas-17.2","pushedAt":"2024-05-19T18:29:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"f7400888f3719866615f0bb92b49692d73237289","after":"ccd16cc15eaffe865bcc80848a8b467f01c3eb37","ref":"refs/heads/staging.17.0","pushedAt":"2024-05-19T17:58:19.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] pos_restaurant: Grant loyalty points for products only\n\nSteps to reproduce:\n- Install POS app.\n- Go to POS > Products > Discount & Loyalty\n- Create a New program with:\n - Program Type: Loyalty Cards\n - Conditional rules:\n - Minimum Quantity: 2\n - Grant: 1 Loyalty Points per unit paid\n- Rewards:\n - Reward Type: Discount\n - Discount: 100 % one Cheapest Product\n - In exchange of 2 Loyalty Points\n- Start a new POS session\n- Select a Customer\n- Add two different products.\n- Notice the Loyalty Points of +2 shown. This is Correct\n- Click on the Reward button\n- Notice how the Loyalty Points are now +3 which is obviously wrong given we only have two products. Basically it's as if the reward line (100% discount) is taken into consideration as the cheapest product.\n\nInvestigation:\n- Inside `_updatePrograms`, `pointsForPrograms()` are calculated.\n- we sum the lines quantities regardless of whether it's a reward line or not https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L906\n- By doing so, the reward lines are taken into consideration and the rule is triggerd by skipping this if clause https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L917-L921\n\nopw-3855323\n\ncloses odoo/odoo#165833\n\nX-original-commit: fce95140c0f563ad3584cfa35957f0d6f5a35e69\nSigned-off-by: Joseph Caburnay (jcb) \nSigned-off-by: Ali Hassan Youssef (alhy) ","shortMessageHtmlLink":"[FIX] pos_restaurant: Grant loyalty points for products only"}},{"before":"9d6b473b6a2b8a4fb84689ad86fcfc6906c4f326","after":"1b1f58eb54a681f04e2a4e8455f3d17de1ccbcea","ref":"refs/heads/staging.saas-17.2","pushedAt":"2024-05-19T16:50:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] mail: show all attachment options\n\nThe template for the attachment list adds a class to show multiple options\nwhen attachments can be deleted.\n\nHowever the condition to display the delete button is different from\nthe condition to apply that style.\n\nMeaning if one condition `showDelete` is true while the other `isDeletable` is false\nit is impossible to access the download button as the correct style is not applied.\n\n- Fix the template to use the same condition everywhere\n- Fix the condition for showDelete to always be false is deletion is disallowed\n\nIssue noticeable since [1] when attachments were made conditionally deletable\nas opposed to always deletable previously.\n\n1: 32a80a3ce1b2cbc46b1fc20f96b82256639beb9f\n\ntask-3519815\n\ncloses odoo/odoo#166094\n\nX-original-commit: 281140f33597b4990da8ed12ca89aea9d5f8a079\nSigned-off-by: Renaud Thiry (reth) ","shortMessageHtmlLink":"[FIX] mail: show all attachment options"}},{"before":"edc3be8a7b1f4330b2b72973f722295779aace7f","after":"9b6e4e65616f94d181a62f7a6908025bb4069af8","ref":"refs/heads/master","pushedAt":"2024-05-19T15:35:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"84cc04d6ced0e68d16f08629e42868f017792352","after":"0bed9f11a251e87a5e87b56013f7d9ff39672591","ref":"refs/heads/saas-17.2","pushedAt":"2024-05-19T15:34:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"2623ed6060934bf79f0df6ce32c30b3a86d7a708","after":"6e75745ddbb57286b88c336abd0d88ede652b75e","ref":"refs/heads/saas-17.1","pushedAt":"2024-05-19T15:33:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"f7400888f3719866615f0bb92b49692d73237289","after":"76101bcfb36135b392e83e69f237154fbb84e1b9","ref":"refs/heads/17.0","pushedAt":"2024-05-19T15:33:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"41f854b10749eb8eea2a97fee3fd53f1d315cc1d","after":"4f5fe2cb8acb9eb62c2741e1649059b46775c652","ref":"refs/heads/saas-16.3","pushedAt":"2024-05-19T15:30:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"8c1f2f78b7a8618ccd25a2fc48c011e355094474","after":"accc6148834853993707d02a106f8e5ac4ded27a","ref":"refs/heads/16.0","pushedAt":"2024-05-19T15:28:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"718ef9ce335c26c03f9a61725e815f04b1222015","after":"5f450fef17ccb1cd6b125e958fb7012666823eea","ref":"refs/heads/15.0","pushedAt":"2024-05-19T15:26:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] point_of_sale: load demo data if pos user\n\nWe need to belong to the `group_pos_user` group\nin order to load the data correctly.\n\nopw-3933015\n\ncloses odoo/odoo#125033\n\nSigned-off-by: Denis Ledoux (dle) ","shortMessageHtmlLink":"[FIX] point_of_sale: load demo data if pos user"}},{"before":"fe1dbe0b68cc9cd769844b189cab2a90b2fa4fec","after":"f7400888f3719866615f0bb92b49692d73237289","ref":"refs/heads/17.0","pushedAt":"2024-05-19T13:59:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] core: reduce memory use of BaseModel._flush()\n\nThis is re-targeting https://github.com/odoo/odoo/pull/162442 to 16.0\n\nMotivation: MemoryError exceptions when a large number of records on the same\nmodel have dirty fields. Such often happens during upgrades.\n\nIn the current implementation, the cached data is re-arranged in multiple steps\nusing local data structures. The most problematic is\n`id_vals[record.id][field.name]`, because it creates a dictionary with a\npotentially long field name (think studio fields) as key for each dirty record.\nFor thousands of records, this quickly accumulates to 10s or even 100s of MiB\nin RAM.\n\nThe idea of this patch is:\n1. collect all dirty ids for all dirty fields on the model. This does not cost\n additional memory, since the ist of ids per field will be pop()'ed from the\n cache.\n2. Walk over fields and ids collecting all fields and values of each id in the\n same loop, carefully consuming objects, while directly building the\n `updates` dictionary, without creating the intermediate data structures.\n\nThis way, the _flush method only consumes a marginal amount of memory compared\nto the memory already consumed by the cache.\n\nCareful profiling (using `memray` for memory profiling, the odoo profiler for\nruntime profiling) of a testcase that flushes 80k records in 8 writes has shown\nthis new version to consume roughly 95% less memory while running slightly\nfaster.\n\ncloses odoo/odoo#166012\n\nX-original-commit: ec5a798166cee25db72954da445e2ee2ed991c77\nSigned-off-by: Raphael Collet \nCo-authored-by: Raphael Collet ","shortMessageHtmlLink":"[FIX] core: reduce memory use of BaseModel._flush()"}},{"before":"fe1dbe0b68cc9cd769844b189cab2a90b2fa4fec","after":"f7400888f3719866615f0bb92b49692d73237289","ref":"refs/heads/tmp.17.0","pushedAt":"2024-05-19T13:59:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] core: reduce memory use of BaseModel._flush()\n\nThis is re-targeting https://github.com/odoo/odoo/pull/162442 to 16.0\n\nMotivation: MemoryError exceptions when a large number of records on the same\nmodel have dirty fields. Such often happens during upgrades.\n\nIn the current implementation, the cached data is re-arranged in multiple steps\nusing local data structures. The most problematic is\n`id_vals[record.id][field.name]`, because it creates a dictionary with a\npotentially long field name (think studio fields) as key for each dirty record.\nFor thousands of records, this quickly accumulates to 10s or even 100s of MiB\nin RAM.\n\nThe idea of this patch is:\n1. collect all dirty ids for all dirty fields on the model. This does not cost\n additional memory, since the ist of ids per field will be pop()'ed from the\n cache.\n2. Walk over fields and ids collecting all fields and values of each id in the\n same loop, carefully consuming objects, while directly building the\n `updates` dictionary, without creating the intermediate data structures.\n\nThis way, the _flush method only consumes a marginal amount of memory compared\nto the memory already consumed by the cache.\n\nCareful profiling (using `memray` for memory profiling, the odoo profiler for\nruntime profiling) of a testcase that flushes 80k records in 8 writes has shown\nthis new version to consume roughly 95% less memory while running slightly\nfaster.\n\ncloses odoo/odoo#166012\n\nX-original-commit: ec5a798166cee25db72954da445e2ee2ed991c77\nSigned-off-by: Raphael Collet \nCo-authored-by: Raphael Collet ","shortMessageHtmlLink":"[FIX] core: reduce memory use of BaseModel._flush()"}},{"before":"56b3f6714cc66dd6533dc29605e984418fc30313","after":"fe1dbe0b68cc9cd769844b189cab2a90b2fa4fec","ref":"refs/heads/tmp.17.0","pushedAt":"2024-05-19T13:59:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[I18N] Update translation terms from Transifex","shortMessageHtmlLink":"[I18N] Update translation terms from Transifex"}},{"before":"75da61d4410acc2d7fb452eaddbbefe466887dcf","after":"e30853b9fbde28cd4b1dc9948e12fe2be0b03abc","ref":"refs/heads/saas-16.4","pushedAt":"2024-05-19T13:38:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] core: reduce memory use of BaseModel._flush()\n\nThis is re-targeting https://github.com/odoo/odoo/pull/162442 to 16.0\n\nMotivation: MemoryError exceptions when a large number of records on the same\nmodel have dirty fields. Such often happens during upgrades.\n\nIn the current implementation, the cached data is re-arranged in multiple steps\nusing local data structures. The most problematic is\n`id_vals[record.id][field.name]`, because it creates a dictionary with a\npotentially long field name (think studio fields) as key for each dirty record.\nFor thousands of records, this quickly accumulates to 10s or even 100s of MiB\nin RAM.\n\nThe idea of this patch is:\n1. collect all dirty ids for all dirty fields on the model. This does not cost\n additional memory, since the ist of ids per field will be pop()'ed from the\n cache.\n2. Walk over fields and ids collecting all fields and values of each id in the\n same loop, carefully consuming objects, while directly building the\n `updates` dictionary, without creating the intermediate data structures.\n\nThis way, the _flush method only consumes a marginal amount of memory compared\nto the memory already consumed by the cache.\n\nCareful profiling (using `memray` for memory profiling, the odoo profiler for\nruntime profiling) of a testcase that flushes 80k records in 8 writes has shown\nthis new version to consume roughly 95% less memory while running slightly\nfaster.\n\ncloses odoo/odoo#165985\n\nX-original-commit: ec5a798166cee25db72954da445e2ee2ed991c77\nSigned-off-by: Raphael Collet \nCo-authored-by: Raphael Collet ","shortMessageHtmlLink":"[FIX] core: reduce memory use of BaseModel._flush()"}},{"before":"75da61d4410acc2d7fb452eaddbbefe466887dcf","after":"e30853b9fbde28cd4b1dc9948e12fe2be0b03abc","ref":"refs/heads/tmp.saas-16.4","pushedAt":"2024-05-19T13:38:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] core: reduce memory use of BaseModel._flush()\n\nThis is re-targeting https://github.com/odoo/odoo/pull/162442 to 16.0\n\nMotivation: MemoryError exceptions when a large number of records on the same\nmodel have dirty fields. Such often happens during upgrades.\n\nIn the current implementation, the cached data is re-arranged in multiple steps\nusing local data structures. The most problematic is\n`id_vals[record.id][field.name]`, because it creates a dictionary with a\npotentially long field name (think studio fields) as key for each dirty record.\nFor thousands of records, this quickly accumulates to 10s or even 100s of MiB\nin RAM.\n\nThe idea of this patch is:\n1. collect all dirty ids for all dirty fields on the model. This does not cost\n additional memory, since the ist of ids per field will be pop()'ed from the\n cache.\n2. Walk over fields and ids collecting all fields and values of each id in the\n same loop, carefully consuming objects, while directly building the\n `updates` dictionary, without creating the intermediate data structures.\n\nThis way, the _flush method only consumes a marginal amount of memory compared\nto the memory already consumed by the cache.\n\nCareful profiling (using `memray` for memory profiling, the odoo profiler for\nruntime profiling) of a testcase that flushes 80k records in 8 writes has shown\nthis new version to consume roughly 95% less memory while running slightly\nfaster.\n\ncloses odoo/odoo#165985\n\nX-original-commit: ec5a798166cee25db72954da445e2ee2ed991c77\nSigned-off-by: Raphael Collet \nCo-authored-by: Raphael Collet ","shortMessageHtmlLink":"[FIX] core: reduce memory use of BaseModel._flush()"}},{"before":"34f4c7eb55b18eac5f4d5965f0558d412c7e786e","after":"75da61d4410acc2d7fb452eaddbbefe466887dcf","ref":"refs/heads/tmp.saas-16.4","pushedAt":"2024-05-19T13:38:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[I18N] Update translation terms from Transifex","shortMessageHtmlLink":"[I18N] Update translation terms from Transifex"}},{"before":"8d59bdf7bf25e75400c3b2beef21420908a6b753","after":"41f854b10749eb8eea2a97fee3fd53f1d315cc1d","ref":"refs/heads/saas-16.3","pushedAt":"2024-05-19T13:31:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] core: reduce memory use of BaseModel._flush()\n\nThis is re-targeting https://github.com/odoo/odoo/pull/162442 to 16.0\n\nMotivation: MemoryError exceptions when a large number of records on the same\nmodel have dirty fields. Such often happens during upgrades.\n\nIn the current implementation, the cached data is re-arranged in multiple steps\nusing local data structures. The most problematic is\n`id_vals[record.id][field.name]`, because it creates a dictionary with a\npotentially long field name (think studio fields) as key for each dirty record.\nFor thousands of records, this quickly accumulates to 10s or even 100s of MiB\nin RAM.\n\nThe idea of this patch is:\n1. collect all dirty ids for all dirty fields on the model. This does not cost\n additional memory, since the ist of ids per field will be pop()'ed from the\n cache.\n2. Walk over fields and ids collecting all fields and values of each id in the\n same loop, carefully consuming objects, while directly building the\n `updates` dictionary, without creating the intermediate data structures.\n\nThis way, the _flush method only consumes a marginal amount of memory compared\nto the memory already consumed by the cache.\n\nCareful profiling (using `memray` for memory profiling, the odoo profiler for\nruntime profiling) of a testcase that flushes 80k records in 8 writes has shown\nthis new version to consume roughly 95% less memory while running slightly\nfaster.\n\ncloses odoo/odoo#165967\n\nX-original-commit: ec5a798166cee25db72954da445e2ee2ed991c77\nSigned-off-by: Raphael Collet \nCo-authored-by: Raphael Collet ","shortMessageHtmlLink":"[FIX] core: reduce memory use of BaseModel._flush()"}},{"before":"8d59bdf7bf25e75400c3b2beef21420908a6b753","after":"41f854b10749eb8eea2a97fee3fd53f1d315cc1d","ref":"refs/heads/tmp.saas-16.3","pushedAt":"2024-05-19T13:31:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] core: reduce memory use of BaseModel._flush()\n\nThis is re-targeting https://github.com/odoo/odoo/pull/162442 to 16.0\n\nMotivation: MemoryError exceptions when a large number of records on the same\nmodel have dirty fields. Such often happens during upgrades.\n\nIn the current implementation, the cached data is re-arranged in multiple steps\nusing local data structures. The most problematic is\n`id_vals[record.id][field.name]`, because it creates a dictionary with a\npotentially long field name (think studio fields) as key for each dirty record.\nFor thousands of records, this quickly accumulates to 10s or even 100s of MiB\nin RAM.\n\nThe idea of this patch is:\n1. collect all dirty ids for all dirty fields on the model. This does not cost\n additional memory, since the ist of ids per field will be pop()'ed from the\n cache.\n2. Walk over fields and ids collecting all fields and values of each id in the\n same loop, carefully consuming objects, while directly building the\n `updates` dictionary, without creating the intermediate data structures.\n\nThis way, the _flush method only consumes a marginal amount of memory compared\nto the memory already consumed by the cache.\n\nCareful profiling (using `memray` for memory profiling, the odoo profiler for\nruntime profiling) of a testcase that flushes 80k records in 8 writes has shown\nthis new version to consume roughly 95% less memory while running slightly\nfaster.\n\ncloses odoo/odoo#165967\n\nX-original-commit: ec5a798166cee25db72954da445e2ee2ed991c77\nSigned-off-by: Raphael Collet \nCo-authored-by: Raphael Collet ","shortMessageHtmlLink":"[FIX] core: reduce memory use of BaseModel._flush()"}},{"before":"06e95f883921f32e4270643ae4ff0eeb3f5caa64","after":"8d59bdf7bf25e75400c3b2beef21420908a6b753","ref":"refs/heads/tmp.saas-16.3","pushedAt":"2024-05-19T13:31:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[I18N] Update translation terms from Transifex","shortMessageHtmlLink":"[I18N] Update translation terms from Transifex"}},{"before":"84cc04d6ced0e68d16f08629e42868f017792352","after":"9d6b473b6a2b8a4fb84689ad86fcfc6906c4f326","ref":"refs/heads/staging.saas-17.2","pushedAt":"2024-05-19T12:38:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"force rebuild\n\nuniquifier: 2u5/UqdyrhGgz1Os\nFor-Commit-Id: 84cc04d6ced0e68d16f08629e42868f017792352","shortMessageHtmlLink":"force rebuild"}},{"before":"edc3be8a7b1f4330b2b72973f722295779aace7f","after":"b91c1dfcf4055babda443f5164d8fafbcd86bffd","ref":"refs/heads/staging.master","pushedAt":"2024-05-19T12:38:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"force rebuild\n\nuniquifier: JmS8BvN/canc/2yL\nFor-Commit-Id: edc3be8a7b1f4330b2b72973f722295779aace7f","shortMessageHtmlLink":"force rebuild"}},{"before":"9b6a05cac611e07948ac81981a3bafea55fcae03","after":"41f854b10749eb8eea2a97fee3fd53f1d315cc1d","ref":"refs/heads/staging.saas-16.3","pushedAt":"2024-05-19T12:33:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"robodoo","name":"Odoo's Mergebot","path":"/robodoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16837285?s=80&v=4"},"commit":{"message":"[FIX] core: reduce memory use of BaseModel._flush()\n\nThis is re-targeting https://github.com/odoo/odoo/pull/162442 to 16.0\n\nMotivation: MemoryError exceptions when a large number of records on the same\nmodel have dirty fields. Such often happens during upgrades.\n\nIn the current implementation, the cached data is re-arranged in multiple steps\nusing local data structures. The most problematic is\n`id_vals[record.id][field.name]`, because it creates a dictionary with a\npotentially long field name (think studio fields) as key for each dirty record.\nFor thousands of records, this quickly accumulates to 10s or even 100s of MiB\nin RAM.\n\nThe idea of this patch is:\n1. collect all dirty ids for all dirty fields on the model. This does not cost\n additional memory, since the ist of ids per field will be pop()'ed from the\n cache.\n2. Walk over fields and ids collecting all fields and values of each id in the\n same loop, carefully consuming objects, while directly building the\n `updates` dictionary, without creating the intermediate data structures.\n\nThis way, the _flush method only consumes a marginal amount of memory compared\nto the memory already consumed by the cache.\n\nCareful profiling (using `memray` for memory profiling, the odoo profiler for\nruntime profiling) of a testcase that flushes 80k records in 8 writes has shown\nthis new version to consume roughly 95% less memory while running slightly\nfaster.\n\ncloses odoo/odoo#165967\n\nX-original-commit: ec5a798166cee25db72954da445e2ee2ed991c77\nSigned-off-by: Raphael Collet \nCo-authored-by: Raphael Collet ","shortMessageHtmlLink":"[FIX] core: reduce memory use of BaseModel._flush()"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAETkuHJgA","startCursor":null,"endCursor":null}},"title":"Activity ยท odoo/odoo"}