From 7f41bd0651d810544aa1359ce1d762a8185df016 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 1 Feb 2021 21:06:02 +0100 Subject: [PATCH] Do not synchronize around ReactorStmtCtx.schemaPath The reactor is inherently single-threaded, hence there is no point in guarding this single field. Remove synchronization and add a few markes for future improvement. JIRA: YANGTOOLS-1218 Change-Id: Ic5017bb589ae5086bf8310995d7c03c80e12678a Signed-off-by: Robert Varga (cherry picked from commit 0735f709c996762a2ac65338459c465bffc4dbcf) --- .../parser/stmt/reactor/StatementContextBase.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java index c112199ce5..a9aa4099c3 100644 --- a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java +++ b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java @@ -166,7 +166,7 @@ public abstract class StatementContextBase, E // SchemaPath cache for use with SubstatementContext and InferredStatementContext. This hurts RootStatementContext // a bit in terms of size -- but those are only a few and SchemaPath is on its way out anyway. - private volatile SchemaPath schemaPath; + private SchemaPath schemaPath; // Copy constructor used by subclasses to implement reparent() StatementContextBase(final StatementContextBase original) { @@ -1074,17 +1074,10 @@ public abstract class StatementContextBase, E // Exists only to support {SubstatementContext,InferredStatementContext}.getSchemaPath() @Deprecated final @NonNull Optional substatementGetSchemaPath() { - SchemaPath local = schemaPath; - if (local == null) { - synchronized (this) { - local = schemaPath; - if (local == null) { - schemaPath = local = createSchemaPath(coerceParentContext()); - } - } + if (schemaPath == null) { + schemaPath = createSchemaPath(coerceParentContext()); } - - return Optional.ofNullable(local); + return Optional.ofNullable(schemaPath); } @Deprecated -- 2.36.6