TeeTime issueshttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues2017-12-23T07:23:29+01:00https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/280``execute()`` should throw Exception2017-12-23T07:23:29+01:00Christian Wulf``execute()`` should throw ExceptionIt's unhandy to catch checked exceptions in ``execute()``.It's unhandy to catch checked exceptions in ``execute()``.Version 3.0https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/210Add another scheduling concept: thread pool with task queues2017-12-22T10:36:20+01:00Christian WulfAdd another scheduling concept: thread pool with task queuesto compare with pipe scheduling incl. SPSC scenarioto compare with pipe scheduling incl. SPSC scenarioVersion 3.0https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/335Automatically determine a reasonable capacity in TaskQueue2017-12-22T10:32:01+01:00Christian WulfAutomatically determine a reasonable capacity in TaskQueueChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/349GlobalTaskPoolScheduling waits infinitely2017-12-22T10:07:42+01:00Christian WulfGlobalTaskPoolScheduling waits infinitely...when executing ``File2SeqOfWords`` with one thread.
**Possible solution:**
Execute one (or more?) of the stages in the full task pool. In this way, the full pool is drained. Afterwards, the thread must retry adding the failing stage....when executing ``File2SeqOfWords`` with one thread.
**Possible solution:**
Execute one (or more?) of the stages in the full task pool. In this way, the full pool is drained. Afterwards, the thread must retry adding the failing stage.Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/253What could we implement in Java 1.8?2017-12-22T09:55:14+01:00Nelson Tavares de SousaWhat could we implement in Java 1.8?E.g.: Lambdas in StagesE.g.: Lambdas in Stageshttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/356Set IPipe.hasMore to deprecated2017-12-22T09:48:28+01:00Christian WulfSet IPipe.hasMore to deprecatedVersion 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/337Fix PipelineTest.shouldExecutePipelineCorrectlyManyElements()2017-12-19T16:05:02+01:00Christian WulfFix PipelineTest.shouldExecutePipelineCorrectlyManyElements()The global task pool scheduling does not work correctly when executing stages with reflexive pipes.The global task pool scheduling does not work correctly when executing stages with reflexive pipes.Version 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/354Add folder for integration tests2017-12-19T16:02:20+01:00Christian WulfAdd folder for integration testsVersion 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/4Test Teetime integration with Kieker2017-11-01T15:46:54+01:00Christian WulfTest Teetime integration with KiekerRelease of Kieker 1.11https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/351Add new Java 9 hint for spin waits2017-10-20T21:05:00+02:00Christian WulfAdd new Java 9 hint for spin waitssee JEP 285: Spin-Wait Hints (http://openjdk.java.net/jeps/285)see JEP 285: Spin-Wait Hints (http://openjdk.java.net/jeps/285)https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/346Pass scheduling strategy to the `Execution`2017-10-20T20:15:35+02:00Christian WulfPass scheduling strategy to the `Execution`Consequence: we then could remove the class `ConfigurationContext`Consequence: we then could remove the class `ConfigurationContext`Version 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/341Finish implementation of DynamicTaskFarmStage2017-10-20T20:14:50+02:00Christian WulfFinish implementation of DynamicTaskFarmStageSo far, ``declareActive()`` at runtime is required, but not yet implemented/mergedSo far, ``declareActive()`` at runtime is required, but not yet implemented/mergedVersion 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/350Let threads start their execution not until receiving a sign by the scheduler2017-08-16T13:52:37+02:00Christian WulfLet threads start their execution not until receiving a sign by the schedulertry to use a similar/same methodology for both schedulerstry to use a similar/same methodology for both schedulersChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/336PipelineTest throws "Queue full"2017-08-16T07:22:58+02:00Christian WulfPipelineTest throws "Queue full"Independent of whether we use ``StatelessCounter`` or ``Counter``.
Is caused by adding a stage to one of the MpMc queues (a.k.a level queues) in the task pool.Independent of whether we use ``StatelessCounter`` or ``Counter``.
Is caused by adding a stage to one of the MpMc queues (a.k.a level queues) in the task pool.Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/348Fix FIXMEs2017-08-15T15:05:47+02:00Christian WulfFix FIXMEsChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/347Fix concurrency bug in DynamicDistributorTest.shouldWorkWithCreateActionTrigg...2017-08-15T13:06:25+02:00Christian WulfFix concurrency bug in DynamicDistributorTest.shouldWorkWithCreateActionTriggers()```java
java.lang.AssertionError:
Expected: is <[2]>
but: was <[2]>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:956)
at org.junit.Assert.assertThat(Assert.java:923)
...```java
java.lang.AssertionError:
Expected: is <[2]>
but: was <[2]>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:956)
at org.junit.Assert.assertThat(Assert.java:923)
at teetime.stage.basic.distributor.dynamic.DynamicDistributorTest.assertValuesForIndex(DynamicDistributorTest.java:119)
at teetime.stage.basic.distributor.dynamic.DynamicDistributorTest.shouldWorkWithCreateActionTriggers(DynamicDistributorTest.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
```Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/343Use an atomic bit vector to represent non-empty stage levels2017-08-15T12:40:10+02:00Christian WulfUse an atomic bit vector to represent non-empty stage levelsRequirements:
- arbitrary vector length (not only 32 or 64 bits)
- low synchronization overhead (e.g., by using compare and set)Requirements:
- arbitrary vector length (not only 32 or 64 bits)
- low synchronization overhead (e.g., by using compare and set)Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/345Speed up the scheduling of stateless stages2017-08-15T11:20:26+02:00Christian WulfSpeed up the scheduling of stateless stagesIdea:
The instance of a stateless stage could be executed by multiple threads at the same time.
Current Problems:
- The user must still indicate whether the ordering should be preserved. However, we could set the default to "preserve or...Idea:
The instance of a stateless stage could be executed by multiple threads at the same time.
Current Problems:
- The user must still indicate whether the ordering should be preserved. However, we could set the default to "preserve ordering".
- Each thread must reserve or copy its required number of input elements. For this purpose, such a stateless stage must consume a **fixed** number of elements per execution.
- What should happen with unprocessed input elements if an error occurs?Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/300Execution.executeNonBlocking should return a future object2017-08-06T07:23:30+02:00Nils Christian EhmkeExecution.executeNonBlocking should return a future objectIt is currently cumbersome to work with an execution that has been started with executeNonBlocking. I want to provide the caller an object that can be used to cancel the execution or to wait for the execution to be finished. Currently I ...It is currently cumbersome to work with an execution that has been started with executeNonBlocking. I want to provide the caller an object that can be used to cancel the execution or to wait for the execution to be finished. Currently I would have to implement an own class for this task or return the whole execution.
It would probably be better to return a class like this by default. Suggestion: Either let the execution implement a suitable interface and simply return the execution or implement a simple class for this job (preferable with the default Java concurrent API - this would reduce the impact of the TeeTime API on the rest of the application).Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/342Report Filter Names at Connection Errors2017-08-04T22:48:22+02:00Marc AdolfReport Filter Names at Connection ErrorsIn bigger configurations it is useful to exactly know where errors occur.
Messages like "The port teetime.framework.InputPort@3b809711 is not connected with another port."
are not helpful in these cases. The name of the class which the ...In bigger configurations it is useful to exactly know where errors occur.
Messages like "The port teetime.framework.InputPort@3b809711 is not connected with another port."
are not helpful in these cases. The name of the class which the input port belongs to can be a good indicator where to look to fix this error.Christian WulfChristian Wulf2017-08-16