From 2cf7466911dda4c7f2f829beedb15ac55b0b9080 Mon Sep 17 00:00:00 2001 From: Ram Narayan Balaji <81347100+yan-3005@users.noreply.github.com> Date: Fri, 3 Oct 2025 14:36:11 +0530 Subject: [PATCH] Minor: Fix NPE for botUser during race Condition, Timestamp Comparison (#23660) * Fix NPE for botUser during race Condition * Fix Timestamp processing for date assertions --- .../openmetadata/service/jdbi3/BotRepository.java | 12 +++++++++++- .../service/resources/EntityResourceTest.java | 11 +++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/BotRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/BotRepository.java index b4b473e3790..9d0c0a800d2 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/BotRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/BotRepository.java @@ -52,7 +52,17 @@ public class BotRepository extends EntityRepository { @Override public void prepare(Bot entity, boolean update) { - User user = Entity.getEntity(entity.getBotUser(), "", Include.ALL); + EntityReference botUserRef = entity.getBotUser(); + if (botUserRef == null) { + // Race condition detected: Retry by fetching the relationship directly from the database + botUserRef = getBotUser(entity); + } + if (botUserRef == null) { + // This should never happen + throw new IllegalStateException( + String.format("Bot entity [%s] is missing required botUser reference", entity.getId())); + } + User user = Entity.getEntity(botUserRef, "", Include.ALL); entity.withBotUser(user.getEntityReference()); } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java index 397901deb0b..650be4fe49e 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java @@ -4497,11 +4497,18 @@ public abstract class EntityResourceTest= timestampBeforePatch - 1000, + "Applied date should be at or after the patch operation started (with 1s tolerance)"); + assertTrue( + patchedEntity.getCertification().getAppliedDate() <= timestampAfterPatch + 1000, + "Applied date should be at or before the patch operation completed (with 1s tolerance)"); assertEquals( (double) (patchedEntity.getCertification().getExpiryDate()