From 6e2a28b6f60b90826b37d76cee1282b6b222b2e5 Mon Sep 17 00:00:00 2001 From: Michael McCandless Date: Tue, 14 Jun 2011 19:43:04 +0000 Subject: [PATCH 01/18] add comment to clarify confusing test git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1135764 13f79535-47bb-0310-9956-ffa450edef68 --- lucene/src/test/org/apache/lucene/index/TestIndexWriter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java b/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java index ecceb81e2fa..a52ab279d7a 100644 --- a/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java +++ b/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java @@ -1375,6 +1375,11 @@ public class TestIndexWriter extends LuceneTestCase { IndexReader r2 = r.reopen(); assertTrue(r != r2); files = Arrays.asList(dir.listAll()); + + // NOTE: here we rely on "Windows" behavior, ie, even + // though IW wanted to delete _0.cfs since it was + // optimized away, because we have a reader open + // against this file, it should still be here: assertTrue(files.contains("_0.cfs")); // optimize created this //assertTrue(files.contains("_2.cfs")); From 72d043e3ece3670c28d9eab311ada52aa7379558 Mon Sep 17 00:00:00 2001 From: Steven Rowe Date: Tue, 14 Jun 2011 21:23:31 +0000 Subject: [PATCH 02/18] LUCENE-3204: Include maven-ant-tasks jar in the source tree and use this jar from generate-maven-artifacts git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1135801 13f79535-47bb-0310-9956-ffa450edef68 --- dev-tools/maven/README.maven | 16 +- lucene/CHANGES.txt | 10 + lucene/build.xml | 10 +- lucene/common-build.xml | 24 +-- lucene/contrib/contrib-build.xml | 3 + lucene/lib/maven-ant-tasks-2.1.1.jar | 2 + lucene/lib/maven-ant-tasks-LICENSE-ASL.txt | 202 +++++++++++++++++++++ solr/CHANGES.txt | 11 +- solr/build.xml | 5 +- solr/common-build.xml | 19 +- 10 files changed, 252 insertions(+), 50 deletions(-) create mode 100644 lucene/lib/maven-ant-tasks-2.1.1.jar create mode 100644 lucene/lib/maven-ant-tasks-LICENSE-ASL.txt diff --git a/dev-tools/maven/README.maven b/dev-tools/maven/README.maven index 65954abf1d8..cbc9f75bdd2 100644 --- a/dev-tools/maven/README.maven +++ b/dev-tools/maven/README.maven @@ -21,18 +21,7 @@ A. How to use nightly Jenkins-built Lucene/Solr Maven artifacts B. How to generate Lucene Maven artifacts - 1. Prerequisites: JDK 1.5+, Ant 1.7.X, and maven-ant-tasks-2.1.1.jar - - In order to generate Maven artifacts for Lucene/Solr, you must first - download the Maven ant tasks JAR (maven-ant-tasks-2.1.1.jar), e.g. - from , and add it - to any one of the following: - - a. Your $HOME/.ant/lib/ directory (C:\Users\username\.ant\lib\ under - Windows Vista/7); or - b. Your $ANT_HOME/lib/ directory (%ANT_HOME%\lib\ under Windows); or - c. Your $CLASSPATH (%CLASSPATH% under Windows); or - d. Your ant commond line: "-lib /path/to/maven-ant-tasks-2.1.1.jar". + 1. Prerequisites: JDK 1.5+ and Ant 1.7.X 2. Run the following command from the lucene/ directory: @@ -47,8 +36,7 @@ B. How to generate Lucene Maven artifacts C. How to generate Solr Maven artifacts - 1. Prerequisites: JDK 1.6+; Ant 1.7.X; and maven-ant-tasks-2.1.1.jar - (see item A.1. above for where to put the Maven ant tasks jar). + 1. Prerequisites: JDK 1.6+ and Ant 1.7.X 2. Run the following from the solr/ directory: diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index d1b60b78479..51e0b9410cb 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -524,6 +524,16 @@ Build * LUCENE-1344: Create OSGi bundle using dev-tools/maven. (Nicolas Lalevée, Luca Stancapiano via ryan) + +* LUCENE-3204: The maven-ant-tasks jar is now included in the source tree; + users of the generate-maven-artifacts target no longer have to manually + place this jar in the Ant classpath. NOTE: when Ant looks for the + maven-ant-tasks jar, it looks first in its pre-existing classpath, so + any copies it finds will be used instead of the copy included in the + Lucene/Solr source tree. For this reason, it is recommeded to remove + any copies of the maven-ant-tasks jar in the Ant classpath, e.g. under + ~/.ant/lib/ or under the Ant installation's lib/ directory. + ======================= Lucene 3.2.0 ======================= diff --git a/lucene/build.xml b/lucene/build.xml index a582941caec..bce40eb0739 100644 --- a/lucene/build.xml +++ b/lucene/build.xml @@ -444,7 +444,15 @@ + depends="package, jar-src, jar-test-framework-src, javadocs"> + + + + + + diff --git a/lucene/common-build.xml b/lucene/common-build.xml index c2dace95c2c..b3694bb7880 100644 --- a/lucene/common-build.xml +++ b/lucene/common-build.xml @@ -64,6 +64,11 @@ + + + + + @@ -196,11 +201,6 @@ - - @@ -322,20 +322,6 @@ - - # - ########################################################################## - Maven ant tasks not found. - - Please download the Maven ant tasks JAR (maven-ant-tasks-2.1.1.jar) - from http://maven.apache.org/ant-tasks/download.html and add it to your - $$HOME/.ant/lib/ directory, or to your $$ANT_HOME/lib/ directory, or - to your $$CLASSPATH, or add "-lib /path/to/maven-ant-tasks-2.1.1.jar" - to the ant command. - ########################################################################## - - - diff --git a/lucene/contrib/contrib-build.xml b/lucene/contrib/contrib-build.xml index bbd35082ac2..cce14ff24c1 100644 --- a/lucene/contrib/contrib-build.xml +++ b/lucene/contrib/contrib-build.xml @@ -76,6 +76,9 @@ + diff --git a/lucene/lib/maven-ant-tasks-2.1.1.jar b/lucene/lib/maven-ant-tasks-2.1.1.jar new file mode 100644 index 00000000000..e5299ba4aef --- /dev/null +++ b/lucene/lib/maven-ant-tasks-2.1.1.jar @@ -0,0 +1,2 @@ +AnyObjectId[7810a541b8350775d61aea353538560817cce06e] was removed in git history. +Apache SVN contains full history. \ No newline at end of file diff --git a/lucene/lib/maven-ant-tasks-LICENSE-ASL.txt b/lucene/lib/maven-ant-tasks-LICENSE-ASL.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/lucene/lib/maven-ant-tasks-LICENSE-ASL.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 552b6a9d5cd..3fd0dbfc1c5 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -268,7 +268,16 @@ Other Changes * SOLR-2576: Remove deprecated SpellingResult.add(Token, int). (James Dyer via rmuir) - + +* LUCENE-3204: The maven-ant-tasks jar is now included in the source tree; + users of the generate-maven-artifacts target no longer have to manually + place this jar in the Ant classpath. NOTE: when Ant looks for the + maven-ant-tasks jar, it looks first in its pre-existing classpath, so + any copies it finds will be used instead of the copy included in the + Lucene/Solr source tree. For this reason, it is recommeded to remove + any copies of the maven-ant-tasks jar in the Ant classpath, e.g. under + ~/.ant/lib/ or under the Ant installation's lib/ directory. + Documentation ---------------------- diff --git a/solr/build.xml b/solr/build.xml index 8ca35e2b0d1..c17940c6679 100644 --- a/solr/build.xml +++ b/solr/build.xml @@ -996,7 +996,10 @@ - + + diff --git a/solr/common-build.xml b/solr/common-build.xml index 22537a6d6c9..5efde953556 100644 --- a/solr/common-build.xml +++ b/solr/common-build.xml @@ -168,7 +168,11 @@ - + + + + + @@ -587,19 +591,6 @@ - - # - ########################################################################## - Maven ant tasks not found. - - Please download the Maven ant tasks JAR (maven-ant-tasks-2.1.1.jar) - from http://maven.apache.org/ant-tasks/download.html and add it to your - $$HOME/.ant/lib/ directory, or to your $$ANT_HOME/lib/ directory, or - to your $$CLASSPATH, or add "-lib /path/to/maven-ant-tasks-2.1.1.jar" - to the ant command. - ########################################################################## - - From 1cd8fc8225dd62746edd22fc4d4512299381f22b Mon Sep 17 00:00:00 2001 From: Steven Rowe Date: Tue, 14 Jun 2011 21:47:30 +0000 Subject: [PATCH 03/18] LUCENE-3204: Added NOTICE file for maven-ant-tasks jar git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1135818 13f79535-47bb-0310-9956-ffa450edef68 --- lucene/lib/maven-ant-tasks-NOTICE.txt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100755 lucene/lib/maven-ant-tasks-NOTICE.txt diff --git a/lucene/lib/maven-ant-tasks-NOTICE.txt b/lucene/lib/maven-ant-tasks-NOTICE.txt new file mode 100755 index 00000000000..42fef0c2f2c --- /dev/null +++ b/lucene/lib/maven-ant-tasks-NOTICE.txt @@ -0,0 +1,8 @@ + +Maven Ant Tasks +Copyright 2002-2010 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + From b95cdf3e69682099c99ecfe6b779a8811379aae9 Mon Sep 17 00:00:00 2001 From: Steven Rowe Date: Tue, 14 Jun 2011 21:57:32 +0000 Subject: [PATCH 04/18] LUCENE-3204: Removed redundant path for maven-ant-tasks git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1135822 13f79535-47bb-0310-9956-ffa450edef68 --- lucene/build.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lucene/build.xml b/lucene/build.xml index bce40eb0739..434e8f178e7 100644 --- a/lucene/build.xml +++ b/lucene/build.xml @@ -445,11 +445,6 @@ - - - - - From f4bfaca2ec85b08477e58485006dc2fc621a15a5 Mon Sep 17 00:00:00 2001 From: Steven Rowe Date: Tue, 14 Jun 2011 22:03:08 +0000 Subject: [PATCH 05/18] LUCENE-3204: Added attribution to CHANGES.txt entries git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1135825 13f79535-47bb-0310-9956-ffa450edef68 --- lucene/CHANGES.txt | 2 +- solr/CHANGES.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 51e0b9410cb..93ec482c9ef 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -532,7 +532,7 @@ Build any copies it finds will be used instead of the copy included in the Lucene/Solr source tree. For this reason, it is recommeded to remove any copies of the maven-ant-tasks jar in the Ant classpath, e.g. under - ~/.ant/lib/ or under the Ant installation's lib/ directory. + ~/.ant/lib/ or under the Ant installation's lib/ directory. (Steve Rowe) ======================= Lucene 3.2.0 ======================= diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 3fd0dbfc1c5..0c6e3b08089 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -276,7 +276,7 @@ Other Changes any copies it finds will be used instead of the copy included in the Lucene/Solr source tree. For this reason, it is recommeded to remove any copies of the maven-ant-tasks jar in the Ant classpath, e.g. under - ~/.ant/lib/ or under the Ant installation's lib/ directory. + ~/.ant/lib/ or under the Ant installation's lib/ directory. (Steve Rowe) Documentation ---------------------- From 6aaaf9ca940f53abffd07137803331f865fd187d Mon Sep 17 00:00:00 2001 From: Shalin Shekhar Mangar Date: Wed, 15 Jun 2011 08:24:04 +0000 Subject: [PATCH 06/18] SOLR-2551 -- Check dataimport.properties for write access (if delta-import is supported in DIH configuration) before starting an import git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1135954 13f79535-47bb-0310-9956-ffa450edef68 --- solr/contrib/dataimporthandler/CHANGES.txt | 3 +- .../solr/handler/dataimport/DataImporter.java | 18 +++++++++- .../solr/handler/dataimport/SolrWriter.java | 17 ++++++---- .../TestSqlEntityProcessorDelta.java | 34 ++++++++++++++++++- 4 files changed, 63 insertions(+), 9 deletions(-) diff --git a/solr/contrib/dataimporthandler/CHANGES.txt b/solr/contrib/dataimporthandler/CHANGES.txt index 663beb23ec9..310124cbedf 100644 --- a/solr/contrib/dataimporthandler/CHANGES.txt +++ b/solr/contrib/dataimporthandler/CHANGES.txt @@ -14,7 +14,8 @@ $Id$ ================== 3.3.0-dev ============== -(No Changes) +* SOLR-2551: Check dataimport.properties for write access (if delta-import is supported + in DIH configuration) before starting an import (C S, shalin) ================== 3.2.0 ================== diff --git a/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java b/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java index 7c7bc3beb0d..85ad0930c5d 100644 --- a/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java +++ b/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java @@ -39,6 +39,7 @@ import org.apache.commons.io.IOUtils; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import java.io.File; import java.io.StringReader; import java.text.SimpleDateFormat; import java.util.*; @@ -84,6 +85,8 @@ public class DataImporter { private final Map coreScopeSession; + private boolean isDeltaImportSupported = false; + /** * Only for testing purposes */ @@ -112,7 +115,9 @@ public class DataImporter { initEntity(e, fields, false); verifyWithSchema(fields); identifyPk(e); - } + if (e.allAttributes.containsKey(SqlEntityProcessor.DELTA_QUERY)) + isDeltaImportSupported = true; + } } private void verifyWithSchema(Map fields) { @@ -349,6 +354,7 @@ public class DataImporter { try { docBuilder = new DocBuilder(this, writer, requestParams); + checkWritablePersistFile(writer); docBuilder.execute(); if (!requestParams.debug) cumulativeStatistics.add(docBuilder.importStatistics); @@ -363,6 +369,15 @@ public class DataImporter { } + private void checkWritablePersistFile(SolrWriter writer) { + File persistFile = writer.getPersistFile(); + boolean isWritable = persistFile.exists() ? persistFile.canWrite() : persistFile.getParentFile().canWrite(); + if (isDeltaImportSupported && !isWritable) { + throw new DataImportHandlerException(SEVERE, persistFile.getAbsolutePath() + + " is not writable. Delta imports are supported by data config but will not work."); + } + } + public void doDeltaImport(SolrWriter writer, RequestParams requestParams) { LOG.info("Starting Delta Import"); setStatus(Status.RUNNING_DELTA_DUMP); @@ -370,6 +385,7 @@ public class DataImporter { try { setIndexStartTime(new Date()); docBuilder = new DocBuilder(this, writer, requestParams); + checkWritablePersistFile(writer); docBuilder.execute(); if (!requestParams.debug) cumulativeStatistics.add(docBuilder.importStatistics); 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 f548316b4f4..e7bbb6c000f 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 @@ -99,13 +99,10 @@ public class SolrWriter { try { props.putAll(p); - String filePath = configDir; - if (configDir != null && !configDir.endsWith(File.separator)) - filePath += File.separator; - filePath += persistFilename; - propOutput = new FileOutputStream(filePath); + File persistFile = getPersistFile(); + propOutput = new FileOutputStream(persistFile); props.store(propOutput, null); - log.info("Wrote last indexed time to " + persistFilename); + log.info("Wrote last indexed time to " + persistFile.getAbsolutePath()); } catch (FileNotFoundException e) { throw new DataImportHandlerException(DataImportHandlerException.SEVERE, "Unable to persist Index Start Time", e); @@ -122,6 +119,14 @@ public class SolrWriter { } } + File getPersistFile() { + String filePath = configDir; + if (configDir != null && !configDir.endsWith(File.separator)) + filePath += File.separator; + filePath += persistFilename; + return new File(filePath); + } + void finish() { try { processor.finish(); diff --git a/solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java b/solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java index 60f1ae5ecd0..4cddebaa2e2 100644 --- a/solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java +++ b/solr/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java @@ -20,6 +20,8 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import java.io.File; +import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -92,7 +94,37 @@ public class TestSqlEntityProcessorDelta extends AbstractDataImportHandlerTestCa public void testCompositePk_FullImport() throws Exception { add1document(); } - + + @Test + @SuppressWarnings("unchecked") + public void testNonWritablePersistFile() throws Exception { + // See SOLR-2551 + String configDir = h.getCore().getResourceLoader().getConfigDir(); + String filePath = configDir; + if (configDir != null && !configDir.endsWith(File.separator)) + filePath += File.separator; + filePath += "dataimport.properties"; + File f = new File(filePath); + // execute the test only if we are able to set file to read only mode + if ((f.exists() || f.createNewFile()) && f.setReadOnly()) { + try { + List parentRow = new ArrayList(); + parentRow.add(createMap("id", "1")); + MockDataSource.setIterator(FULLIMPORT_QUERY, parentRow.iterator()); + + List childRow = new ArrayList(); + childRow.add(createMap("desc", "hello")); + MockDataSource.setIterator("select * from y where y.A='1'", childRow + .iterator()); + + runFullImport(dataConfig_delta); + assertQ(req("id:1"), "//*[@numFound='0']"); + } finally { + f.setWritable(true); + } + } + } + // WORKS @Test From 3d8fc3de5d1b2b7f6183c751397d4a745bd86251 Mon Sep 17 00:00:00 2001 From: Koji Sekiguchi Date: Wed, 15 Jun 2011 13:20:09 +0000 Subject: [PATCH 07/18] fix luceneMatchVersion in uima test git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1136027 13f79535-47bb-0310-9956-ffa450edef68 --- .../uima/src/test/resources/solr-uima/conf/solrconfig.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/solr/contrib/uima/src/test/resources/solr-uima/conf/solrconfig.xml b/solr/contrib/uima/src/test/resources/solr-uima/conf/solrconfig.xml index 192728d4c65..f9a31499076 100644 --- a/solr/contrib/uima/src/test/resources/solr-uima/conf/solrconfig.xml +++ b/solr/contrib/uima/src/test/resources/solr-uima/conf/solrconfig.xml @@ -24,9 +24,7 @@ https://issues.apache.org/jira/browse/SOLR-1167 --> - - LUCENE_40 - + ${tests.luceneMatchVersion:LUCENE_CURRENT}