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
No related branches found
No related tags found
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;
* @author Timm Fitschen <t.fitschen@indiscale.com>
*/
public enum TransactionStage {
PRE_INIT,
INIT,
PRE_CHECK,
CHECK,
......
......@@ -31,6 +31,8 @@ import org.caosdb.server.jobs.JobAnnotation;
import org.caosdb.server.jobs.TransactionStage;
import org.caosdb.server.query.Query;
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;
@JobAnnotation(flag = "query", stage = TransactionStage.INIT)
......@@ -53,8 +55,16 @@ public class ExecuteQuery extends FlagJob {
.addMessage(new Message(MessageType.Info, (MessageCode) null, e.getMessage()));
}
getContainer().addMessage(queryInstance);
int index1 = getTransaction().getPagingIndex1();
int index2 = getTransaction().getPagingIndex2();
int ii = 0;
for (final EntityInterface entity : getContainer()) {
if (!(getTransaction() instanceof Retrieve) || (ii >= index1 && ii < index2)) {
getTransaction().getSchedule().addAll(loadJobs(entity, getTransaction()));
} else {
entity.setEntityStatus(EntityStatus.IGNORE);
}
ii++;
}
}
}
......
......@@ -24,14 +24,12 @@ package org.caosdb.server.jobs.core;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.caosdb.server.entity.EntityInterface;
import org.caosdb.server.jobs.FlagJob;
import org.caosdb.server.jobs.JobAnnotation;
import org.caosdb.server.jobs.TransactionStage;
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 static final int DEFAULT_LENGTH = 100;
......@@ -53,6 +51,8 @@ public class Paging extends FlagJob {
index2 = index1 + Integer.parseInt(m.group(2));
}
}
getTransaction().setPagingIndices(index1, index2);
/*
int i = 0;
for (final EntityInterface e : getContainer()) {
if (i >= index2 || i < index1) {
......@@ -61,6 +61,7 @@ public class Paging extends FlagJob {
}
i++;
}
*/
}
}
}
......
......@@ -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
* 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
* @throws SQLException
......
......@@ -60,6 +60,8 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
public static final String CLEAN_UP = "TransactionCleanUp";
private final C container;
private int pagingIndex1;
private int pagingIndex2;
private Access access = null;
private final Schedule schedule = new Schedule();
......@@ -82,6 +84,19 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
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.
*
......@@ -155,6 +170,7 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
long t1 = System.currentTimeMillis();
try {
init();
this.schedule.runJobs(TransactionStage.PRE_INIT);
this.schedule.runJobs(TransactionStage.INIT);
getContainer()
.getTransactionBenchmark()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment