What you’re seeing is the input from the client. You’ve passed true, true, 
which are waitFlush and waitSearcher
which sets softCommit _for that call_ to false. It has nothing to do with the 
settings in your config file.

bq. I am not passing the parameter to do a softCommit  in the SolrJ command.

I don’t think so. That’s a hard commit. This is a little tricky since the 
waitFlush and waitSearcher params don’t
tell you that they are about hard commits. There used to only be hard commits, 
so...

But…. these settings are highly suspicious. Here’s the long form:

https://lucidworks.com/post/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/

It is risky to have your autocommit settings commented out. You risk 
transaction logs growing
forever to no  purpose whatsoever.

Your call does a hard commit _and_ opens a new searcher for, apparently, every 
document.

But your autoSoftCommit settings also open a new searcher without doing 
anything about flushing
data to disk every second. Usually, this is far too often unless you have 
extremely stringent latency
requirements, and in this case unless you’re only indexing once in a great 
while your caches
are pretty useless.

I strongly urge you to uncomment autocommit settings. Make the autoCommit 
interval something
reasonable (15-60 seconds for instance) with openSearcher=false.

Then lengthen your autoSoftCommit settings to as long as you can stand. The 
longer the interval,
the less work you’ll do opening new searchers, which is a rather expensive 
operation. I like
5-10 minutes if possible, but your app may require shorter intervals.

Then don’t send any commit settings in your SolrJ program at all.

Best,
Erick

> On Jul 21, 2020, at 1:32 PM, Tyrone Tse <tyrone...@hotmail.com> wrote:
> 
> I am using Solr 8.5 cloud, and in my collection I have edited the
> solrconfig.xml file to use
> <autoSoftCommit>
>        <maxTime>1000</maxTime>
>      </autoSoftCommit>
> 
> and commented out the default <autoCommit> configuration
> 
>  <!--
>    <autoCommit>
>      <maxTime>15000</maxTime>
>      <openSearcher>false</openSearcher>
>    </autoCommit>
>  -->
> 
> We are using SolrJ to post files to the Solr here is the snippet of Java
> code that does it
> 
> try(HttpSolrClient solrClient = solr.build()){
>    ContentStreamUpdateRequest up = new
> ContentStreamUpdateRequest("/update/extract");
>    up.addFile(f, mimeType);
>    String tempId = f.getName() + (new Date()).toString();
>    up.setParam("literal.id", tempId);
>    up.setParam("literal.username", user);
>    up.setParam("literal.fileName", f.getName());
>    up.setParam("literal.filePath", path);
>    up.setParam("uprefix", "attr_");
>    up.setParam("fmap.content", "attr_content");
>    up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
>    logger.info("PreRequest");
>    solrClient.request(up);
>    logger.info("PostRequest");
>    resultId = tempId;
> } catch (IOException | SolrServerException |
> HttpSolrClient.RemoteSolrException e) {
>    logger.error("Error connecting.committing to Solr", e);
> }
> 
> So I am not passing the parameter to do a softCommit  in the SolrJ command.
> 
> When I posted a file to my Solr core, when I look at the solr.log file I
> see the following information
> 
> 2020-07-21 16:38:54.719 INFO  (qtp1546693040-302) [c:files s:shard1
> r:core_node5 x:files_shard1_replica_n2] o.a.s.u.p.LogUpdateProcessorFactory
> [files_shard1_replica_n2]  webapp=/solr path=/update
> params={update.distrib=TOLEADER&update.chain=files-update-processor&waitSearcher=true&openSearcher=true&commit=true&softCommit=false&distrib.from=
> http://192.168.1.191:8983/solr/files_shard2_replica_n6/
> 
> Does having  <autoSoftCommit> set in the solrconfig.xml override REST Post
> calls that have the parameter softCommit=false and force a softCommit when
> the data is posted to Solr.
> 
> Thanks in advance.

Reply via email to