Skip to content

Fix MultiEntityResultTests.testQueryErrorEndRunNotNow after log4j upgrade to 2.25.3#1638

Closed
cwperks wants to merge 1 commit intoopensearch-project:mainfrom
cwperks:fix-log4j-bump
Closed

Fix MultiEntityResultTests.testQueryErrorEndRunNotNow after log4j upgrade to 2.25.3#1638
cwperks wants to merge 1 commit intoopensearch-project:mainfrom
cwperks:fix-log4j-bump

Conversation

@cwperks
Copy link
Copy Markdown
Member

@cwperks cwperks commented Dec 24, 2025

Description

Opening up this PR to show one way to resolve this exception. I'll follow-up with a more detailed analysis about why this fixes the issue.

Edit: I have found that the logic in https://github.com/opensearch-project/OpenSearch/blob/main/server/src/main/java/org/opensearch/action/search/SearchPhaseExecutionException.java#L122-L127 is contributing to the issue. Removing that fixes the issue as well.

Related Issues

Resolves https://github.com/opensearch-project/anomaly-detection/actions/runs/20473890518/job/58836650085?pr=1636

Underlying log4j bug (will be fixed in 2.26): apache/logging-log4j2#3929

REPRODUCE WITH: ./gradlew ':test' --tests 'org.opensearch.ad.transport.MultiEntityResultTests.testQueryErrorEndRunNotNow' -Dtests.seed=B5C8D0D5FC83DE04 -Dtests.security.manager=false -Dtests.jvm.argline="-XX:TieredStopAtLevel=1 -XX:ReservedCodeCacheSize=64m" -Dtests.locale=kab-DZ -Dtests.timezone=Australia/Broken_Hill -Druntime.java=21

