Skip to content

Simplify Lockable interface, adds safety for data formats#199

Merged
alchemist51 merged 4 commits intoalchemist51:cieefrom
Bukhtawar:ciee-refactor
Mar 21, 2026
Merged

Simplify Lockable interface, adds safety for data formats#199
alchemist51 merged 4 commits intoalchemist51:cieefrom
Bukhtawar:ciee-refactor

Conversation

@Bukhtawar
Copy link
Copy Markdown

@Bukhtawar Bukhtawar commented Mar 20, 2026

Description

DataFormat — Interface → abstract class with final equals()/hashCode() on name(). → Eliminates bugs from inconsistent equality; makes DataFormat safe as a Map key everywhere.

CompositeWriter — Positional list iteration → keyed Map<DataFormat, Writer> lookup for secondaries. → O(1) writer lookup instead of fragile index-based coupling between inputs and writers.

Lockable — New minimal interface (lock, tryLock, unlock) replacing java.util.concurrent.locks.Lock. → Separates writing concern from concurrency control; removes dead methods like newCondition() that threw UnsupportedOperationException.

LockableConcurrentQueue — Type bound changed from Lock to Lockable. → Queue no longer forces pooled objects to implement the full Lock contract they don't need.

CompositeEnginePlugin — Added null/blank name validation on plugin registration and secondary format settings. → Fails fast at startup instead of producing cryptic NPEs at indexing time.

DataFormatPlugin — Simplified indexingEngine return from generic <T, P> to IndexingExecutionEngine. → Removes unchecked casts from every plugin implementation; the generic parameters weren't providing type safety anyway.

Related Issues

Resolves opensearch-project#20909

Check List

  • Functionality includes testing.
  • API changes companion pull request created, if applicable.
  • Public documentation issue/PR created, if applicable.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@Bukhtawar Bukhtawar changed the title Make Dataformat safe to be consumed in Maps Simplify Lockable interface, adds safety for data formats Mar 20, 2026
);
}
this.secondaryWriters = Collections.unmodifiableMap(secondaries);
this.secondaryWritersByFormat = Map.copyOf(secondaries);
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this not be unmodifiableMap?

@alchemist51 alchemist51 merged commit 2823348 into alchemist51:ciee Mar 21, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants