lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Noble Paul (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (SOLR-13347) Error writing Transaction log for UUIDField
Date Sun, 02 Jun 2019 01:32:00 GMT

    [ https://issues.apache.org/jira/browse/SOLR-13347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16853856#comment-16853856
] 

Noble Paul edited comment on SOLR-13347 at 6/2/19 1:31 AM:
-----------------------------------------------------------

I would like to know if the patch I just submitted fix the problem. If it does not , we will
see investigate this further.

Let me explain why adding new types is a problem

JavabinCodec is a public format using which users can send data to Solr. Whereas TransactionLog
is something Solr internally uses. When we add a new type to JavabinCodec,
 * it is a backward incompatible change. New clients can't talk to old Solr 
 * Also rolling restarts can fail because the same cluster will contain old a mix of Solr
versions and internode communication can fail when there is a format incompatibility. This
requires special instructions on how to upgrade between versions. We have been bitten by tjis
a few times in the past
 * It also creates problems with compatibility with other formats. i.e. I cans send a UUID
using native format using javabin, but when I'm using json/XML it has to use String. This
requires special handling in Solr to handle data that is coming in as native object vs. String.
So, we are introducing special cases everywhere

I'm OK with having a new type if it is limited to TransactionLog because it is used internally
only. We can do whatever we want .

 


was (Author: noble.paul):
I would like to know if the patch I just submitted fix the problem. If it does not , we will
see investigate this further.

Let me explain why adding new types is a problem

JavabinCodec is a public format using which users can send data to Solr. Whereas TransactionLog
is something Solr internally uses. When we add a new type to JavabinCodec,
 * it is a backward incompatible change. (new clients can't talk to old Solr ) 
 * It also creates problems with compatibility with other formats. i.e. I cans send a UUID
using native format using javabin, but when I'm using json/XML it has to use String. This
requires special handling in Solr to handle data that is coming in as native object vs. String.
So, we are introducing special cases everywhere

I'm OK with having a new type if it is limited to TransactionLog because it is used internally
only. We can do whatever we want .

 

> Error writing Transaction log for UUIDField
> -------------------------------------------
>
>                 Key: SOLR-13347
>                 URL: https://issues.apache.org/jira/browse/SOLR-13347
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: Server
>    Affects Versions: 7.7, 7.7.1, 8.0
>            Reporter: Thomas Wöckinger
>            Priority: Major
>              Labels: pull-request-available, ready-to-commit, test
>         Attachments: SOLR-13347.patch
>
>          Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> When using Atomic Update, adding a value leads to following Exception
> org.apache.solr.common.SolrException: TransactionLog doesn't know how to serialize class
java.util.UUID; try implementing ObjectResolver?
>     at org.apache.solr.update.TransactionLog$1.resolve(TransactionLog.java:100)
>     at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:263)
>     at org.apache.solr.common.util.JavaBinCodec.writeArray(JavaBinCodec.java:770)
>     at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:369)
>     at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:362)
>     at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:252)
>     at org.apache.solr.common.util.JavaBinCodec$BinEntryWriter.put(JavaBinCodec.java:437)
>     at org.apache.solr.common.MapWriter$EntryWriter.putNoEx(MapWriter.java:100)
>     at org.apache.solr.common.MapWriter$EntryWriter.lambda$getBiConsumer$0(MapWriter.java:160)
>     at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
>     at org.apache.solr.common.SolrInputDocument.writeMap(SolrInputDocument.java:51)
>     at org.apache.solr.common.util.JavaBinCodec.writeSolrInputDocument(JavaBinCodec.java:657)
>     at org.apache.solr.update.TransactionLog.write(TransactionLog.java:371)
>     at org.apache.solr.update.UpdateLog.add(UpdateLog.java:573)
>     at org.apache.solr.update.UpdateLog.add(UpdateLog.java:552)
>     at org.apache.solr.update.DirectUpdateHandler2.doNormalUpdate(DirectUpdateHandler2.java:351)
>     at org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:289)
>     at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:236)
>     at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:76)
>     at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
>     at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:995)
>     at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:1216)
>     at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:700)
>     at org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:103)
>     at org.apache.solr.handler.loader.JavabinLoader$1.update(JavabinLoader.java:110)
>     at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$StreamingCodec.readOuterMostDocIterator(JavaBinUpdateRequestCodec.java:327)
>     at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$StreamingCodec.readIterator(JavaBinUpdateRequestCodec.java:280)
>     at org.apache.solr.common.util.JavaBinCodec.readObject(JavaBinCodec.java:335)
>     at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:280)
>     at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$StreamingCodec.readNamedList(JavaBinUpdateRequestCodec.java:235)
>     at org.apache.solr.common.util.JavaBinCodec.readObject(JavaBinCodec.java:300)
>     at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:280)
>     at org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:193)
>     at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec.unmarshal(JavaBinUpdateRequestCodec.java:126)
>     at org.apache.solr.handler.loader.JavabinLoader.parseAndLoadDocs(JavabinLoader.java:123)
>     at org.apache.solr.handler.loader.JavabinLoader.load(JavabinLoader.java:70)
>     at org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:97)
>     at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)
>     at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
>     at org.apache.solr.core.SolrCore.execute(SolrCore.java:2559)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message