You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by an...@apache.org on 2016/03/15 19:50:31 UTC
lucene-solr:branch_6x: SOLR-8836: Return 400,
and a SolrException when an invalid json is provided to the update
handler instead of 500.
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6x 0739f9155 -> 4deb4cd1b
SOLR-8836: Return 400, and a SolrException when an invalid json is provided to the update handler instead of 500.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4deb4cd1
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4deb4cd1
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4deb4cd1
Branch: refs/heads/branch_6x
Commit: 4deb4cd1bac4d18914164fccc3e377eb8f11a117
Parents: 0739f91
Author: anshum <an...@apache.org>
Authored: Tue Mar 15 10:55:03 2016 -0700
Committer: anshum <an...@apache.org>
Committed: Tue Mar 15 11:49:56 2016 -0700
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +++
.../apache/solr/handler/loader/JsonLoader.java | 6 +++++-
.../org/apache/solr/handler/JsonLoaderTest.java | 20 ++++++++++++++++++++
3 files changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4deb4cd1/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index f4e1c44..979b95f 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -437,6 +437,9 @@ Other Changes
* SOLR-8799: Improve error message when tuple can't be read by SolrJ JDBC (Kevin Risden, Joel Bernstein)
+* SOLR-8836: Return 400, and a SolrException when an invalid json is provided to the update handler
+ instead of 500. (Jason Gerlowski via Anshum Gupta)
+
================== 5.5.1 ==================
Bug Fixes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4deb4cd1/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java b/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
index e99b243..ba800ff 100644
--- a/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
+++ b/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
@@ -50,6 +50,7 @@ import org.apache.solr.update.RollbackUpdateCommand;
import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.util.RecordingJSONParser;
import org.noggit.JSONParser;
+import org.noggit.JSONParser.ParseException;
import org.noggit.ObjectBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -111,7 +112,10 @@ public class JsonLoader extends ContentStreamLoader {
}
this.processUpdate(reader);
- } finally {
+ } catch (ParseException e) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Cannot parse provided JSON: " + e.getMessage());
+ }
+ finally {
IOUtils.closeQuietly(reader);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4deb4cd1/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java b/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
index f2316da..e27ca1a 100644
--- a/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/JsonLoaderTest.java
@@ -181,6 +181,26 @@ public class JsonLoaderTest extends SolrTestCaseJ4 {
req.close();
}
+ @Test
+ public void testInvalidJsonProducesBadRequestSolrException() throws Exception
+ {
+ SolrQueryResponse rsp = new SolrQueryResponse();
+ BufferingRequestProcessor p = new BufferingRequestProcessor(null);
+ JsonLoader loader = new JsonLoader();
+ String invalidJsonString = "}{";
+
+ try(SolrQueryRequest req = req()) {
+ try {
+ loader.load(req, rsp, new ContentStreamBase.StringStream(invalidJsonString), p);
+ fail("Expected invalid JSON to produce a SolrException.");
+ } catch (SolrException expectedException) {
+ assertEquals(SolrException.ErrorCode.BAD_REQUEST.code, expectedException.code());
+ assertTrue(expectedException.getMessage().contains("Cannot parse"));
+ assertTrue(expectedException.getMessage().contains("JSON"));
+ }
+ }
+ }
+
public void testSimpleFormatInAdd() throws Exception
{
String str = "{'add':[{'id':'1'},{'id':'2'}]}".replace('\'', '"');