)]}'
{"tvix/nix-compat/Cargo.toml":[{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"86dd0c6d29d1540366f71f3c73ecd088d50dc5de","unresolved":true,"context_lines":[{"line_number":23,"context_line":"ed25519 \u003d { workspace \u003d true }"},{"line_number":24,"context_line":"ed25519-dalek \u003d { workspace \u003d true }"},{"line_number":25,"context_line":"enum-primitive-derive \u003d { workspace \u003d true }"},{"line_number":26,"context_line":"futures \u003d { workspace \u003d true }"},{"line_number":27,"context_line":"glob \u003d { workspace \u003d true }"},{"line_number":28,"context_line":"mimalloc \u003d { workspace \u003d true }"},{"line_number":29,"context_line":"nom \u003d { workspace \u003d true }"}],"source_content_type":"text/x-toml","patch_set":2,"id":"3cf0ab89_1ad61227","line":26,"updated":"2024-11-12 11:55:06.000000000","message":"Can be gated on the `daemon` feature, otherwise fine with the dependency.","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000161,"name":"Vladimir Kryachko","display_name":"vova","email":"v.kryachko@gmail.com","username":"vkryachko"},"change_message_id":"63df2b81d34f7e8d9bfdd96495984753b3229c4a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"ed25519 \u003d { workspace \u003d true }"},{"line_number":24,"context_line":"ed25519-dalek \u003d { workspace \u003d true }"},{"line_number":25,"context_line":"enum-primitive-derive \u003d { workspace \u003d true }"},{"line_number":26,"context_line":"futures \u003d { workspace \u003d true }"},{"line_number":27,"context_line":"glob \u003d { workspace \u003d true }"},{"line_number":28,"context_line":"mimalloc \u003d { workspace \u003d true }"},{"line_number":29,"context_line":"nom \u003d { workspace \u003d true }"}],"source_content_type":"text/x-toml","patch_set":2,"id":"d0512407_be93a7a8","line":26,"in_reply_to":"3cf0ab89_1ad61227","updated":"2024-11-12 13:52:05.000000000","message":"Done","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"}],"tvix/nix-compat/src/nix_daemon/handler.rs":[{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"86dd0c6d29d1540366f71f3c73ecd088d50dc5de","unresolved":true,"context_lines":[{"line_number":141,"context_line":"                    Operation::QueryValidPaths \u003d\u003e {"},{"line_number":142,"context_line":"                        let query: QueryValidPaths \u003d self.reader.read_value().await?;"},{"line_number":143,"context_line":"                        self.handle(async {"},{"line_number":144,"context_line":"                            let result \u003d try_join_all("},{"line_number":145,"context_line":"                                query.paths.iter().map(|path| io.query_path_info(path)),"},{"line_number":146,"context_line":"                            )"},{"line_number":147,"context_line":"                            .await?;"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"cf4ea915_c72c1e8d","line":144,"updated":"2024-11-12 11:55:06.000000000","message":"Can we add a docstring here mentioning this needs to maintain order, and that\u0027s why we use try_join_all.","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000161,"name":"Vladimir Kryachko","display_name":"vova","email":"v.kryachko@gmail.com","username":"vkryachko"},"change_message_id":"63df2b81d34f7e8d9bfdd96495984753b3229c4a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                    Operation::QueryValidPaths \u003d\u003e {"},{"line_number":142,"context_line":"                        let query: QueryValidPaths \u003d self.reader.read_value().await?;"},{"line_number":143,"context_line":"                        self.handle(async {"},{"line_number":144,"context_line":"                            let result \u003d try_join_all("},{"line_number":145,"context_line":"                                query.paths.iter().map(|path| io.query_path_info(path)),"},{"line_number":146,"context_line":"                            )"},{"line_number":147,"context_line":"                            .await?;"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"824f104c_b1d81575","line":144,"in_reply_to":"cf4ea915_c72c1e8d","updated":"2024-11-12 13:52:05.000000000","message":"If I am reading the docs correctly, both join_all and try_join_all preserve the order, additionally I am not sure that nix requires for the response to have the paths in the same order as received(even though it will be the case here).\n\nAdded a comment explaining the use of try_join_all() instead of join_all()","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"86dd0c6d29d1540366f71f3c73ecd088d50dc5de","unresolved":true,"context_lines":[{"line_number":161,"context_line":"                        })"},{"line_number":162,"context_line":"                        .await?"},{"line_number":163,"context_line":"                    }"},{"line_number":164,"context_line":"                    // TODO: actually implement?"},{"line_number":165,"context_line":"                    Operation::QueryReferrers | Operation::QueryRealisation \u003d\u003e {"},{"line_number":166,"context_line":"                        let _: String \u003d self.reader.read_value().await?;"},{"line_number":167,"context_line":"                        self.handle(async move { Ok(Vec::\u003cStorePath\u003cString\u003e\u003e::new()) })"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"72b57066_84669802","line":164,"updated":"2024-11-12 11:55:06.000000000","message":"Let\u0027s leave `Operation::QueryReferrers | Operation::QueryRealisation` for a followup CL, this one can just leave it unimplemented (slightly updating the commit message of course, as it mentions that\u0027s all for local overlay store)","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000161,"name":"Vladimir Kryachko","display_name":"vova","email":"v.kryachko@gmail.com","username":"vkryachko"},"change_message_id":"63df2b81d34f7e8d9bfdd96495984753b3229c4a","unresolved":true,"context_lines":[{"line_number":161,"context_line":"                        })"},{"line_number":162,"context_line":"                        .await?"},{"line_number":163,"context_line":"                    }"},{"line_number":164,"context_line":"                    // TODO: actually implement?"},{"line_number":165,"context_line":"                    Operation::QueryReferrers | Operation::QueryRealisation \u003d\u003e {"},{"line_number":166,"context_line":"                        let _: String \u003d self.reader.read_value().await?;"},{"line_number":167,"context_line":"                        self.handle(async move { Ok(Vec::\u003cStorePath\u003cString\u003e\u003e::new()) })"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"7cab4d9f_13b8ced2","line":164,"in_reply_to":"72b57066_84669802","updated":"2024-11-12 13:52:05.000000000","message":"I\u0027d prefer to actually have these ops not to return the \"not implemented\" error to the client as explained in the updated comment. wdyt?","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"4cff19c3d4ffbd0b44fa33bfc528ac12d100b929","unresolved":true,"context_lines":[{"line_number":161,"context_line":"                        })"},{"line_number":162,"context_line":"                        .await?"},{"line_number":163,"context_line":"                    }"},{"line_number":164,"context_line":"                    // TODO: actually implement?"},{"line_number":165,"context_line":"                    Operation::QueryReferrers | Operation::QueryRealisation \u003d\u003e {"},{"line_number":166,"context_line":"                        let _: String \u003d self.reader.read_value().await?;"},{"line_number":167,"context_line":"                        self.handle(async move { Ok(Vec::\u003cStorePath\u003cString\u003e\u003e::new()) })"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"a928d3e5_97205b11","line":164,"in_reply_to":"7cab4d9f_13b8ced2","updated":"2024-11-12 17:03:25.000000000","message":"I\u0027m fine with having some noop impl here to make it work with the overlay usecase, but I think we should move it into a separate commit (and log a warn! or something whenever this is called). These are two separate things.","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000161,"name":"Vladimir Kryachko","display_name":"vova","email":"v.kryachko@gmail.com","username":"vkryachko"},"change_message_id":"f7acb035bd967e8f598a21315c212ea80c6d3d1f","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                        })"},{"line_number":162,"context_line":"                        .await?"},{"line_number":163,"context_line":"                    }"},{"line_number":164,"context_line":"                    // TODO: actually implement?"},{"line_number":165,"context_line":"                    Operation::QueryReferrers | Operation::QueryRealisation \u003d\u003e {"},{"line_number":166,"context_line":"                        let _: String \u003d self.reader.read_value().await?;"},{"line_number":167,"context_line":"                        self.handle(async move { Ok(Vec::\u003cStorePath\u003cString\u003e\u003e::new()) })"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"cd32b3ff_4b5045cc","line":164,"in_reply_to":"a928d3e5_97205b11","updated":"2024-11-12 17:33:22.000000000","message":"sg, removed from this cl for now","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"e0a3719430ce21caaeba0f1a54d2527457dd2388","unresolved":true,"context_lines":[{"line_number":136,"context_line":"                        let path \u003d StorePath::\u003cString\u003e::from_bytes(store_path.as_bytes())"},{"line_number":137,"context_line":"                            .map_err(|e| std::io::Error::other(e.to_string()))?;"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"                        self.handle(io.query_path_info(\u0026path)).await?"},{"line_number":140,"context_line":"                    }"},{"line_number":141,"context_line":"                    Operation::QueryValidPaths \u003d\u003e {"},{"line_number":142,"context_line":"                        let query: QueryValidPaths \u003d self.reader.read_value().await?;"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"b7c5d3f0_02ae62a7","line":139,"updated":"2024-11-12 18:25:17.000000000","message":"ugh, this is a bit messy. we leave it unspecified if an implementation should / must also validate the name passed in the request.\n\nI\u0027d much prefer we added an additional method to the NixDaemonIO and ask that.","commit_id":"0ccb77c8cce9593f88653b35c9578f8c45005024"},{"author":{"_account_id":1000161,"name":"Vladimir Kryachko","display_name":"vova","email":"v.kryachko@gmail.com","username":"vkryachko"},"change_message_id":"8deb76f148693c915167ce9bfb642a9261e326ae","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                        let path \u003d StorePath::\u003cString\u003e::from_bytes(store_path.as_bytes())"},{"line_number":137,"context_line":"                            .map_err(|e| std::io::Error::other(e.to_string()))?;"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"                        self.handle(io.query_path_info(\u0026path)).await?"},{"line_number":140,"context_line":"                    }"},{"line_number":141,"context_line":"                    Operation::QueryValidPaths \u003d\u003e {"},{"line_number":142,"context_line":"                        let query: QueryValidPaths \u003d self.reader.read_value().await?;"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"ef55465d_855aa773","line":139,"in_reply_to":"b7c5d3f0_02ae62a7","updated":"2024-11-12 21:48:06.000000000","message":"Done","commit_id":"0ccb77c8cce9593f88653b35c9578f8c45005024"}],"tvix/nix-compat/src/nix_daemon/types.rs":[{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"86dd0c6d29d1540366f71f3c73ecd088d50dc5de","unresolved":true,"context_lines":[{"line_number":166,"context_line":"}"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"#[derive(NixDeserialize)]"},{"line_number":169,"context_line":"pub struct QueryValidPaths {"},{"line_number":170,"context_line":"    pub paths: Vec\u003cStorePath\u003cString\u003e\u003e,"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    #[nix(version \u003d \"27..\")]"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"d51a0268_0943ae52","line":169,"updated":"2024-11-12 11:55:06.000000000","message":"Add a docstring here that this is the request from the QueryValidPaths option, and mention that the returned responses need to match request order in paths.","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000161,"name":"Vladimir Kryachko","display_name":"vova","email":"v.kryachko@gmail.com","username":"vkryachko"},"change_message_id":"63df2b81d34f7e8d9bfdd96495984753b3229c4a","unresolved":false,"context_lines":[{"line_number":166,"context_line":"}"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"#[derive(NixDeserialize)]"},{"line_number":169,"context_line":"pub struct QueryValidPaths {"},{"line_number":170,"context_line":"    pub paths: Vec\u003cStorePath\u003cString\u003e\u003e,"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    #[nix(version \u003d \"27..\")]"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"c371ed2c_f080c465","line":169,"in_reply_to":"d51a0268_0943ae52","updated":"2024-11-12 13:52:05.000000000","message":"Done","commit_id":"8a831e7d0e45a947289039d8941866f159b13cef"},{"author":{"_account_id":1000161,"name":"Vladimir Kryachko","display_name":"vova","email":"v.kryachko@gmail.com","username":"vkryachko"},"change_message_id":"63df2b81d34f7e8d9bfdd96495984753b3229c4a","unresolved":true,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    // Whether to try and substitute the paths."},{"line_number":175,"context_line":"    #[nix(version \u003d \"27..\")]"},{"line_number":176,"context_line":"    pub substitute: bool,"},{"line_number":177,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":3,"id":"e20a52bd_fb7f92d6","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":25},"updated":"2024-11-12 13:52:05.000000000","message":"Unsure how this will work in the future, but for now it\u0027s ignored.","commit_id":"626f729e25661c18f30156c2a8bf39308de46179"},{"author":{"_account_id":1000161,"name":"Vladimir Kryachko","display_name":"vova","email":"v.kryachko@gmail.com","username":"vkryachko"},"change_message_id":"f7acb035bd967e8f598a21315c212ea80c6d3d1f","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    // Whether to try and substitute the paths."},{"line_number":175,"context_line":"    #[nix(version \u003d \"27..\")]"},{"line_number":176,"context_line":"    pub substitute: bool,"},{"line_number":177,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":3,"id":"aaa68b77_9c819ec0","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":25},"in_reply_to":"bc21279f_27f40d20","updated":"2024-11-12 17:33:22.000000000","message":"sg, added a warning when `substitute \u003d\u003d true` for now","commit_id":"626f729e25661c18f30156c2a8bf39308de46179"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"4cff19c3d4ffbd0b44fa33bfc528ac12d100b929","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    // Whether to try and substitute the paths."},{"line_number":175,"context_line":"    #[nix(version \u003d \"27..\")]"},{"line_number":176,"context_line":"    pub substitute: bool,"},{"line_number":177,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":3,"id":"bc21279f_27f40d20","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":25},"in_reply_to":"e20a52bd_fb7f92d6","updated":"2024-11-12 17:03:25.000000000","message":"We might need to move some of the io.query_path_info() calls to more explicit trait methods in the future, and then can expose this as a boolean in the function signature. But this can indeed happen at a later point.","commit_id":"626f729e25661c18f30156c2a8bf39308de46179"}]}
