From 94a23da9c2e72089a931a988dc5df0019deb609d Mon Sep 17 00:00:00 2001 From: Noble Paul Date: Thu, 1 Jan 2015 12:47:22 +0000 Subject: [PATCH] SOLR-6787 changed the schema of blob store. now, the id is blobName/version and not the md5 git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1648836 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/solr/handler/BlobHandler.java | 35 ++++++++++++------- .../solr/handler/SolrConfigHandler.java | 20 +++++------ 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/BlobHandler.java b/solr/core/src/java/org/apache/solr/handler/BlobHandler.java index f9076063dd0..abe22f5be5c 100644 --- a/solr/core/src/java/org/apache/solr/handler/BlobHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/BlobHandler.java @@ -37,17 +37,14 @@ import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.TopFieldDocs; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.cloud.ZkNodeProps; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.MapSolrParams; -import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.params.UpdateParams; import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.StrUtils; import org.apache.solr.core.PluginInfo; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.response.SolrQueryResponse; @@ -86,6 +83,11 @@ public class BlobHandler extends RequestHandlerBase implements PluginInfoInitia rsp.add("error","Name not found"); return; } + String err = SolrConfigHandler.validateName(blobName); + if(err!=null){ + rsp.add("error", err); + return; + } if(req.getContentStreams() == null ) { rsp.add("error","No stream"); return; @@ -98,12 +100,12 @@ public class BlobHandler extends RequestHandlerBase implements PluginInfoInitia m.update(payload.array(),payload.position(),payload.limit()); String md5 = new BigInteger(1,m.digest()).toString(16); - TopDocs duplicate = req.getSearcher().search(new TermQuery(new Term("id", md5)), 1); + TopDocs duplicate = req.getSearcher().search(new TermQuery(new Term("md5", md5)), 1); if(duplicate.totalHits >0){ rsp.add("error", "duplicate entry"); req.forward(null, new MapSolrParams((Map) makeMap( - "q", "id:" + md5, + "q", "md5:" + md5, "fl", "id,size,version,timestamp,blobName")), rsp); return; @@ -118,11 +120,13 @@ public class BlobHandler extends RequestHandlerBase implements PluginInfoInitia Number n = doc.getField("version").numericValue(); version = n.longValue(); } - + version++; + String id = blobName+"/"+version; indexMap(req, makeMap( - "id", md5, + "id", id, + "md5", md5, "blobName", blobName, - "version", ++version, + "version", version, "timestamp", new Date(), "size", payload.limit(), "blob", payload)); @@ -145,7 +149,7 @@ public class BlobHandler extends RequestHandlerBase implements PluginInfoInitia throw new SolrException(SolrException.ErrorCode.NOT_FOUND, "Please send the request in the format /blob//"); } else { String q = "blobName:{0}"; - if(version!=-1) q+= " AND version:{1}"; + if(version != -1) q = "id:{0}/{1}"; QParser qparser = QParser.getParser(MessageFormat.format(q,blobName,version) , "lucene", req); final TopDocs docs = req.getSearcher().search(qparser.parse(), 1, new Sort( new SortField("version", SortField.Type.LONG, true))); if(docs.totalHits>0){ @@ -174,12 +178,16 @@ public class BlobHandler extends RequestHandlerBase implements PluginInfoInitia } } else { String q = "*:*"; - if (blobName != null) q = "blobName" + ":" + blobName; - if (version > -1) q += " AND version:" + version; + if(blobName != null){ + q = "blobName:{0}"; + if(version != -1){ + q = "id:{0}/{1}"; + } + } req.forward(null, new MapSolrParams((Map) makeMap( - "q", q, + "q", MessageFormat.format(q,blobName,version), "fl", "id,size,version,timestamp,blobName", "sort", "version desc")) ,rsp); @@ -220,8 +228,9 @@ public class BlobHandler extends RequestHandlerBase implements PluginInfoInitia " \n" + " \n" + " \n" + + " \n" + " \n" + - " \n" + + " \n" + " \n" + " \n" + " \n" + diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java index e85fb27f5c4..752ed7cc7cd 100644 --- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java @@ -32,7 +32,6 @@ import java.util.Set; import org.apache.solr.cloud.ZkController; import org.apache.solr.cloud.ZkSolrResourceLoader; import org.apache.solr.common.SolrException; -import org.apache.solr.common.cloud.SolrZkClient; import org.apache.solr.common.cloud.ZkNodeProps; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.MapSolrParams; @@ -40,21 +39,15 @@ import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.StrUtils; import org.apache.solr.core.ConfigOverlay; -import org.apache.solr.core.CoreContainer; import org.apache.solr.core.PluginInfo; import org.apache.solr.core.RequestParams; import org.apache.solr.core.SolrConfig; -import org.apache.solr.core.SolrCore; import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.response.SolrQueryResponse; -import org.apache.solr.schema.ManagedIndexSchema; import org.apache.solr.schema.SchemaManager; import org.apache.solr.util.CommandOperation; -import org.apache.solr.util.plugin.SolrCoreAware; -import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.data.Stat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -191,8 +184,9 @@ public class SolrConfigHandler extends RequestHandlerBase { continue; } key = key.trim(); - if (!validName(key)) { - op.addError(MessageFormat.format("''{0}'' name should only have chars [a-zA-Z_-.0-9] ", key)); + String err = validateName(key); + if (err !=null) { + op.addError(err); continue; } @@ -395,7 +389,7 @@ public class SolrConfigHandler extends RequestHandlerBase { } - public static boolean validName(String s) { + public static String validateName(String s) { for(int i=0;i= 'A' && c<='Z') || @@ -405,9 +399,11 @@ public class SolrConfigHandler extends RequestHandlerBase { c == '-'|| c == '.' ) continue; - else return false; + else { + return MessageFormat.format("''{0}'' name should only have chars [a-zA-Z_-.0-9] ",s); + } } - return true; + return null; } static void setWt(SolrQueryRequest req, String wt){