@@ -243,6 +243,27 @@ impl DatasetSearchUpdater {
243243 dataset_id : & odf:: DatasetID ,
244244 properties : & kamu_auth_rebac:: DatasetProperties ,
245245 ) -> Result < ( ) , InternalError > {
246+ // Find existing document
247+ let maybe_existing_document = self
248+ . search_service
249+ . find_document_by_id (
250+ SearchContext :: unrestricted ( catalog) ,
251+ dataset_search_schema:: SCHEMA_NAME ,
252+ & dataset_id. to_string ( ) ,
253+ )
254+ . await
255+ . int_err ( ) ?;
256+
257+ // Skip if document is not present.
258+ // ReBAC properties would be taken into account during first set_ref()
259+ if maybe_existing_document. is_none ( ) {
260+ tracing:: info!(
261+ dataset_id = %dataset_id,
262+ "Dataset search document not found during ReBAC properties update, skipping" ,
263+ ) ;
264+ return Ok ( ( ) ) ;
265+ }
266+
246267 // Prepare indexing helper
247268 let indexing_helper = DatasetIndexingHelper {
248269 embeddings_provider : self . embeddings_provider . as_ref ( ) ,
@@ -290,6 +311,27 @@ impl DatasetSearchUpdater {
290311 dataset_id : & odf:: DatasetID ,
291312 authorized_accounts : & [ kamu_auth_rebac:: AuthorizedAccount ] ,
292313 ) -> Result < ( ) , InternalError > {
314+ // Find existing document
315+ let maybe_existing_document = self
316+ . search_service
317+ . find_document_by_id (
318+ SearchContext :: unrestricted ( catalog) ,
319+ dataset_search_schema:: SCHEMA_NAME ,
320+ & dataset_id. to_string ( ) ,
321+ )
322+ . await
323+ . int_err ( ) ?;
324+
325+ // Skip if document is not present.
326+ // ReBAC properties would be taken into account during first set_ref()
327+ if maybe_existing_document. is_none ( ) {
328+ tracing:: info!(
329+ dataset_id = %dataset_id,
330+ "Dataset search document not found during ReBAC properties update, skipping" ,
331+ ) ;
332+ return Ok ( ( ) ) ;
333+ }
334+
293335 // Prepare indexing helper
294336 let indexing_helper = DatasetIndexingHelper {
295337 embeddings_provider : self . embeddings_provider . as_ref ( ) ,
0 commit comments