From ee30f085d1c14945885b80593f16f398bb5e2e7a Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 16 May 2025 08:13:01 +0200 Subject: [PATCH] [jOOQ/jOOQ#18474] Race condition in TableImpl initialisation leads to wrong INFO log message about duplicate identities in AbstractTable#getIdentity --- jOOQ/src/main/java/org/jooq/impl/AbstractTable.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java index 712b31bf05..958a1a1bb6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java @@ -505,15 +505,19 @@ implements @Override public Identity getIdentity() { if (identity == null) { + Identity i = null; + for (Field f : fields()) if (f instanceof TableField && f.getDataType().identity()) - if (identity == null) - identity = new IdentityImpl(this, (TableField) f); + if (i == null) + i = new IdentityImpl(this, (TableField) f); else log.info("Multiple identities", "There are multiple identity fields in table " + this + ", which is not supported by jOOQ"); - if (identity == null) - identity = (Identity) IdentityImpl.NULL; + if (i == null) + i = (Identity) IdentityImpl.NULL; + + identity = i; } return identity == IdentityImpl.NULL ? null : identity;