diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
index d432cfb51..c5dd6fd94 100644
--- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
+++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
@@ -1407,7 +1407,7 @@ void CameraData::clearIncompleteRequests()
 		}
 
 		// TODO: need this when cancelled?
-		request->metadata().merge(metadata);
+		pipe()->metadataAvailable(request, metadata);
 
 		pipe()->completeRequest(request);
 		requestQueue_.pop();
@@ -1485,7 +1485,7 @@ void CameraData::checkRequestCompleted()
 		LOG(RPI, Debug) << "Completing request sequence: "
 				<< request->sequence();
 
-		request->metadata().merge(metadata);
+		pipe()->metadataAvailable(request, metadata);
 
 		pipe()->completeRequest(request);
 		requestQueue_.pop();
