From 582fc0737013d770560936de6fb82d6fc6bdab00 Mon Sep 17 00:00:00 2001 From: Yonik Seeley Date: Thu, 30 Dec 2010 18:27:27 +0000 Subject: [PATCH] SOLR-1930: add SolrQueryRequest to UpdateCommand git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1053965 13f79535-47bb-0310-9956-ffa450edef68 --- .../dataimport/TestMailEntityProcessor.java | 2 +- .../handler/dataimport/DataImportHandler.java | 6 +- .../solr/handler/dataimport/SolrWriter.java | 21 +- .../handler/dataimport/TestDocBuilder.java | 2 +- .../extraction/ExtractingDocumentLoader.java | 2 +- .../handler/BinaryUpdateRequestHandler.java | 16 +- .../solr/handler/CSVRequestHandler.java | 2 +- .../handler/ContentStreamHandlerBase.java | 6 +- .../org/apache/solr/handler/JsonLoader.java | 26 +-- .../solr/handler/RequestHandlerUtils.java | 10 +- .../org/apache/solr/handler/SnapPuller.java | 33 +-- .../org/apache/solr/handler/XMLLoader.java | 16 +- .../solr/handler/XmlUpdateRequestHandler.java | 2 +- .../solr/handler/admin/CoreAdminHandler.java | 2 +- .../apache/solr/update/AddUpdateCommand.java | 8 +- .../solr/update/CommitUpdateCommand.java | 7 +- .../solr/update/DeleteUpdateCommand.java | 7 +- .../solr/update/DirectUpdateHandler2.java | 8 +- .../solr/update/MergeIndexesCommand.java | 9 +- .../solr/update/RollbackUpdateCommand.java | 6 +- .../org/apache/solr/update/UpdateCommand.java | 8 +- .../apache/solr/handler/JsonLoaderTest.java | 16 +- .../apache/solr/search/TestSearchPerf.java | 2 +- .../DirectUpdateHandlerOptimizeTest.java | 10 +- .../solr/update/DirectUpdateHandlerTest.java | 203 +++++------------- .../solr/update/TestIndexingPerformance.java | 4 +- 26 files changed, 195 insertions(+), 239 deletions(-) diff --git a/solr/contrib/dataimporthandler/src/extras/test/java/org/apache/solr/handler/dataimport/TestMailEntityProcessor.java b/solr/contrib/dataimporthandler/src/extras/test/java/org/apache/solr/handler/dataimport/TestMailEntityProcessor.java index cbb898d14fd..8a1f1083d4e 100644 --- a/solr/contrib/dataimporthandler/src/extras/test/java/org/apache/solr/handler/dataimport/TestMailEntityProcessor.java +++ b/solr/contrib/dataimporthandler/src/extras/test/java/org/apache/solr/handler/dataimport/TestMailEntityProcessor.java @@ -188,7 +188,7 @@ public class TestMailEntityProcessor extends AbstractDataImportHandlerTestCase { Boolean commitCalled; public SolrWriterImpl() { - super(null, "."); + super(null, ".", null); } public boolean upload(SolrInputDocument doc) { diff --git a/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java b/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java index e813e4e3460..fea8532f186 100644 --- a/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java +++ b/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java @@ -194,7 +194,7 @@ public class DataImportHandler extends RequestHandlerBase implements req.getCore().getUpdateProcessingChain(params.get(UpdateParams.UPDATE_PROCESSOR)); UpdateRequestProcessor processor = processorChain.createProcessor(req, rsp); SolrResourceLoader loader = req.getCore().getResourceLoader(); - SolrWriter sw = getSolrWriter(processor, loader, requestParams); + SolrWriter sw = getSolrWriter(processor, loader, requestParams, req); if (requestParams.debug) { if (debugEnabled) { @@ -276,9 +276,9 @@ public class DataImportHandler extends RequestHandlerBase implements } private SolrWriter getSolrWriter(final UpdateRequestProcessor processor, - final SolrResourceLoader loader, final DataImporter.RequestParams requestParams) { + final SolrResourceLoader loader, final DataImporter.RequestParams requestParams, SolrQueryRequest req) { - return new SolrWriter(processor, loader.getConfigDir(), myName) { + return new SolrWriter(processor, loader.getConfigDir(), myName, req) { @Override public boolean upload(SolrInputDocument document) { diff --git a/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java b/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java index f2d378c4909..c342427a994 100644 --- a/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java +++ b/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java @@ -17,6 +17,7 @@ package org.apache.solr.handler.dataimport; import org.apache.solr.common.SolrInputDocument; +import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.CommitUpdateCommand; import org.apache.solr.update.DeleteUpdateCommand; @@ -51,21 +52,25 @@ public class SolrWriter { DebugLogger debugLogger; - public SolrWriter(UpdateRequestProcessor processor, String confDir) { + SolrQueryRequest req; + + public SolrWriter(UpdateRequestProcessor processor, String confDir, SolrQueryRequest req) { this.processor = processor; configDir = confDir; + this.req = req; } - public SolrWriter(UpdateRequestProcessor processor, String confDir, String filePrefix) { + public SolrWriter(UpdateRequestProcessor processor, String confDir, String filePrefix, SolrQueryRequest req) { this.processor = processor; configDir = confDir; if(filePrefix != null){ persistFilename = filePrefix+".properties"; } + this.req = req; } public boolean upload(SolrInputDocument d) { try { - AddUpdateCommand command = new AddUpdateCommand(); + AddUpdateCommand command = new AddUpdateCommand(req); command.solrDoc = d; processor.processAdd(command); } catch (Exception e) { @@ -79,7 +84,7 @@ public class SolrWriter { public void deleteDoc(Object id) { try { log.info("Deleting document: " + id); - DeleteUpdateCommand delCmd = new DeleteUpdateCommand(); + DeleteUpdateCommand delCmd = new DeleteUpdateCommand(req); delCmd.id = id.toString(); processor.processDelete(delCmd); } catch (IOException e) { @@ -153,7 +158,7 @@ public class SolrWriter { public void deleteByQuery(String query) { try { log.info("Deleting documents from Solr with query: " + query); - DeleteUpdateCommand delCmd = new DeleteUpdateCommand(); + DeleteUpdateCommand delCmd = new DeleteUpdateCommand(req); delCmd.query = query; processor.processDelete(delCmd); } catch (IOException e) { @@ -163,7 +168,7 @@ public class SolrWriter { public void commit(boolean optimize) { try { - CommitUpdateCommand commit = new CommitUpdateCommand(optimize); + CommitUpdateCommand commit = new CommitUpdateCommand(req,optimize); processor.processCommit(commit); } catch (Throwable t) { log.error("Exception while solr commit.", t); @@ -172,7 +177,7 @@ public class SolrWriter { public void rollback() { try { - RollbackUpdateCommand rollback = new RollbackUpdateCommand(); + RollbackUpdateCommand rollback = new RollbackUpdateCommand(req); processor.processRollback(rollback); } catch (Throwable t) { log.error("Exception while solr rollback.", t); @@ -181,7 +186,7 @@ public class SolrWriter { public void doDeleteAll() { try { - DeleteUpdateCommand deleteCommand = new DeleteUpdateCommand(); + DeleteUpdateCommand deleteCommand = new DeleteUpdateCommand(req); deleteCommand.query = "*:*"; processor.processDelete(deleteCommand); } catch (IOException e) { diff --git a/solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java b/solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java index d90f0a65d7c..e9947e52e76 100644 --- a/solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java +++ b/solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java @@ -197,7 +197,7 @@ public class TestDocBuilder extends AbstractDataImportHandlerTestCase { Boolean finishCalled = Boolean.FALSE; public SolrWriterImpl() { - super(null, "."); + super(null, ".",null); } public boolean upload(SolrInputDocument doc) { diff --git a/solr/contrib/extraction/src/main/java/org/apache/solr/handler/extraction/ExtractingDocumentLoader.java b/solr/contrib/extraction/src/main/java/org/apache/solr/handler/extraction/ExtractingDocumentLoader.java index 87cc337f199..a08967dfcc6 100644 --- a/solr/contrib/extraction/src/main/java/org/apache/solr/handler/extraction/ExtractingDocumentLoader.java +++ b/solr/contrib/extraction/src/main/java/org/apache/solr/handler/extraction/ExtractingDocumentLoader.java @@ -89,7 +89,7 @@ public class ExtractingDocumentLoader extends ContentStreamLoader { this.config = config; this.processor = processor; - templateAdd = new AddUpdateCommand(); + templateAdd = new AddUpdateCommand(req); templateAdd.overwrite = params.getBool(UpdateParams.OVERWRITE, true); //this is lightweight diff --git a/solr/src/java/org/apache/solr/handler/BinaryUpdateRequestHandler.java b/solr/src/java/org/apache/solr/handler/BinaryUpdateRequestHandler.java index cc229f0464f..e098a5ffb2b 100644 --- a/solr/src/java/org/apache/solr/handler/BinaryUpdateRequestHandler.java +++ b/solr/src/java/org/apache/solr/handler/BinaryUpdateRequestHandler.java @@ -62,7 +62,7 @@ public class BinaryUpdateRequestHandler extends ContentStreamHandlerBase { }; } - private void parseAndLoadDocs(SolrQueryRequest req, SolrQueryResponse rsp, InputStream stream, + private void parseAndLoadDocs(final SolrQueryRequest req, SolrQueryResponse rsp, InputStream stream, final UpdateRequestProcessor processor) throws IOException { UpdateRequest update = null; update = new JavaBinUpdateRequestCodec().unmarshal(stream, @@ -71,7 +71,7 @@ public class BinaryUpdateRequestHandler extends ContentStreamHandlerBase { public void document(SolrInputDocument document, UpdateRequest updateRequest) { if (addCmd == null) { - addCmd = getAddCommand(updateRequest.getParams()); + addCmd = getAddCommand(req, updateRequest.getParams()); } addCmd.solrDoc = document; try { @@ -83,25 +83,25 @@ public class BinaryUpdateRequestHandler extends ContentStreamHandlerBase { } }); if (update.getDeleteById() != null) { - delete(update.getDeleteById(), processor, true); + delete(req, update.getDeleteById(), processor, true); } if (update.getDeleteQuery() != null) { - delete(update.getDeleteQuery(), processor, false); + delete(req, update.getDeleteQuery(), processor, false); } } - private AddUpdateCommand getAddCommand(SolrParams params) { - AddUpdateCommand addCmd = new AddUpdateCommand(); + private AddUpdateCommand getAddCommand(SolrQueryRequest req, SolrParams params) { + AddUpdateCommand addCmd = new AddUpdateCommand(req); addCmd.overwrite = params.getBool(UpdateParams.OVERWRITE, true); addCmd.commitWithin = params.getInt(COMMIT_WITHIN, -1); return addCmd; } - private void delete(List l, UpdateRequestProcessor processor, boolean isId) throws IOException { + private void delete(SolrQueryRequest req, List l, UpdateRequestProcessor processor, boolean isId) throws IOException { for (String s : l) { - DeleteUpdateCommand delcmd = new DeleteUpdateCommand(); + DeleteUpdateCommand delcmd = new DeleteUpdateCommand(req); if (isId) { delcmd.id = s; } else { diff --git a/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java b/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java index 9138e1aac77..823b4502017 100755 --- a/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java +++ b/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java @@ -185,7 +185,7 @@ abstract class CSVLoader extends ContentStreamLoader { this.params = req.getParams(); schema = req.getSchema(); - templateAdd = new AddUpdateCommand(); + templateAdd = new AddUpdateCommand(req); templateAdd.overwrite=params.getBool(OVERWRITE,true); strategy = new CSVStrategy(',', '"', CSVStrategy.COMMENTS_DISABLED, CSVStrategy.ESCAPE_DISABLED, false, false, false, true); diff --git a/solr/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java b/solr/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java index af2a6c3bd35..f47dfa6fb21 100644 --- a/solr/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java +++ b/solr/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java @@ -45,7 +45,7 @@ public abstract class ContentStreamHandlerBase extends RequestHandlerBase { Iterable streams = req.getContentStreams(); if (streams == null) { - if (!RequestHandlerUtils.handleCommit(processor, params, false) && !RequestHandlerUtils.handleRollback(processor, params, false)) { + if (!RequestHandlerUtils.handleCommit(req, processor, params, false) && !RequestHandlerUtils.handleRollback(req, processor, params, false)) { throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "missing content stream"); } } else { @@ -55,8 +55,8 @@ public abstract class ContentStreamHandlerBase extends RequestHandlerBase { } // Perhaps commit from the parameters - RequestHandlerUtils.handleCommit(processor, params, false); - RequestHandlerUtils.handleRollback(processor, params, false); + RequestHandlerUtils.handleCommit(req, processor, params, false); + RequestHandlerUtils.handleRollback(req, processor, params, false); } } finally { // finish the request diff --git a/solr/src/java/org/apache/solr/handler/JsonLoader.java b/solr/src/java/org/apache/solr/handler/JsonLoader.java index cfaed61263d..b96430bcd0c 100644 --- a/solr/src/java/org/apache/solr/handler/JsonLoader.java +++ b/solr/src/java/org/apache/solr/handler/JsonLoader.java @@ -62,14 +62,14 @@ class JsonLoader extends ContentStreamLoader { } JSONParser parser = new JSONParser(reader); - this.processUpdate(processor, parser); + this.processUpdate(req, processor, parser); } finally { IOUtils.closeQuietly(reader); } } - void processUpdate(UpdateRequestProcessor processor, JSONParser parser) throws IOException + void processUpdate(SolrQueryRequest req, UpdateRequestProcessor processor, JSONParser parser) throws IOException { int ev = parser.nextEvent(); while( ev != JSONParser.EOF ) { @@ -80,25 +80,25 @@ class JsonLoader extends ContentStreamLoader { if( parser.wasKey() ) { String v = parser.getString(); if( v.equals( XmlUpdateRequestHandler.ADD ) ) { - processor.processAdd( parseAdd( parser ) ); + processor.processAdd( parseAdd(req, parser ) ); } else if( v.equals( XmlUpdateRequestHandler.COMMIT ) ) { - CommitUpdateCommand cmd = new CommitUpdateCommand( false ); + CommitUpdateCommand cmd = new CommitUpdateCommand(req, false ); cmd.waitFlush = cmd.waitSearcher = true; parseCommitOptions( parser, cmd ); processor.processCommit( cmd ); } else if( v.equals( XmlUpdateRequestHandler.OPTIMIZE ) ) { - CommitUpdateCommand cmd = new CommitUpdateCommand( true ); + CommitUpdateCommand cmd = new CommitUpdateCommand(req, true ); cmd.waitFlush = cmd.waitSearcher = true; parseCommitOptions( parser, cmd ); processor.processCommit( cmd ); } else if( v.equals( XmlUpdateRequestHandler.DELETE ) ) { - processor.processDelete( parseDelete( parser ) ); + processor.processDelete( parseDelete(req, parser ) ); } else if( v.equals( XmlUpdateRequestHandler.ROLLBACK ) ) { - processor.processRollback( parseRollback( parser ) ); + processor.processRollback( parseRollback(req, parser ) ); } else { throw new IOException( "Unknown command: "+v+" ["+parser.getPosition()+"]" ); @@ -129,10 +129,10 @@ class JsonLoader extends ContentStreamLoader { } } - DeleteUpdateCommand parseDelete(JSONParser js) throws IOException { + DeleteUpdateCommand parseDelete(SolrQueryRequest req, JSONParser js) throws IOException { assertNextEvent( js, JSONParser.OBJECT_START ); - DeleteUpdateCommand cmd = new DeleteUpdateCommand(); + DeleteUpdateCommand cmd = new DeleteUpdateCommand(req); while( true ) { int ev = js.nextEvent(); @@ -169,10 +169,10 @@ class JsonLoader extends ContentStreamLoader { } } - RollbackUpdateCommand parseRollback(JSONParser js) throws IOException { + RollbackUpdateCommand parseRollback(SolrQueryRequest req, JSONParser js) throws IOException { assertNextEvent( js, JSONParser.OBJECT_START ); assertNextEvent( js, JSONParser.OBJECT_END ); - return new RollbackUpdateCommand(); + return new RollbackUpdateCommand(req); } void parseCommitOptions( JSONParser js, CommitUpdateCommand cmd ) throws IOException @@ -211,10 +211,10 @@ class JsonLoader extends ContentStreamLoader { } } - AddUpdateCommand parseAdd( JSONParser js ) throws IOException + AddUpdateCommand parseAdd(SolrQueryRequest req, JSONParser js ) throws IOException { assertNextEvent( js, JSONParser.OBJECT_START ); - AddUpdateCommand cmd = new AddUpdateCommand(); + AddUpdateCommand cmd = new AddUpdateCommand(req); float boost = 1.0f; while( true ) { diff --git a/solr/src/java/org/apache/solr/handler/RequestHandlerUtils.java b/solr/src/java/org/apache/solr/handler/RequestHandlerUtils.java index 0ec141f837d..34eb84ed26e 100755 --- a/solr/src/java/org/apache/solr/handler/RequestHandlerUtils.java +++ b/solr/src/java/org/apache/solr/handler/RequestHandlerUtils.java @@ -65,7 +65,7 @@ public class RequestHandlerUtils boolean commit = params.getBool( UpdateParams.COMMIT, false ); if( optimize || commit || force ) { - CommitUpdateCommand cmd = new CommitUpdateCommand( optimize ); + CommitUpdateCommand cmd = new CommitUpdateCommand(req, optimize ); cmd.waitFlush = params.getBool( UpdateParams.WAIT_FLUSH, cmd.waitFlush ); cmd.waitSearcher = params.getBool( UpdateParams.WAIT_SEARCHER, cmd.waitSearcher ); cmd.expungeDeletes = params.getBool( UpdateParams.EXPUNGE_DELETES, cmd.expungeDeletes); @@ -89,7 +89,7 @@ public class RequestHandlerUtils * Check the request parameters and decide if it should commit or optimize. * If it does, it will check parameters for "waitFlush" and "waitSearcher" */ - public static boolean handleCommit( UpdateRequestProcessor processor, SolrParams params, boolean force ) throws IOException + public static boolean handleCommit(SolrQueryRequest req, UpdateRequestProcessor processor, SolrParams params, boolean force ) throws IOException { if( params == null ) { params = new MapSolrParams( new HashMap() ); @@ -99,7 +99,7 @@ public class RequestHandlerUtils boolean commit = params.getBool( UpdateParams.COMMIT, false ); if( optimize || commit || force ) { - CommitUpdateCommand cmd = new CommitUpdateCommand( optimize ); + CommitUpdateCommand cmd = new CommitUpdateCommand(req, optimize ); cmd.waitFlush = params.getBool( UpdateParams.WAIT_FLUSH, cmd.waitFlush ); cmd.waitSearcher = params.getBool( UpdateParams.WAIT_SEARCHER, cmd.waitSearcher ); cmd.expungeDeletes = params.getBool( UpdateParams.EXPUNGE_DELETES, cmd.expungeDeletes); @@ -113,7 +113,7 @@ public class RequestHandlerUtils /** * @since Solr 1.4 */ - public static boolean handleRollback( UpdateRequestProcessor processor, SolrParams params, boolean force ) throws IOException + public static boolean handleRollback(SolrQueryRequest req, UpdateRequestProcessor processor, SolrParams params, boolean force ) throws IOException { if( params == null ) { params = new MapSolrParams( new HashMap() ); @@ -122,7 +122,7 @@ public class RequestHandlerUtils boolean rollback = params.getBool( UpdateParams.ROLLBACK, false ); if( rollback || force ) { - RollbackUpdateCommand cmd = new RollbackUpdateCommand(); + RollbackUpdateCommand cmd = new RollbackUpdateCommand(req); processor.processRollback( cmd ); return true; } diff --git a/solr/src/java/org/apache/solr/handler/SnapPuller.java b/solr/src/java/org/apache/solr/handler/SnapPuller.java index 38e6cac25f3..9af131fd1c4 100644 --- a/solr/src/java/org/apache/solr/handler/SnapPuller.java +++ b/solr/src/java/org/apache/solr/handler/SnapPuller.java @@ -22,12 +22,16 @@ import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.io.IOUtils; import org.apache.lucene.index.IndexCommit; import org.apache.solr.common.SolrException; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.FastInputStream; import org.apache.solr.common.util.JavaBinCodec; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.FileUtils; import org.apache.solr.core.SolrCore; import static org.apache.solr.handler.ReplicationHandler.*; + +import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.update.CommitUpdateCommand; import org.apache.solr.update.DirectUpdateHandler2; @@ -461,18 +465,23 @@ public class SnapPuller { } private void doCommit() throws IOException { - CommitUpdateCommand cmd = new CommitUpdateCommand(false); - cmd.waitFlush = true; - cmd.waitSearcher = true; - solrCore.getUpdateHandler().commit(cmd); - if (solrCore.getUpdateHandler() instanceof DirectUpdateHandler2) { - LOG.info("Force open index writer to make sure older index files get deleted"); - DirectUpdateHandler2 handler = (DirectUpdateHandler2) solrCore.getUpdateHandler(); - handler.forceOpenWriter(); - replicationHandler.refreshCommitpoint(); - } else { - LOG.warn("The update handler is not an instance or sub-class of DirectUpdateHandler2. " + - "ReplicationHandler may not be able to cleanup un-used index files."); + SolrQueryRequest req = new LocalSolrQueryRequest(solrCore, new ModifiableSolrParams()); + try { + CommitUpdateCommand cmd = new CommitUpdateCommand(req, false); + cmd.waitFlush = true; + cmd.waitSearcher = true; + solrCore.getUpdateHandler().commit(cmd); + if (solrCore.getUpdateHandler() instanceof DirectUpdateHandler2) { + LOG.info("Force open index writer to make sure older index files get deleted"); + DirectUpdateHandler2 handler = (DirectUpdateHandler2) solrCore.getUpdateHandler(); + handler.forceOpenWriter(); + replicationHandler.refreshCommitpoint(); + } else { + LOG.warn("The update handler is not an instance or sub-class of DirectUpdateHandler2. " + + "ReplicationHandler may not be able to cleanup un-used index files."); + } + } finally { + req.close(); } } diff --git a/solr/src/java/org/apache/solr/handler/XMLLoader.java b/solr/src/java/org/apache/solr/handler/XMLLoader.java index f064b65a486..47c370aaa0f 100644 --- a/solr/src/java/org/apache/solr/handler/XMLLoader.java +++ b/solr/src/java/org/apache/solr/handler/XMLLoader.java @@ -66,7 +66,7 @@ class XMLLoader extends ContentStreamLoader { } XMLStreamReader parser = inputFactory.createXMLStreamReader(reader); - this.processUpdate(processor, parser); + this.processUpdate(req, processor, parser); } catch (XMLStreamException e) { throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e.getMessage(), e); @@ -81,7 +81,7 @@ class XMLLoader extends ContentStreamLoader { /** * @since solr 1.2 */ - void processUpdate(UpdateRequestProcessor processor, XMLStreamReader parser) + void processUpdate(SolrQueryRequest req, UpdateRequestProcessor processor, XMLStreamReader parser) throws XMLStreamException, IOException, FactoryConfigurationError, InstantiationException, IllegalAccessException, TransformerConfigurationException { @@ -98,7 +98,7 @@ class XMLLoader extends ContentStreamLoader { if (currTag.equals(XmlUpdateRequestHandler.ADD)) { XmlUpdateRequestHandler.log.trace("SolrCore.update(add)"); - addCmd = new AddUpdateCommand(); + addCmd = new AddUpdateCommand(req); for (int i = 0; i < parser.getAttributeCount(); i++) { String attrName = parser.getAttributeLocalName(i); @@ -120,7 +120,7 @@ class XMLLoader extends ContentStreamLoader { } else if (XmlUpdateRequestHandler.COMMIT.equals(currTag) || XmlUpdateRequestHandler.OPTIMIZE.equals(currTag)) { XmlUpdateRequestHandler.log.trace("parsing " + currTag); - CommitUpdateCommand cmd = new CommitUpdateCommand(XmlUpdateRequestHandler.OPTIMIZE.equals(currTag)); + CommitUpdateCommand cmd = new CommitUpdateCommand(req, XmlUpdateRequestHandler.OPTIMIZE.equals(currTag)); boolean sawWaitSearcher = false, sawWaitFlush = false; for (int i = 0; i < parser.getAttributeCount(); i++) { @@ -151,13 +151,13 @@ class XMLLoader extends ContentStreamLoader { else if (XmlUpdateRequestHandler.ROLLBACK.equals(currTag)) { XmlUpdateRequestHandler.log.trace("parsing " + currTag); - RollbackUpdateCommand cmd = new RollbackUpdateCommand(); + RollbackUpdateCommand cmd = new RollbackUpdateCommand(req); processor.processRollback(cmd); } // end rollback else if (XmlUpdateRequestHandler.DELETE.equals(currTag)) { XmlUpdateRequestHandler.log.trace("parsing delete"); - processDelete(processor, parser); + processDelete(req, processor, parser); } // end delete break; } @@ -167,9 +167,9 @@ class XMLLoader extends ContentStreamLoader { /** * @since solr 1.3 */ - void processDelete(UpdateRequestProcessor processor, XMLStreamReader parser) throws XMLStreamException, IOException { + void processDelete(SolrQueryRequest req, UpdateRequestProcessor processor, XMLStreamReader parser) throws XMLStreamException, IOException { // Parse the command - DeleteUpdateCommand deleteCmd = new DeleteUpdateCommand(); + DeleteUpdateCommand deleteCmd = new DeleteUpdateCommand(req); for (int i = 0; i < parser.getAttributeCount(); i++) { String attrName = parser.getAttributeLocalName(i); diff --git a/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java b/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java index 39c3c5b1331..c86f7fafbf5 100644 --- a/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java +++ b/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java @@ -109,7 +109,7 @@ public class XmlUpdateRequestHandler extends ContentStreamHandlerBase { XMLStreamReader parser = inputFactory.createXMLStreamReader(input); UpdateRequestProcessor processor = processorFactory.createProcessor(req, rsp); XMLLoader loader = (XMLLoader) newLoader(req, processor); - loader.processUpdate(processor, parser); + loader.processUpdate(req, processor, parser); processor.finish(); output.write(""); } diff --git a/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java index c17a1f0a450..39dc8cd136a 100644 --- a/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java +++ b/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java @@ -194,7 +194,7 @@ public class CoreAdminHandler extends RequestHandlerBase { wrappedReq = new LocalSolrQueryRequest(core, req.getParams()); UpdateRequestProcessor processor = processorChain.createProcessor(wrappedReq, rsp); - processor.processMergeIndexes(new MergeIndexesCommand(dirs)); + processor.processMergeIndexes(new MergeIndexesCommand(dirs, req)); } finally { core.close(); wrappedReq.close(); diff --git a/solr/src/java/org/apache/solr/update/AddUpdateCommand.java b/solr/src/java/org/apache/solr/update/AddUpdateCommand.java index d511c94d9f6..84632ee0b39 100644 --- a/solr/src/java/org/apache/solr/update/AddUpdateCommand.java +++ b/solr/src/java/org/apache/solr/update/AddUpdateCommand.java @@ -22,6 +22,7 @@ import org.apache.lucene.document.Field; import org.apache.lucene.index.Term; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.SolrInputField; +import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.schema.IndexSchema; import org.apache.solr.schema.SchemaField; @@ -45,6 +46,9 @@ public class AddUpdateCommand extends UpdateCommand { public Term updateTerm; public int commitWithin = -1; + public AddUpdateCommand(SolrQueryRequest req) { + super("add", req); + } /** Reset state to reuse this object with a different document in the same request */ public void clear() { @@ -103,10 +107,6 @@ public class AddUpdateCommand extends UpdateCommand { return "(null)"; } - public AddUpdateCommand() { - super("add"); - } - @Override public String toString() { StringBuilder sb = new StringBuilder(commandName); diff --git a/solr/src/java/org/apache/solr/update/CommitUpdateCommand.java b/solr/src/java/org/apache/solr/update/CommitUpdateCommand.java index 7597087538c..8d33e0280b1 100644 --- a/solr/src/java/org/apache/solr/update/CommitUpdateCommand.java +++ b/solr/src/java/org/apache/solr/update/CommitUpdateCommand.java @@ -16,6 +16,9 @@ */ package org.apache.solr.update; + +import org.apache.solr.request.SolrQueryRequest; + /** * @version $Id$ */ @@ -32,8 +35,8 @@ public class CommitUpdateCommand extends UpdateCommand { */ public int maxOptimizeSegments = 1; - public CommitUpdateCommand(boolean optimize) { - super("commit"); + public CommitUpdateCommand(SolrQueryRequest req, boolean optimize) { + super("commit", req); this.optimize=optimize; } public String toString() { diff --git a/solr/src/java/org/apache/solr/update/DeleteUpdateCommand.java b/solr/src/java/org/apache/solr/update/DeleteUpdateCommand.java index 8b5d4a89bb2..ff2ad4764be 100644 --- a/solr/src/java/org/apache/solr/update/DeleteUpdateCommand.java +++ b/solr/src/java/org/apache/solr/update/DeleteUpdateCommand.java @@ -16,6 +16,9 @@ */ package org.apache.solr.update; + +import org.apache.solr.request.SolrQueryRequest; + /** * @version $Id$ */ @@ -23,8 +26,8 @@ public class DeleteUpdateCommand extends UpdateCommand { public String id; // external (printable) id, for delete-by-id public String query; // query string for delete-by-query - public DeleteUpdateCommand() { - super("delete"); + public DeleteUpdateCommand(SolrQueryRequest req) { + super("delete", req); } public String toString() { diff --git a/solr/src/java/org/apache/solr/update/DirectUpdateHandler2.java b/solr/src/java/org/apache/solr/update/DirectUpdateHandler2.java index 33252185eef..6f5e97137ce 100644 --- a/solr/src/java/org/apache/solr/update/DirectUpdateHandler2.java +++ b/solr/src/java/org/apache/solr/update/DirectUpdateHandler2.java @@ -43,6 +43,10 @@ import java.util.concurrent.atomic.AtomicLong; import java.io.IOException; import java.net.URL; +import org.apache.solr.common.params.ModifiableSolrParams; +import org.apache.solr.common.params.SolrParams; +import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.search.QueryParsing; import org.apache.solr.common.SolrException; import org.apache.solr.common.util.NamedList; @@ -502,8 +506,9 @@ public class DirectUpdateHandler2 extends UpdateHandler { /** This is the worker part for the ScheduledFuture **/ public synchronized void run() { long started = System.currentTimeMillis(); + SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); try { - CommitUpdateCommand command = new CommitUpdateCommand( false ); + CommitUpdateCommand command = new CommitUpdateCommand(req, false ); command.waitFlush = true; command.waitSearcher = true; //no need for command.maxOptimizeSegments = 1; since it is not optimizing @@ -516,6 +521,7 @@ public class DirectUpdateHandler2 extends UpdateHandler { } finally { pending = null; + req.close(); } // check if docs have been submitted since the commit started diff --git a/solr/src/java/org/apache/solr/update/MergeIndexesCommand.java b/solr/src/java/org/apache/solr/update/MergeIndexesCommand.java index 48b97fa7b4e..0eba124012f 100644 --- a/solr/src/java/org/apache/solr/update/MergeIndexesCommand.java +++ b/solr/src/java/org/apache/solr/update/MergeIndexesCommand.java @@ -18,6 +18,7 @@ package org.apache.solr.update; import org.apache.lucene.store.Directory; +import org.apache.solr.request.SolrQueryRequest; /** * A merge indexes command encapsulated in an object. @@ -28,12 +29,12 @@ import org.apache.lucene.store.Directory; public class MergeIndexesCommand extends UpdateCommand { public Directory[] dirs; - public MergeIndexesCommand() { - this(null); + public MergeIndexesCommand(SolrQueryRequest req) { + this(null, req); } - public MergeIndexesCommand(Directory[] dirs) { - super("mergeIndexes"); + public MergeIndexesCommand(Directory[] dirs, SolrQueryRequest req) { + super("mergeIndexes", req); this.dirs = dirs; } diff --git a/solr/src/java/org/apache/solr/update/RollbackUpdateCommand.java b/solr/src/java/org/apache/solr/update/RollbackUpdateCommand.java index 68c2a35032c..1dd12ae8bf0 100644 --- a/solr/src/java/org/apache/solr/update/RollbackUpdateCommand.java +++ b/solr/src/java/org/apache/solr/update/RollbackUpdateCommand.java @@ -17,14 +17,16 @@ package org.apache.solr.update; +import org.apache.solr.request.SolrQueryRequest; + /** * @version $Id$ * @since Solr 1.4 */ public class RollbackUpdateCommand extends UpdateCommand { - public RollbackUpdateCommand() { - super("rollback"); + public RollbackUpdateCommand(SolrQueryRequest req) { + super("rollback", req); } } diff --git a/solr/src/java/org/apache/solr/update/UpdateCommand.java b/solr/src/java/org/apache/solr/update/UpdateCommand.java index 2e60a17eddf..83e7ca99bf9 100644 --- a/solr/src/java/org/apache/solr/update/UpdateCommand.java +++ b/solr/src/java/org/apache/solr/update/UpdateCommand.java @@ -17,15 +17,19 @@ package org.apache.solr.update; +import org.apache.solr.request.SolrQueryRequest; + /** An index update command encapsulated in an object (Command pattern) * * @version $Id$ */ public class UpdateCommand { - protected String commandName; + protected final SolrQueryRequest req; + protected final String commandName; - public UpdateCommand(String commandName) { + public UpdateCommand(String commandName, SolrQueryRequest req) { + this.req = req; this.commandName = commandName; } diff --git a/solr/src/test/org/apache/solr/handler/JsonLoaderTest.java b/solr/src/test/org/apache/solr/handler/JsonLoaderTest.java index d50a78104aa..c9b280d88d4 100644 --- a/solr/src/test/org/apache/solr/handler/JsonLoaderTest.java +++ b/solr/src/test/org/apache/solr/handler/JsonLoaderTest.java @@ -23,16 +23,23 @@ import java.util.List; import org.apache.noggit.JSONParser; import org.apache.lucene.util.LuceneTestCase; +import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.SolrInputField; +import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.CommitUpdateCommand; import org.apache.solr.update.DeleteUpdateCommand; import org.apache.solr.update.RollbackUpdateCommand; import org.apache.solr.update.processor.UpdateRequestProcessor; +import org.junit.BeforeClass; -public class JsonLoaderTest extends LuceneTestCase { - +public class JsonLoaderTest extends SolrTestCaseJ4 { + @BeforeClass + public static void beforeTests() throws Exception { + initCore("solrconfig.xml","schema.xml"); + } + static String input = ("{\n" + "\n" + "'add': {\n" + @@ -73,12 +80,13 @@ public class JsonLoaderTest extends LuceneTestCase { public void testParsing() throws Exception { + SolrQueryRequest req = req(); Reader reader = new StringReader(input); BufferingRequestProcessor p = new BufferingRequestProcessor(null); JsonLoader loader = new JsonLoader( p ); - loader.processUpdate( p, new JSONParser(reader) ); + loader.processUpdate(req, p, new JSONParser(reader) ); assertEquals( 2, p.addCommands.size() ); @@ -122,6 +130,8 @@ public class JsonLoaderTest extends LuceneTestCase { // ROLLBACK COMMANDS assertEquals( 1, p.rollbackCommands.size() ); + + req.close(); } } diff --git a/solr/src/test/org/apache/solr/search/TestSearchPerf.java b/solr/src/test/org/apache/solr/search/TestSearchPerf.java index dd0a27b02b6..dde009e05f5 100755 --- a/solr/src/test/org/apache/solr/search/TestSearchPerf.java +++ b/solr/src/test/org/apache/solr/search/TestSearchPerf.java @@ -111,7 +111,7 @@ public class TestSearchPerf extends AbstractSolrTestCase { doc.addField("t10_100_ws", sb.toString()); } - AddUpdateCommand cmd = new AddUpdateCommand(); + AddUpdateCommand cmd = new AddUpdateCommand(req); cmd.solrDoc = doc; processor.processAdd(cmd); } diff --git a/solr/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java b/solr/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java index a51e82a3f54..98f92553e7d 100644 --- a/solr/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java +++ b/solr/src/test/org/apache/solr/update/DirectUpdateHandlerOptimizeTest.java @@ -19,6 +19,7 @@ package org.apache.solr.update; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.solr.core.SolrCore; +import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.util.AbstractSolrTestCase; import java.io.File; @@ -45,7 +46,8 @@ public class DirectUpdateHandlerOptimizeTest extends AbstractSolrTestCase { SolrCore core = h.getCore(); UpdateHandler updater = core.getUpdateHandler(); - AddUpdateCommand cmd = new AddUpdateCommand(); + SolrQueryRequest req = req(); + AddUpdateCommand cmd = new AddUpdateCommand(req); //add just under the merge factor, so no segments are merged //the merge factor is 100 and the maxBufferedDocs is 2, so there should be 50 segments @@ -57,7 +59,7 @@ public class DirectUpdateHandlerOptimizeTest extends AbstractSolrTestCase { updater.addDoc(cmd); } - CommitUpdateCommand cmtCmd = new CommitUpdateCommand(false); + CommitUpdateCommand cmtCmd = new CommitUpdateCommand(req, false); updater.commit(cmtCmd); updater.commit(cmtCmd); // commit twice to give systems such as windows a chance to delete the old files @@ -65,7 +67,7 @@ public class DirectUpdateHandlerOptimizeTest extends AbstractSolrTestCase { assertNumSegments(indexDir, 50); //now do an optimize - cmtCmd = new CommitUpdateCommand(true); + cmtCmd = new CommitUpdateCommand(req, true); cmtCmd.maxOptimizeSegments = 25; updater.commit(cmtCmd); updater.commit(cmtCmd); @@ -81,6 +83,8 @@ public class DirectUpdateHandlerOptimizeTest extends AbstractSolrTestCase { updater.commit(cmtCmd); updater.commit(cmtCmd); assertNumSegments(indexDir, 1); + + req.close(); } private void assertNumSegments(String indexDir, int numSegs) { diff --git a/solr/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java b/solr/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java index 7dd1132759e..832687a585a 100644 --- a/solr/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java +++ b/solr/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java @@ -53,123 +53,46 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { clearIndex(); assertU(commit()); } - + @Test - public void testRequireUniqueKey() throws Exception - { - SolrCore core = h.getCore(); - - UpdateHandler updater = core.getUpdateHandler(); - - AddUpdateCommand cmd = new AddUpdateCommand(); - + public void testRequireUniqueKey() throws Exception { // Add a valid document - cmd.doc = new Document(); - cmd.doc.add( new Field( "id", "AAA", Store.YES, Index.NOT_ANALYZED ) ); - cmd.doc.add( new Field( "subject", "xxxxx", Store.YES, Index.NOT_ANALYZED ) ); - updater.addDoc( cmd ); + assertU(adoc("id","1")); + + // More than one id should fail + assertFailedU(adoc("id","2", "id","3", "text","ignore_exception")); + + // No id should fail + assertFailedU(adoc("text","ignore_exception")); + } + + + + @Test + public void testBasics() throws Exception { + assertU(adoc("id","5")); + + // search - not committed - "5" should not be found. + assertQ(req("q","id:5"), "//*[@numFound='0']"); + + assertU(commit()); + + // now it should be there + assertQ(req("q","id:5"), "//*[@numFound='1']"); + + // now delete it + assertU(delI("5")); + + // not committed yet + assertQ(req("q","id:5"), "//*[@numFound='1']"); + + assertU(commit()); - // Add a document with multiple ids - cmd.indexedId = null; // reset the id for this add - cmd.doc = new Document(); - cmd.doc.add( new Field( "id", "AAA", Store.YES, Index.NOT_ANALYZED ) ); - cmd.doc.add( new Field( "id", "BBB", Store.YES, Index.NOT_ANALYZED ) ); - cmd.doc.add( new Field( "subject", "xxxxx", Store.YES, Index.NOT_ANALYZED ) ); - try { - updater.addDoc( cmd ); - fail( "added a document with multiple ids" ); - } - catch( SolrException ex ) { } // expected + // should be gone + assertQ(req("q","id:5"), "//*[@numFound='0']"); - // Add a document without an id - cmd.indexedId = null; // reset the id for this add - cmd.doc = new Document(); - cmd.doc.add( new Field( "subject", "xxxxx", Store.YES, Index.NOT_ANALYZED ) ); - try { - updater.addDoc( cmd ); - fail( "added a document without an ids" ); - } - catch( SolrException ex ) { } // expected } - @Test - public void testUncommit() throws Exception { - addSimpleDoc("A"); - - // search - not committed - "A" should not be found. - Map args = new HashMap(); - args.put( CommonParams.Q, "id:A" ); - args.put( "indent", "true" ); - SolrQueryRequest req = new LocalSolrQueryRequest( h.getCore(), new MapSolrParams( args) ); - assertQ("\"A\" should not be found.", req - ,"//*[@numFound='0']" - ); - } - - @Test - public void testAddCommit() throws Exception { - addSimpleDoc("A"); - - // commit "A" - SolrCore core = h.getCore(); - UpdateHandler updater = core.getUpdateHandler(); - CommitUpdateCommand cmtCmd = new CommitUpdateCommand(false); - cmtCmd.waitSearcher = true; - updater.commit(cmtCmd); - - // search - "A" should be found. - Map args = new HashMap(); - args.put( CommonParams.Q, "id:A" ); - args.put( "indent", "true" ); - SolrQueryRequest req = new LocalSolrQueryRequest( core, new MapSolrParams( args) ); - assertQ("\"A\" should be found.", req - ,"//*[@numFound='1']" - ,"//result/doc[1]/str[@name='id'][.='A']" - ); - } - - @Test - public void testDeleteCommit() throws Exception { - addSimpleDoc("A"); - addSimpleDoc("B"); - - // commit "A", "B" - SolrCore core = h.getCore(); - UpdateHandler updater = core.getUpdateHandler(); - CommitUpdateCommand cmtCmd = new CommitUpdateCommand(false); - cmtCmd.waitSearcher = true; - updater.commit(cmtCmd); - - // search - "A","B" should be found. - Map args = new HashMap(); - args.put( CommonParams.Q, "id:A OR id:B" ); - args.put( "indent", "true" ); - SolrQueryRequest req = new LocalSolrQueryRequest( core, new MapSolrParams( args) ); - assertQ("\"A\" and \"B\" should be found.", req - ,"//*[@numFound='2']" - ,"//result/doc[1]/str[@name='id'][.='A']" - ,"//result/doc[2]/str[@name='id'][.='B']" - ); - - // delete "B" - deleteSimpleDoc("B"); - - // search - "A","B" should be found. - assertQ("\"A\" and \"B\" should be found.", req - ,"//*[@numFound='2']" - ,"//result/doc[1]/str[@name='id'][.='A']" - ,"//result/doc[2]/str[@name='id'][.='B']" - ); - - // commit - updater.commit(cmtCmd); - - // search - "B" should not be found. - assertQ("\"B\" should not be found.", req - ,"//*[@numFound='1']" - ,"//result/doc[1]/str[@name='id'][.='A']" - ); - } @Test public void testAddRollback() throws Exception { @@ -177,14 +100,15 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { deleteCore(); initCore("solrconfig.xml", "schema12.xml"); - addSimpleDoc("A"); + assertU(adoc("id","A")); // commit "A" SolrCore core = h.getCore(); UpdateHandler updater = core.getUpdateHandler(); assertTrue( updater instanceof DirectUpdateHandler2 ); DirectUpdateHandler2 duh2 = (DirectUpdateHandler2)updater; - CommitUpdateCommand cmtCmd = new CommitUpdateCommand(false); + SolrQueryRequest ureq = req(); + CommitUpdateCommand cmtCmd = new CommitUpdateCommand(ureq, false); cmtCmd.waitSearcher = true; assertEquals( 1, duh2.addCommands.get() ); assertEquals( 1, duh2.addCommandsCumulative.get() ); @@ -193,11 +117,13 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { assertEquals( 0, duh2.addCommands.get() ); assertEquals( 1, duh2.addCommandsCumulative.get() ); assertEquals( 1, duh2.commitCommands.get() ); + ureq.close(); - addSimpleDoc("B"); + assertU(adoc("id","B")); // rollback "B" - RollbackUpdateCommand rbkCmd = new RollbackUpdateCommand(); + ureq = req(); + RollbackUpdateCommand rbkCmd = new RollbackUpdateCommand(ureq); assertEquals( 1, duh2.addCommands.get() ); assertEquals( 2, duh2.addCommandsCumulative.get() ); assertEquals( 0, duh2.rollbackCommands.get() ); @@ -205,6 +131,7 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { assertEquals( 0, duh2.addCommands.get() ); assertEquals( 1, duh2.addCommandsCumulative.get() ); assertEquals( 1, duh2.rollbackCommands.get() ); + ureq.close(); // search - "B" should not be found. Map args = new HashMap(); @@ -218,7 +145,7 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { // Add a doc after the rollback to make sure we can continue to add/delete documents // after a rollback as normal - addSimpleDoc("ZZZ"); + assertU(adoc("id","ZZZ")); assertU(commit()); assertQ("\"ZZZ\" must be found.", req("q", "id:ZZZ") ,"//*[@numFound='1']" @@ -232,15 +159,16 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { deleteCore(); initCore("solrconfig.xml", "schema12.xml"); - addSimpleDoc("A"); - addSimpleDoc("B"); + assertU(adoc("id","A")); + assertU(adoc("id","B")); // commit "A", "B" SolrCore core = h.getCore(); UpdateHandler updater = core.getUpdateHandler(); assertTrue( updater instanceof DirectUpdateHandler2 ); DirectUpdateHandler2 duh2 = (DirectUpdateHandler2)updater; - CommitUpdateCommand cmtCmd = new CommitUpdateCommand(false); + SolrQueryRequest ureq = req(); + CommitUpdateCommand cmtCmd = new CommitUpdateCommand(ureq, false); cmtCmd.waitSearcher = true; assertEquals( 2, duh2.addCommands.get() ); assertEquals( 2, duh2.addCommandsCumulative.get() ); @@ -249,6 +177,7 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { assertEquals( 0, duh2.addCommands.get() ); assertEquals( 2, duh2.addCommandsCumulative.get() ); assertEquals( 1, duh2.commitCommands.get() ); + ureq.close(); // search - "A","B" should be found. Map args = new HashMap(); @@ -262,8 +191,8 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { ); // delete "B" - deleteSimpleDoc("B"); - + assertU(delI("B")); + // search - "A","B" should be found. assertQ("\"A\" and \"B\" should be found.", req ,"//*[@numFound='2']" @@ -272,11 +201,13 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { ); // rollback "B" - RollbackUpdateCommand rbkCmd = new RollbackUpdateCommand(); + ureq = req(); + RollbackUpdateCommand rbkCmd = new RollbackUpdateCommand(ureq); assertEquals( 1, duh2.deleteByIdCommands.get() ); assertEquals( 1, duh2.deleteByIdCommandsCumulative.get() ); assertEquals( 0, duh2.rollbackCommands.get() ); updater.rollback(rbkCmd); + ureq.close(); assertEquals( 0, duh2.deleteByIdCommands.get() ); assertEquals( 0, duh2.deleteByIdCommandsCumulative.get() ); assertEquals( 1, duh2.rollbackCommands.get() ); @@ -290,7 +221,7 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { // Add a doc after the rollback to make sure we can continue to add/delete documents // after a rollback as normal - addSimpleDoc("ZZZ"); + assertU(adoc("id","ZZZ")); assertU(commit()); assertQ("\"ZZZ\" must be found.", req("q", "id:ZZZ") ,"//*[@numFound='1']" @@ -325,28 +256,6 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 { sr.close(); } - private void addSimpleDoc(String id) throws Exception { - SolrCore core = h.getCore(); - - UpdateHandler updater = core.getUpdateHandler(); - - AddUpdateCommand cmd = new AddUpdateCommand(); - - // Add a document - cmd.doc = new Document(); - cmd.doc.add( new Field( "id", id, Store.YES, Index.NOT_ANALYZED ) ); - updater.addDoc( cmd ); - } - - private void deleteSimpleDoc(String id) throws Exception { - SolrCore core = h.getCore(); - - UpdateHandler updater = core.getUpdateHandler(); - - // Delete the document - DeleteUpdateCommand cmd = new DeleteUpdateCommand(); - cmd.id = id; - - updater.delete(cmd); - } + + } diff --git a/solr/src/test/org/apache/solr/update/TestIndexingPerformance.java b/solr/src/test/org/apache/solr/update/TestIndexingPerformance.java index 28e50e4eba1..d2ea03a7dec 100755 --- a/solr/src/test/org/apache/solr/update/TestIndexingPerformance.java +++ b/solr/src/test/org/apache/solr/update/TestIndexingPerformance.java @@ -87,7 +87,7 @@ public class TestIndexingPerformance extends AbstractSolrTestCase { long start = System.currentTimeMillis(); - AddUpdateCommand add = new AddUpdateCommand(); + AddUpdateCommand add = new AddUpdateCommand(req); Field idField=null; @@ -111,7 +111,7 @@ public class TestIndexingPerformance extends AbstractSolrTestCase { log.info("iter="+iter +" time=" + (end-start) + " throughput=" + ((long)iter*1000)/(end-start)); //discard all the changes - updateHandler.rollback(new RollbackUpdateCommand()); + updateHandler.rollback(new RollbackUpdateCommand(req)); req.close(); }