klion26 commented on code in PR #7935: URL: https://github.com/apache/arrow-rs/pull/7935#discussion_r2217808710
########## parquet-variant/src/builder.rs: ########## @@ -1317,7 +1414,15 @@ impl<'a> ObjectBuilder<'a> { /// This is to ensure that the object is always finalized before its parent builder /// is finalized. impl Drop for ObjectBuilder<'_> { - fn drop(&mut self) {} + fn drop(&mut self) { + // truncate the buffer if the `finish` method has not been called. + if !self.has_been_finished { + self.parent_state + .buffer() + .inner_mut() + .truncate(self.object_start_offset); + } Review Comment: Seems that in previous pr #7865, some logics want to cover that the metadata hasn't been rolled back in tests like `test_list_builder_to_object_builder_inner_no_finish`, do we need to roll back the `MetadataBuilder` here? ``` // The parent list should only contain the original values list_builder.finish(); let (metadata, value) = builder.finish(); let metadata = VariantMetadata::try_new(&metadata).unwrap(); assert_eq!(metadata.len(), 1); assert_eq!(&metadata[0], "name"); // not rolled back ``` I updated this into a separate commit, we can keep it or revert it easily. IIUC, the `Metadata` can be rolled back because the object has not been written successfully, but not sure if there are any cases I did not follow here. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org