]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts-solr: Extract fts_backend_solr_commit()
authorMarco Bettini <marco.bettini@open-xchange.com>
Fri, 14 Apr 2023 13:00:34 +0000 (13:00 +0000)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Mon, 17 Apr 2023 21:36:03 +0000 (21:36 +0000)
src/plugins/fts-solr/fts-backend-solr.c

index 7f699b5e5a3d11f6939345c292837922e8e74fa9..25b7ab3226699949f7719b11efa94cf3f9a5e455 100644 (file)
@@ -382,16 +382,27 @@ fts_backend_solr_expunge_flush(struct solr_fts_backend_update_context *ctx)
        str_append(ctx->cmd_expunge, "<delete>");
 }
 
+static int fts_backend_solr_commit(struct solr_fts_backend_update_context *ctx)
+{
+       struct solr_fts_backend *backend =
+               (struct solr_fts_backend *) ctx->ctx.backend;
+       struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(ctx->ctx.backend->ns->user);
+
+       if (!fuser->set.soft_commit)
+               return 0;
+
+       const char *str = t_strdup_printf(
+               "<commit softCommit=\"true\" waitSearcher=\"%s\"/>",
+               ctx->documents_added ? "true" : "false");
+       return solr_connection_post(backend->solr_conn, str);
+}
+
 static int
 fts_backend_solr_update_deinit(struct fts_backend_update_context *_ctx)
 {
        struct solr_fts_backend_update_context *ctx =
                (struct solr_fts_backend_update_context *)_ctx;
-       struct solr_fts_backend *backend =
-               (struct solr_fts_backend *)_ctx->backend;
-       struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(_ctx->backend->ns->user);
        struct solr_fts_field *field;
-       const char *str;
        int ret = _ctx->failed ? -1 : 0;
 
        if (fts_backed_solr_build_flush(ctx) < 0)
@@ -402,12 +413,8 @@ fts_backend_solr_update_deinit(struct fts_backend_update_context *_ctx)
                   visible to the following search */
                if (ctx->expunges)
                        fts_backend_solr_expunge_flush(ctx);
-               if (fuser->set.soft_commit) {
-                       str = t_strdup_printf("<commit softCommit=\"true\" waitSearcher=\"%s\"/>",
-                                             ctx->documents_added ? "true" : "false");
-                       if (solr_connection_post(backend->solr_conn, str) < 0)
-                               ret = -1;
-               }
+               if (fts_backend_solr_commit(ctx) < 0)
+                       ret = -1;
        }
 
        str_free(&ctx->cmd);