Hi Mark.

   Thanks for your reply.

    I will file a JIRA issue about the NPE.

   By the way,would you look through the Question 2. After I create a new
core with explicite shard and coreNodeName successfully,I can not create a
replica for above new core also with explicite coreNodeName and the same
shard and collection
  Request url as following:

http://10.7.23.122:8080/solr/admin/cores?action=CREATE&name=Test1&shard=Test&collection.configName=myconf&schema=schema.xml&config=solrconfigLocal_default.xml&collection=defaultcol&coreNodeName=Test1

 It responses an error:
<response>
        <lst name="responseHeader">
       <int name="status">400</int>
         <int name="QTime">29</int>
  </lst>
  <lst name="error">
         <str name="msg">Error CREATEing SolrCore 'Test1': Test1 is
removed</str>
         <int name="code">400</int>
  </lst>
  </response>

   I find out that in the src class in  org.apache.solr.cloud.
ZkController line 1369~ 1384:
   As the code says,when I indicate a  coreNodeName and collection
explicitly,it goes to check a 'autoCreated' property of the Collection
which I have already created.

  My question :Why does it need to check the 'autoCreated' property,any
jira about this 'autoCreated' property? How can I make  through the check?


[1]-------------------------------------------------------------------------------------------------------------
    try {
      if(cd.getCloudDescriptor().getCollectionName() !=null &&
 cd.getCloudDescriptor().getCoreNodeName() != null ) {
        //we were already registered

 
if(zkStateReader.getClusterState().hasCollection(cd.getCloudDescriptor().getCollectionName())){
        DocCollection coll =
 
zkStateReader.getClusterState().getCollection(cd.getCloudDescriptor().getCollectionName());
         if(!"true".equals(coll.getStr("autoCreated"))){
           Slice slice =
 coll.getSlice(cd.getCloudDescriptor().getShardId());
           if(slice != null){
             if(slice.getReplica(cd.getCloudDescriptor().getCoreNodeName())
 == null) {
               log.info("core_removed This core is removed from ZK");
               throw new SolrException(ErrorCode.NOT_FOUND,coreNodeName +"
 is removed");
             }
           }
         }
        }
      }
 
--------------------------------------------------------------------------------------------------------------


Regards


2013/12/27 Mark Miller <markrmil...@gmail.com>

> If you are seeing an NPE there, sounds like you are on to something.
> Please file a JIRA issue.
>
> - Mark
>
> > On Dec 26, 2013, at 1:29 AM, YouPeng Yang <yypvsxf19870...@gmail.com>
> wrote:
> >
> > Hi
> >   Merry Christmas.
> >
> >   Before this mail,I am in trouble with a weird problem  for a few days
> > when to create a new core with both explicite shard and coreNodeName.
> And I
> > have posted a few mails  in the mailist,no one ever gives any
> > suggestions,maybe  they did not  encounter the same problem.
> >  I have to go through the srcs to check out the reason. Thanks god, I
> find
> > it. The reason to the problem,maybe be a bug, so I would like to report
> it
> > hoping to get your endorsement and confirmation.
> >
> >
> > In class org.apache.solr.cloud.Overseer the Line 360:
> > ---------------------------------------------------------------------
> >          if (sliceName !=null && collectionExists &&
> > !"true".equals(state.getCollection(collection).getStr("autoCreated"))) {
> >            Slice slice = state.getSlice(collection, sliceName);
> >            if (slice.getReplica(coreNodeName) == null) {
> >              log.info("core_deleted . Just return");
> >              return state;
> >            }
> >          }
> > ---------------------------------------------------------------------
> > the slice needs to be checked null .because I create a new core with both
> > explicite shard and coreNodeName, the state.getSlice(collection,
> > sliceName)  may return a null.So it needs to be checked ,or there will be
> > an NullpointException
> > ---------------------------------------------------------------------
> >          if (sliceName !=null && collectionExists &&
> > !"true".equals(state.getCollection(collection).getStr("autoCreated"))) {
> >            Slice slice = state.getSlice(collection, sliceName);
> >            if (*slice != null &&* slice.getReplica(coreNodeName) ==
> null) {
> >              log.info("core_deleted . Just return");
> >              return state;
> >            }
> >          }
> > ---------------------------------------------------------------------
> >
> > *Querstion 1*: Is this OK with the whole solr project,I have no aware
> > about the influences about the change,as right now ,it goes right. Please
> > make confirm about this.
> >
> >  After I fixed this prolem,I can create a core with the request:
> > http://10.7.23.122:8080/solr/admin/cores?action=CREATE&name=Test&;
> > *shard=Test*
> >
> &collection.configName=myconf&schema=schema.xml&config=solrconfigLocal_default.xml&collection=defaultcol&
> > *coreNodeName=Test*
> >
> >  However when I create a replica within the same shard Test:
> > http://10.7.23.122:8080/solr/admin/cores?action=CREATE&*name=Test1*&;
> > *shard=Test*
> >
> &collection.configName=myconf&schema=schema.xml&config=solrconfigLocal_default.xml&collection=defaultcol&
> > *coreNodeName=Test1*
> >
> >  It response an error:
> > <response>
> >        <lst name="responseHeader">
> >        <int name="status">400</int>
> >         <int name="QTime">29</int>
> > </lst>
> > <lst name="error">
> >          <str name="msg">Error CREATEing SolrCore 'Test1': Test1 is
> > removed</str>
> >          <int name="code">400</int>
> > </lst>
> > </response>
> >
> > I aslo find the reason the in the class
>  org.apache.solr.cloud.ZkController
> > line 1369~ 1384[1]
> > As the src here,it needs to check the autoCreated within an existing
> > collection
> > when the coreNodeName and shard were assigned manully. the autoCreated
> > property of a collection is not equal with true, it throws an exeption.
> >
> >  *Question2*: Why does it need  to check the 'autoCreated', and how could
> > I go through this check, or Is this another bug?
> >
> >
> >
> >
> >
> [1]-------------------------------------------------------------------------------------------------------------
> >    try {
> >      if(cd.getCloudDescriptor().getCollectionName() !=null &&
> > cd.getCloudDescriptor().getCoreNodeName() != null ) {
> >        //we were already registered
> >
> >
> if(zkStateReader.getClusterState().hasCollection(cd.getCloudDescriptor().getCollectionName())){
> >        DocCollection coll =
> >
> zkStateReader.getClusterState().getCollection(cd.getCloudDescriptor().getCollectionName());
> >         if(!"true".equals(coll.getStr("autoCreated"))){
> >           Slice slice =
> > coll.getSlice(cd.getCloudDescriptor().getShardId());
> >           if(slice != null){
> >
> if(slice.getReplica(cd.getCloudDescriptor().getCoreNodeName())
> > == null) {
> >               log.info("core_removed This core is removed from ZK");
> >               throw new SolrException(ErrorCode.NOT_FOUND,coreNodeName +"
> > is removed");
> >             }
> >           }
> >         }
> >        }
> >      }
> >
> --------------------------------------------------------------------------------------------------------------
>

Reply via email to