Skip to content
Snippets Groups Projects
Commit 1ad05902 authored by Henrik tom Wörden's avatar Henrik tom Wörden
Browse files

WIP: create jobs only for entities in paging range

parent 9ed99247
Branches
Tags
2 merge requests!96DOC: Added CITATION.cff to the list of files in the release guide where the...,!81ENH: apply paging such that no unwanted jobs are being triggered
Pipeline #33070 failed
...@@ -50,6 +50,7 @@ import org.caosdb.server.utils.UndoHandler; ...@@ -50,6 +50,7 @@ import org.caosdb.server.utils.UndoHandler;
* @author Timm Fitschen <t.fitschen@indiscale.com> * @author Timm Fitschen <t.fitschen@indiscale.com>
*/ */
public enum TransactionStage { public enum TransactionStage {
PRE_INIT,
INIT, INIT,
PRE_CHECK, PRE_CHECK,
CHECK, CHECK,
......
...@@ -31,6 +31,8 @@ import org.caosdb.server.jobs.JobAnnotation; ...@@ -31,6 +31,8 @@ import org.caosdb.server.jobs.JobAnnotation;
import org.caosdb.server.jobs.TransactionStage; import org.caosdb.server.jobs.TransactionStage;
import org.caosdb.server.query.Query; import org.caosdb.server.query.Query;
import org.caosdb.server.query.Query.ParsingException; import org.caosdb.server.query.Query.ParsingException;
import org.caosdb.server.transaction.Retrieve;
import org.caosdb.server.utils.EntityStatus;
import org.caosdb.server.utils.ServerMessages; import org.caosdb.server.utils.ServerMessages;
@JobAnnotation(flag = "query", stage = TransactionStage.INIT) @JobAnnotation(flag = "query", stage = TransactionStage.INIT)
...@@ -53,8 +55,16 @@ public class ExecuteQuery extends FlagJob { ...@@ -53,8 +55,16 @@ public class ExecuteQuery extends FlagJob {
.addMessage(new Message(MessageType.Info, (MessageCode) null, e.getMessage())); .addMessage(new Message(MessageType.Info, (MessageCode) null, e.getMessage()));
} }
getContainer().addMessage(queryInstance); getContainer().addMessage(queryInstance);
int index1 = getTransaction().getPagingIndex1();
int index2 = getTransaction().getPagingIndex2();
int ii = 0;
for (final EntityInterface entity : getContainer()) { for (final EntityInterface entity : getContainer()) {
if (!(getTransaction() instanceof Retrieve) || (ii >= index1 && ii < index2)) {
getTransaction().getSchedule().addAll(loadJobs(entity, getTransaction())); getTransaction().getSchedule().addAll(loadJobs(entity, getTransaction()));
} else {
entity.setEntityStatus(EntityStatus.IGNORE);
}
ii++;
} }
} }
} }
......
...@@ -24,14 +24,12 @@ package org.caosdb.server.jobs.core; ...@@ -24,14 +24,12 @@ package org.caosdb.server.jobs.core;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.caosdb.server.entity.EntityInterface;
import org.caosdb.server.jobs.FlagJob; import org.caosdb.server.jobs.FlagJob;
import org.caosdb.server.jobs.JobAnnotation; import org.caosdb.server.jobs.JobAnnotation;
import org.caosdb.server.jobs.TransactionStage; import org.caosdb.server.jobs.TransactionStage;
import org.caosdb.server.transaction.Retrieve; import org.caosdb.server.transaction.Retrieve;
import org.caosdb.server.utils.EntityStatus;
@JobAnnotation(flag = "P", stage = TransactionStage.PRE_TRANSACTION) @JobAnnotation(flag = "P", stage = TransactionStage.PRE_INIT)
public class Paging extends FlagJob { public class Paging extends FlagJob {
public static final int DEFAULT_LENGTH = 100; public static final int DEFAULT_LENGTH = 100;
...@@ -53,6 +51,8 @@ public class Paging extends FlagJob { ...@@ -53,6 +51,8 @@ public class Paging extends FlagJob {
index2 = index1 + Integer.parseInt(m.group(2)); index2 = index1 + Integer.parseInt(m.group(2));
} }
} }
getTransaction().setPagingIndices(index1, index2);
/*
int i = 0; int i = 0;
for (final EntityInterface e : getContainer()) { for (final EntityInterface e : getContainer()) {
if (i >= index2 || i < index1) { if (i >= index2 || i < index1) {
...@@ -61,6 +61,7 @@ public class Paging extends FlagJob { ...@@ -61,6 +61,7 @@ public class Paging extends FlagJob {
} }
i++; i++;
} }
*/
} }
} }
} }
......
...@@ -858,7 +858,8 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac ...@@ -858,7 +858,8 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac
/** /**
* Filter out all entities which may not be retrieved by this user due to a missing RETRIEVE * Filter out all entities which may not be retrieved by this user due to a missing RETRIEVE
* permission. This function is also designed for filtering of intermediate results. * permission. This function is also designed for filtering of intermediate results
* TODO describe intermediate results.
* *
* @param tabname * @param tabname
* @throws SQLException * @throws SQLException
......
...@@ -60,6 +60,8 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra ...@@ -60,6 +60,8 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
public static final String CLEAN_UP = "TransactionCleanUp"; public static final String CLEAN_UP = "TransactionCleanUp";
private final C container; private final C container;
private int pagingIndex1;
private int pagingIndex2;
private Access access = null; private Access access = null;
private final Schedule schedule = new Schedule(); private final Schedule schedule = new Schedule();
...@@ -82,6 +84,19 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra ...@@ -82,6 +84,19 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
return this.container; return this.container;
} }
public void setPagingIndices(int index1, int index2) {
pagingIndex1 = index1;
pagingIndex2 = index2;
}
public int getPagingIndex1() {
return pagingIndex1;
}
public int getPagingIndex2() {
return pagingIndex2;
}
/** /**
* Implementation note: Not called in this class, but may be used by subclasses. * Implementation note: Not called in this class, but may be used by subclasses.
* *
...@@ -155,6 +170,7 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra ...@@ -155,6 +170,7 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
long t1 = System.currentTimeMillis(); long t1 = System.currentTimeMillis();
try { try {
init(); init();
this.schedule.runJobs(TransactionStage.PRE_INIT);
this.schedule.runJobs(TransactionStage.INIT); this.schedule.runJobs(TransactionStage.INIT);
getContainer() getContainer()
.getTransactionBenchmark() .getTransactionBenchmark()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment