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 <robert.varga@pantheon.tech>
(cherry picked from commit
0735f709c996762a2ac65338459c465bffc4dbcf)
// 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.
// 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<A, D, E> original) {
// Copy constructor used by subclasses to implement reparent()
StatementContextBase(final StatementContextBase<A, D, E> original) {
// Exists only to support {SubstatementContext,InferredStatementContext}.getSchemaPath()
@Deprecated
final @NonNull Optional<SchemaPath> substatementGetSchemaPath() {
// Exists only to support {SubstatementContext,InferredStatementContext}.getSchemaPath()
@Deprecated
final @NonNull Optional<SchemaPath> 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);