diff --git a/htroot/IndexReIndexMonitor_p.html b/htroot/IndexReIndexMonitor_p.html index 2fecd83bc..8ad897c97 100644 --- a/htroot/IndexReIndexMonitor_p.html +++ b/htroot/IndexReIndexMonitor_p.html @@ -12,6 +12,7 @@

In case that an index schema of the embedded/local index has changed, all documents with missing field entries can be indexed again with a reindex job.

+
@@ -62,6 +63,7 @@ This runs transparent as background job. Documents are added to the crawler only if no other crawls are active and are added in small chunks.

+
diff --git a/htroot/IndexReIndexMonitor_p.java b/htroot/IndexReIndexMonitor_p.java index 1022435af..2fb5b3057 100644 --- a/htroot/IndexReIndexMonitor_p.java +++ b/htroot/IndexReIndexMonitor_p.java @@ -22,7 +22,7 @@ import net.yacy.cora.sorting.OrderedScoreMap; import net.yacy.kelondro.workflow.BusyThread; import net.yacy.migration; import net.yacy.crawler.RecrawlBusyThread; - +import net.yacy.data.TransactionManager; import net.yacy.search.Switchboard; import net.yacy.search.index.ReindexSolrBusyThread; import net.yacy.server.serverObjects; @@ -34,12 +34,19 @@ public class IndexReIndexMonitor_p { final Switchboard sb = (Switchboard) env; final serverObjects prop = new serverObjects(); + + /* Acquire a transaction token for the next possible POST form submissions */ + final String nextTransactionToken = TransactionManager.getTransactionToken(header); + prop.put(TransactionManager.TRANSACTION_TOKEN_PARAM, nextTransactionToken); prop.put("docsprocessed", "0"); prop.put("currentselectquery",""); BusyThread reidxbt = sb.getThread(ReindexSolrBusyThread.THREAD_NAME); if (reidxbt == null) { if (post != null && post.containsKey("reindexnow") && sb.index.fulltext().connectedLocalSolr()) { + /* Check the transaction is valid */ + TransactionManager.checkPostTransaction(header, post); + migration.reindexToschema(sb); prop.put("querysize", "0"); prop.put("infomessage","reindex job started"); @@ -71,6 +78,9 @@ public class IndexReIndexMonitor_p { } if (post != null && post.containsKey("stopreindex")) { + /* Check the transaction is valid */ + TransactionManager.checkPostTransaction(header, post); + sb.terminateThread(ReindexSolrBusyThread.THREAD_NAME, false); prop.put("infomessage", "reindex job stopped"); prop.put("reindexjobrunning",0); @@ -93,6 +103,9 @@ public class IndexReIndexMonitor_p { // to signal that a setting shall change the form provides a fixed parameter setup=recrawljob, if not present return status only if (post != null && "recrawljob".equals(post.get("setup"))) { // it's a command to recrawlThread + + /* Check the transaction is valid */ + TransactionManager.checkPostTransaction(header, post); if (recrawlbt == null) { if (post.containsKey("recrawlnow") && sb.index.fulltext().connectedLocalSolr()) { diff --git a/htroot/IndexSchema_p.html b/htroot/IndexSchema_p.html index 2c85e78ce..184fc655d 100644 --- a/htroot/IndexSchema_p.html +++ b/htroot/IndexSchema_p.html @@ -60,6 +60,7 @@


+

If you unselected some fields, old documents in the index still contain the unselected fields. diff --git a/htroot/IndexSchema_p.java b/htroot/IndexSchema_p.java index 5482bf05a..8a6c8a93d 100644 --- a/htroot/IndexSchema_p.java +++ b/htroot/IndexSchema_p.java @@ -26,6 +26,7 @@ import net.yacy.cora.federate.solr.SchemaConfiguration; import net.yacy.cora.federate.solr.SchemaDeclaration; import net.yacy.cora.protocol.RequestHeader; import net.yacy.cora.util.ConcurrentLog; +import net.yacy.data.TransactionManager; import net.yacy.search.Switchboard; import net.yacy.search.schema.CollectionSchema; import net.yacy.search.schema.WebgraphConfiguration; @@ -39,7 +40,7 @@ public class IndexSchema_p { // return variable that accumulates replacements final serverObjects prop = new serverObjects(); final Switchboard sb = (Switchboard) env; - + String schemaName = CollectionSchema.CORE_NAME; if (post != null) schemaName = post.get("core", schemaName); SchemaConfiguration cs = schemaName.equals(CollectionSchema.CORE_NAME) ? sb.index.fulltext().getDefaultConfiguration() : sb.index.fulltext().getWebgraphConfiguration(); @@ -101,6 +102,10 @@ public class IndexSchema_p { } } + /* Acquire a transaction token for the next possible POST IndexReIndeMonitor_p form submission */ + prop.put("IndexReIndex_" + TransactionManager.TRANSACTION_TOKEN_PARAM, + TransactionManager.getTransactionToken(header, "/IndexReIndexMonitor_p.html")); + int c = 0; boolean dark = false; // use enum SolrField to keep defined order