MultiEntityResultTests > testQueryErrorEndRunNotNow FAILED
    java.lang.AssertionError: ERROR:An exception occurred processing Appender consoleSource:
    DefaultErrorHandler.java@92
    Throwable:
    java.lang.NullPointerException: Cannot read field "stackLength" because "metadata" is null
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderStackTraceElements(ThrowableStackTraceRenderer.java:158)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:100)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderCause(ThrowableStackTraceRenderer.java:136)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:103)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:77)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:56)
    	at org.apache.logging.log4j.core.pattern.ThrowablePatternConverter.format(ThrowablePatternConverter.java:130)
    	at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:44)
    	at org.apache.logging.log4j.core.layout.PatternLayout$PatternFormatterPatternSerializer.toSerializable(PatternLayout.java:396)
    	at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:251)
    	at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:237)
    	at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:57)
    	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:227)
    	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:220)
    	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:211)
    	at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
    	at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
    	at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
    	at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
    	at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:711)
    	at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:669)
    	at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:645)
    	at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:589)
    	at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
    	at org.apache.logging.log4j.core.Logger.log(Logger.java:187)
    	at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2970)
    	at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2922)
    	at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2904)
    	at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2648)
    	at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2587)
    	at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:824)
    	at org.opensearch.timeseries.transport.ResultProcessor$PageListener.onFailure(ResultProcessor.java:339)
    	at org.opensearch.timeseries.feature.CompositeRetriever$PageIterator$1.onFailure(CompositeRetriever.java:218)
    	at org.opensearch.core.action.ActionListener$6.onFailure(ActionListener.java:311)
    	at org.opensearch.ad.transport.MultiEntityResultTests.lambda$testQueryErrorEndRunNotNow$4(MultiEntityResultTests.java:539)
    	at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:42)
    	at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
    	at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
    	at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:34)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:84)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:58)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptAbstract(MockMethodInterceptor.java:163)
    	at org.opensearch.transport.client.Client$MockitoMock$0vbHJ2qt.search(Unknown Source)
    	at org.opensearch.timeseries.util.SecurityClientUtil.lambda$asyncRequestWithInjectedSecurity$1(SecurityClientUtil.java:72)
    	at org.opensearch.core.action.ActionListener$1.onResponse(ActionListener.java:82)
    	at org.opensearch.timeseries.util.TimeSeriesSafeSecurityInjector.lambda$injectUserRolesFromConfig$0(TimeSeriesSafeSecurityInjector.java:68)
    	at org.opensearch.core.action.ActionListener$1.onResponse(ActionListener.java:82)
    	at org.opensearch.timeseries.NodeStateManager.getConfig(NodeStateManager.java:238)
    	at org.opensearch.timeseries.util.TimeSeriesSafeSecurityInjector.injectUserRolesFromConfig(TimeSeriesSafeSecurityInjector.java:75)
    	at org.opensearch.timeseries.util.SecurityClientUtil.asyncRequestWithInjectedSecurity(SecurityClientUtil.java:69)
    	at org.opensearch.timeseries.feature.CompositeRetriever$PageIterator.next(CompositeRetriever.java:224)
    	at org.opensearch.timeseries.transport.ResultProcessor.executeAnalysis(ResultProcessor.java:547)
    	at org.opensearch.timeseries.transport.ResultProcessor.lambda$onGetConfig$5(ResultProcessor.java:470)
    	at org.opensearch.core.action.ActionListener$5.onResponse(ActionListener.java:270)
    	at org.opensearch.ad.transport.MultiEntityResultTests.lambda$setUp$1(MultiEntityResultTests.java:296)
    	at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:42)
    	at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
    	at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
    	at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:34)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:84)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:58)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptSuperCallable(MockMethodInterceptor.java:147)
    	at org.opensearch.ad.task.ADTaskManager$MockitoMock$2uA6cuwb.initRealtimeTaskCacheAndCleanupStaleCache(Unknown Source)
    	at org.opensearch.timeseries.transport.ResultProcessor.lambda$onGetConfig$6(ResultProcessor.java:463)
    	at org.opensearch.core.action.ActionListener$1.onResponse(ActionListener.java:82)
    	at org.opensearch.timeseries.NodeStateManager.lambda$onGetConfigResponse$9(NodeStateManager.java:285)
    	at org.opensearch.core.action.ActionListener$1.onResponse(ActionListener.java:82)
    	at org.opensearch.timeseries.util.ClientUtil.lambda$asyncRequest$0(ClientUtil.java:47)
    	at org.opensearch.core.action.ActionListener$1.onResponse(ActionListener.java:82)
    	at org.opensearch.ad.transport.MultiEntityResultTests.lambda$setUpNormlaStateManager$3(MultiEntityResultTests.java:487)
    	at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:42)
    	at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
    	at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
    	at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:34)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:84)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:58)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptAbstract(MockMethodInterceptor.java:163)
    	at org.opensearch.transport.client.Client$MockitoMock$0vbHJ2qt.get(Unknown Source)
    	at org.opensearch.timeseries.util.ClientUtil.asyncRequest(ClientUtil.java:45)
    	at org.opensearch.timeseries.NodeStateManager.getConfig(NodeStateManager.java:248)
    	at org.opensearch.ad.transport.AnomalyResultTransportAction.doExecute(AnomalyResultTransportAction.java:195)
    	at org.opensearch.ad.transport.MultiEntityResultTests.testQueryErrorEndRunNotNow(MultiEntityResultTests.java:552)
    	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:938)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:974)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
    	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    	at org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
    	at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
    	at org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
    	at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
    	at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
    	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    	at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
    	at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
    	at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:947)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:832)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:883)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:894)
    	at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
    	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    	at org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
    	at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
    	at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
    	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    	at org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
    	at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
    	at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
    	at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
    	at org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
    	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    	at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
    	at java.base/java.lang.Thread.run(Thread.java:1583)

    ERROR:An exception occurred processing Appender consoleSource:
    DefaultErrorHandler.java@92
    Throwable:
    java.lang.NullPointerException: Cannot read field "stackLength" because "metadata" is null
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderStackTraceElements(ThrowableStackTraceRenderer.java:158)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:100)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderCause(ThrowableStackTraceRenderer.java:136)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:103)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderCause(ThrowableStackTraceRenderer.java:136)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:103)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:77)
    	at org.apache.logging.log4j.core.pattern.ThrowableStackTraceRenderer.renderThrowable(ThrowableStackTraceRenderer.java:56)
    	at org.apache.logging.log4j.core.pattern.ThrowablePatternConverter.format(ThrowablePatternConverter.java:130)
    	at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:44)
    	at org.apache.logging.log4j.core.layout.PatternLayout$PatternFormatterPatternSerializer.toSerializable(PatternLayout.java:396)
    	at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:251)
    	at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:237)
    	at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:57)
    	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:227)
    	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:220)
    	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:211)
    	at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
    	at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
    	at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
    	at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
    	at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:711)
    	at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:669)
    	at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:645)
    	at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:589)
    	at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
    	at org.apache.logging.log4j.core.Logger.log(Logger.java:187)
    	at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2970)
    	at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2922)
    	at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2904)
    	at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2337)
    	at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:789)
    	at org.opensearch.timeseries.transport.ResultProcessor.executeAnalysis(ResultProcessor.java:502)
    	at org.opensearch.timeseries.transport.ResultProcessor.lambda$onGetConfig$5(ResultProcessor.java:470)
    	at org.opensearch.core.action.ActionListener$5.onResponse(ActionListener.java:270)
    	at org.opensearch.ad.transport.MultiEntityResultTests.lambda$setUp$1(MultiEntityResultTests.java:296)
    	at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:42)
    	at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
    	at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
    	at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:34)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:84)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:58)
    	at org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptSuperCallable(MockMethodInterceptor.java:147)
    	at org.opensearch.ad.task.ADTaskManager$MockitoMock$2uA6cuwb.initRealtimeTaskCacheAndCleanupStaleCache(Unknown Source)
    	at org.opensearch.timeseries.transport.ResultProcessor.lambda$onGetConfig$6(ResultProcessor.java:463)
    	at org.opensearch.core.action.ActionListener$1.onResponse(ActionListener.java:82)
    	at org.opensearch.timeseries.NodeStateManager.getConfig(NodeStateManager.java:238)
    	at org.opensearch.ad.transport.AnomalyResultTransportAction.doExecute(AnomalyResultTransportAction.java:195)
    	at org.opensearch.ad.transport.MultiEntityResultTests.testQueryErrorEndRunNotNow(MultiEntityResultTests.java:560)
    	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:938)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:974)
    	at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
    	at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
    	at org.junit.rules.RunRules.evaluate(RunRules.java:20)

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff.
  • Public documentation issue/PR created.

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.

…rade to 2.25.3

Signed-off-by: Craig Perkins <cwperx@amazon.com>
@cwperks
Copy link
Copy Markdown
Member Author

cwperks commented Dec 24, 2025

Superseded by opensearch-project/OpenSearch#20320. It would be better to get this done in the core IMO.

@dbwiddis
Copy link
Copy Markdown
Member

Closing as the core PR has resolved this issue

@dbwiddis dbwiddis closed this Dec 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants