Excellent! Glad to learn I was just "behind" and you got the help you were looking for. Thanks for the contribution!
Jason On Wed, Jun 10, 2026 at 12:05 AM Aaron Dockter <[email protected]> wrote: > > Jason, > > Thanks! Yeah, no problem at all. The bug was indeed filed and promptly > fixed: > [SOLR-18239] `ObjectSizeEstimator.primitiveEstimate()` calls `obj.getClass()` > without checking if `obj` is null - ASF Jira > > Cheers, > > Aaron > ________________________________ > From: Jason Gerlowski <[email protected]> > Sent: Friday, June 5, 2026 9:06 AM > To: [email protected] <[email protected]> > Cc: Aaron Dockter <[email protected]> > Subject: Re: NullPointerException in > MirroringUpdateProcessor.ObjectSizeEstimator when SolrInputDocument contains > null field values > > CAUTION: This is an EXTERNAL email. Please do not click any links or open > attachments unless you recognize the sender and know the content is safe. > > > Hey Aaron, > > Agreed that it sounds like a bug! We should probably be more > defensive in that code. If you haven't ready, are you willing to file > a JIRA ticket for this please? > > Thanks for surfacing this and sorry for the delayed reply. > > Best, > > Jason > > On Fri, May 8, 2026 at 11:19 PM Aaron Dockter via dev > <[email protected]> wrote: > > > > Hi all, > > I'm new to the community, but I have found, what I believe to be, a bug in > > the cross-dc module's MirroringUpdateProcessor.ObjectSizeEstimator that > > causes a NullPointerException during cross-DC replication when indexing > > documents containing fields with null values. Before I log a Jira ticket, > > just wanted to throw this out there... > > > > Problem Description > > When using Solr's cross-DC replication feature, indexing operations fail > > with a NullPointerException in > > MirroringUpdateProcessor.ObjectSizeEstimator.primitiveEstimate(). The error > > occurs when a SolrInputDocument contains a field explicitly set to null. > > Error Stack Trace > > > > java.lang.NullPointerException > > at > > org.apache.solr.crossdc.update.processor.MirroringUpdateProcessor$ObjectSizeEstimator.primitiveEstimate(MirroringUpdateProcessor.java:XXX) > > at > > org.apache.solr.crossdc.update.processor.MirroringUpdateProcessor$ObjectSizeEstimator.estimate(MirroringUpdateProcessor.java:XXX) > > > > Root Cause > > The primitiveEstimate(Object obj, long def) method calls obj.getClass() > > without first checking if obj is null. When a field value is null, this > > causes the NPE. > > Proposed Fix > > Add a null guard at the start of the primitiveEstimate method: > > > > java > > > > private static long primitiveEstimate(Object obj, long def) { > > if (obj == null) return def; > > Class<?> clazz = obj.getClass(); > > // ... rest of method > > } > > > > This ensures that when a field value is null, the method returns the > > default size estimate instead of attempting to introspect the class type. > > Test Case > > I've added a regression test in MirroringUpdateProcessorTest.java: > > > > java > > > > @Test > > public void testObjectSizeEstimatorWithNullFieldValue() { > > SolrInputDocument doc = new SolrInputDocument(); > > doc.addField("id", "test"); > > doc.addField("nullField", null); > > long size = MirroringUpdateProcessor.ObjectSizeEstimator.estimate(doc); > > assertTrue("size should be non-negative", size >= 0); > > } > > > > Files Changed > > > > * > > solr/modules/cross-dc/src/java/org/apache/solr/crossdc/update/processor/MirroringUpdateProcessor.java > > * > > solr/modules/cross-dc/src/test/org/apache/solr/crossdc/update/processor/MirroringUpdateProcessorTest.java > > > > Solr Version > > This issue affects the cross-dc module in the Solr codebase (version 9.x > > branch). > > Would someone from the Solr team be able to review this fix? I'm happy to > > submit a pull request if this approach is acceptable. > > Thank you for your time and consideration. > > Best regards, > > Aaron Dockter > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
