рефакторинг нити планировщика двм тестов на сервере.

This commit is contained in:
2023-12-14 18:45:41 +03:00
parent c07b72eb5d
commit 1fc60e6c12
11 changed files with 403 additions and 177 deletions

View File

@@ -29,4 +29,5 @@ public class TestingPackage extends riDBObject {
progress = tasksPackage.progress;
state = tasksPackage.state;
}
public void destructor(){}
}

View File

@@ -78,13 +78,13 @@ public abstract class TestingPlanner<P extends TestingPackage> {
protected abstract TasksPackageState getStateAfterStart();
protected void InitSessionCredentials() {
}
protected abstract void TestsSynchronize();
protected abstract void PackageWorkspaceCreation();
protected abstract void AnalyseResults();
protected abstract void PackageStart();
protected abstract boolean CheckNextState();
protected abstract void DownloadResults();
protected abstract void Kill();
protected abstract void TestsSynchronize() throws Exception;
protected abstract void PackageWorkspaceCreation() throws Exception;
protected abstract void AnalyseResults() throws Exception;
protected abstract void PackageStart() throws Exception;
protected abstract boolean CheckNextState() throws Exception;
protected abstract void DownloadResults() throws Exception;
protected abstract void Kill() throws Exception;
protected boolean Connect() {
return true;
}
@@ -152,6 +152,11 @@ public abstract class TestingPlanner<P extends TestingPackage> {
Disconnect();
}
}
//--
testingPackage.destructor();
testingPackage = null;
System.gc();
//--
}
} catch (Exception ex) {
ex.printStackTrace();

View File

@@ -379,10 +379,29 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = db.getFirstActiveDVMPackage();
break;
case DVMPackageNeedsKill:
DVMPackageNeedsKill();
break;
default:
throw new RepositoryRefuseException("Неподдерживаемый код: " + code);
}
}
private void DVMPackageNeedsKill() {
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = false;
/*
int packageId = (int) request.object;
boolean res_ = false;
for (TasksPackageToKill tasksPackageToKill : db.packagesToKill.Data.values()) {
if (tasksPackageToKill.packageId == packageId) {
res_ = true;
break;
}
}
response.object = res_;
*/
}
public void UpdateTestTasks() throws Exception {
Vector<TestCompilationTask> compilationTasks = (Vector<TestCompilationTask>) request.object;
account_db.BeginTransaction();
@@ -596,7 +615,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
+ "\nТест будет удален"
);
}
}else if (object instanceof DVMPackage) {
} else if (object instanceof DVMPackage) {
DVMPackage dvmPackage = (DVMPackage) object;
//--
dvmPackage.state = TasksPackageState.Queued;