{"record":{"id":"c2e2220da1d1e1c4","repo":"toeverything/AFFiNE","slug":"failed-to-preserve-exif-metadata","errorCode":null,"errorMessage":"failed to preserve exif metadata","messagePattern":"failed to preserve exif metadata","errorType":"exception","errorClass":"napi::Error","httpStatus":null,"severity":"error","filePath":"packages/backend/native/src/image.rs","lineNumber":218,"sourceCode":"  metadata.remove_tag(ExifTag::Orientation(vec![1]));\n\n  if !metadata.get_ifds().iter().any(|ifd| !ifd.get_tags().is_empty()) {\n    return Ok(());\n  }\n\n  let encoded_metadata = metadata.encode().context(\"failed to preserve exif metadata\")?;\n  let source = WebPData {\n    bytes: output.as_ptr(),\n    size: output.len(),\n  };\n  let exif = WebPData {\n    bytes: encoded_metadata.as_ptr(),\n    size: encoded_metadata.len(),\n  };\n  let mut assembled = WebPData::default();\n  let mux = unsafe { WebPMuxCreateInternal(&source, 1, WEBP_MUX_ABI_VERSION as _) };\n  if mux.is_null() {\n    bail!(\"failed to preserve exif metadata\");\n  }\n\n  let encoded = (|| -> AnyResult<Vec<u8>> {\n    if unsafe { WebPMuxSetChunk(mux, c\"EXIF\".as_ptr(), &exif, 1) } != WebPMuxError::WEBP_MUX_OK {\n      bail!(\"failed to preserve exif metadata\");\n    }\n\n    WebPDataInit(&mut assembled);\n\n    if unsafe { WebPMuxAssemble(mux, &mut assembled) } != WebPMuxError::WEBP_MUX_OK {\n      bail!(\"failed to preserve exif metadata\");\n    }\n\n    Ok(unsafe { std::slice::from_raw_parts(assembled.bytes, assembled.size) }.to_vec())\n  })();\n\n  unsafe {\n    WebPDataClear(&mut assembled);","sourceCodeStart":200,"sourceCodeEnd":236,"githubUrl":"https://github.com/toeverything/AFFiNE/blob/b4c8548c09da21b2898443559a5b846f0ccf5dd8/packages/backend/native/src/image.rs#L200-L236","documentation":"EXIF preservation path failed: encoding the retained metadata or muxing it into the WebP container (WebPMuxCreateInternal/mux add) failed, so keep_exif output could not be assembled; the error propagates from preserve_exif.","triggerScenarios":"Raised when EXIF metadata re-encoding fails or when WebP mux operations (create, set EXIF chunk, assemble) fail while keep_exif is requested.","commonSituations":"Occurs when preserving EXIF from a source image into the WebP output fails. Retry without keep_exif or strip metadata from the source.","solutions":["Proceed without EXIF preservation or fix the metadata block.","Strip malformed EXIF data and re-encode."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b4c8548c09da21b2898443559a5b846f0ccf5dd8","analyzedAt":"2026-08-18T21:16:52.546Z","contentChangedAt":"2026-08-18T21:16:52.546Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}