[ 
https://issues.apache.org/jira/browse/SOLR-7316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14385497#comment-14385497
 ] 

Mark Haase edited comment on SOLR-7316 at 3/28/15 7:31 PM:
-----------------------------------------------------------

Shawn, thanks for updating the doc, it is much clearer now that the conf 
directory must be set up before making the API call. 

{quote}
In the general non-cloud case, where is the config going to come from? A core 
cannot be created if it doesn't have a config, so you need a mechanism to 
provide it.
{quote}

I realize this problem is obvious to you, but you're a Solr expert. I'm not. 
I'm a normal user, like many, many of the other normal users out here.

I have no idea where the config comes from, nor do I care. Lots of servers come 
with a default config that can be used when the user doesn't specify one. If 
the documentation doesn't say I need one, then I assume that I don't need one. 
When I call an HTTP API, I expect that success does not depend on me having 
filesystem access to the host machine or having intimate knowledge of the 
structure of the /conf directory.

I can SSH into the machine to set up conf files, but at that point I'd rather 
just run `solr create -c foo`. It's easy, only takes one step, and doesn't 
require me to have any knowledge of how Solr works under the hood. That's the 
whole point of abstraction, right?!

I see that `solr create -c foo` actually does use the HTTP API, so clearly 
there is a need for it. That's why I suggested that it should be marked 
PRIVATE, as in, don't use this API unless you really know what you're doing. 
Normal people should use `solr create -c foo` or should move to cloud mode.

Better yet, split this into 2 APIs. One API is REGISTER and it takes an 
existing /conf dir and registers it as a new core — it does not have a 
configSet argument. The other is CREATE and it _requires a configSet argument_ 
so that it can truly create a core without the caller having to escalate 
privileges and do a magical dance.

The most annoying thing by far about tis API is that, Solr does include a 
perfectly good default configuration in "basic_configs". In fact, when you use 
`solr create -c foo`, IT USES THAT DEFAULT CONFIGURATION! So why doesn't the 
CREATE API also use the same default configuration? What's the huge difference?

All of you guys that are Solr experts, please take a step back and see this 
through the eyes of somebody who's not tracking every single 0.0.1 release or 
every single commit on master. I am only following the instructions in the Solr 
wiki: I downloaded a ZIP, ran the installer, and I want to run a single node. 
And guess what? It's been a total pain in my ass at every single step along the 
way, and everytime I ask a question the reply is basically, "well duh WTF are 
you doing that for?" It's frustrating and insulting. 


was (Author: mehaase):
Shawn, thanks for updating the doc, it is much clearer now that the conf 
directory must be set up before making the API call. 

{quote}
In the general non-cloud case, where is the config going to come from? A core 
cannot be created if it doesn't have a config, so you need a mechanism to 
provide it.
{quote}

I realize this problem is obvious to you, but you're a Solr expert. I'm not. 
I'm a normal user, like many, many of the other normal users out here.

I have no idea where the config comes from, nor do I care. Lots of servers come 
with a default config that can be used when the user doesn't specify one. The 
documentation doesn't say I need one, so I assume that I don't need one. When I 
call an HTTP API, I expect that success does not depend on me having filesystem 
access to the host machine or having intimate knowledge of the structure of the 
/conf directory.

I can SSH into the machine to set up conf files, but at that point I'd rather 
just run `solr create -c foo`. It's easy, only takes one step, and doesn't 
require me to have any knowledge of how Solr works under the hood. That's the 
whole point of abstraction, right?!

I see that `solr create -c foo` actually does use the HTTP API, so clearly 
there is a need for it. That's why I suggested that it should be marked 
PRIVATE, as in, don't use this API unless you really know what you're doing. 
Normal people should use `solr create -c foo` or should move to cloud mode.

Better yet, split this into 2 APIs. One API is REGISTER and it takes an 
existing /conf dir and registers it as a new core — it does not have a 
configSet argument. The other is CREATE and it _requires a configSet argument_ 
so that it can truly create a core without the caller having to escalate 
privileges and do a magical dance.

The most annoying thing by far about tis API is that, Solr does include a 
perfectly good default configuration in "basic_configs". In fact, when you use 
`solr create -c foo`, IT USES THAT DEFAULT CONFIGURATION! So why doesn't the 
CREATE API also use the same default configuration? What's the huge difference?

All of you guys that are Solr experts, please take a step back and see this 
through the eyes of somebody who's not tracking every single 0.0.1 release or 
every single commit on master. I am only following the instructions in the Solr 
wiki: I downloaded a ZIP, ran the installer, and I want to run a single node. 
And guess what? It's been a total pain in my ass at every single step along the 
way, and everytime I ask a question the reply is basically, "well duh WTF are 
you doing that for?" It's frustrating and insulting. 

> API to create a core is broken
> ------------------------------
>
>                 Key: SOLR-7316
>                 URL: https://issues.apache.org/jira/browse/SOLR-7316
>             Project: Solr
>          Issue Type: Bug
>          Components: Server
>    Affects Versions: 5.0
>            Reporter: Mark Haase
>
> *Steps To Reproduce*
> {code}
> curl 
> 'http://localhost:8983/solr/admin/cores?action=CREATE&name=new_core&instanceDir=new_core'
> {code}
> *Expected Result*
> Create a core called "new_core".
> *Actual Result*
> {quote}
> Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused 
> by: Can't find resource 'solrconfig.xml' in classpath or 
> '/var/solr/data/new_core/conf'
> {quote}
> Somebody on solr-users tells me:
> {quote}
> The CoreAdmin API requires that the instanceDir already exist, with a
> conf directory inside it that contains solrconfig.xml, schema.xml, and
> any other necessary config files.
> {quote}
> Huh? Where is this magical knowledge mentioned in the [API 
> documentation|https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API]?
> Another user on the list serve says:
> {quote}
> In fact, yes. The thing to remember here is that you're using a much
> older approach that had its roots in the pre-cloud days.
> {quote}
> *The whole point of creating APIs is to abstract out details that the caller 
> doesn't need to know, and yet this API requires an understanding of Solr's 
> internal file structure and history of the project?* I'm speechless.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to