Skip to content

Conversation

@SethSmucker
Copy link
Collaborator

@SethSmucker SethSmucker commented Jan 5, 2026

Summary

  • Remove dependency on non-public Accumulo APIs: ScannerOptions, IterInfo
  • Track iterator names locally instead of introspecting the delegate
  • Remove ScannerOptionsHelper inner class
  • Simplify clearScanIterators() implementation

Fixes #3334
Part of #2443

Refactor to track iterator names locally instead of introspecting the
delegate via non-public ScannerOptions/IterInfo APIs. This eliminates
dependencies on:
- org.apache.accumulo.core.clientImpl.ScannerOptions
- org.apache.accumulo.core.dataImpl.thrift.IterInfo
- com.google.common.collect.Lists

Changes:
- Add systemIteratorNames and userIteratorNames Sets to track iterators
- Update add/remove methods to maintain the local tracking sets
- Simplify clearScanIterators() to iterate over tracked names
- Remove ScannerOptionsHelper inner class

@Override
public void clearScanIterators() {
if (delegate instanceof ScannerOptions) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm not 100% sure it's safe to remove this check until we know we're not using or creating instances of ScannerOptions anywhere (and know that accumulo isn't creating any instances of them anywhere). There was some initial work done to replace our usage of ScannerOptions with datawave.query.tables.SessionOptions, so that could be an avenue for replacement here instead.

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.

Remove non-public API usage from ScannerBaseDelegate

2 participants