| Age | Commit message (Collapse) | Author |
|
This change pins the versions of the GitHub Actions runner images used
by our workflows to prevent regressions when the latest Ubuntu/Windows
image is updated.
|
|
This change updates the build workflow in GitHub Actions to enable
caching of the Gradle build when it happens on the master branch. Due to
a mistake, this would only happen on a non-existent 'main' branch.
|
|
This change updates the GitHub Actions pipeline that is used to publish
the Docker images when a new release is published. Since the web API
implementation was moved to `opendc-web/opendc-web-server`, this
workflow started failing.
Furthermore, we remove the use of the deprecated `::set-output` syntax.
|
|
This change fixes an issue where some of the traces from the Workflow
Trace Archive would fail to load with the trace format in OpenDC. This
was caused by one of the fields being stored as a double, while the
formats expects it to be a long.
Parquet does not support unioning primitive types. Therefore, we have to
disable strict type checking when reading the file. Furthermore, we need
to support double entries for storing the workflow ids.
|
|
This change fixes an issue with the `ForwardingFlowMultiplexer` where
the capacity of new outlets were not recorded correctly due to no
handler being attached to idle outlets, causing the `pull` events to be
disregarded.
This bug manifested in an issue where the CPU counters where reporting
negative values. This was caused by the CPU usage/demand being
subtracted from a zero capacity.
|
|
This pull request is one in a series of changes that attempt to clean up the
warts of the OpenDC Compute Service. These changes should make the
API more robust for future developments.
## Implementation Notes :hammer_and_pick:
* Do not suspend in compute API
* Expose state directly to clients
* Do not split interface and implementation
## External Dependencies :four_leaf_clover:
* N/A
## Breaking API Changes :warning:
* The methods of `ComputeClient` do not have the suspend modifier anymore.
* Changes to the classes of `ComputeClient` are now immediately visible on the server side.
It is not necessary to call `refresh` anymore.
* `ComputeService` must be constructed via its builder class now.
|
|
This change inlines the implementation of the compute service into the
`ComputeService` interface. We do not intend to provide multiple
implementations of the service. In addition, this approach makes more
sense for a Java implementation.
|
|
This change updates the implementation of the compute service to expose
state to clients created by the compute service.
|
|
This change updates the API interface of the OpenDC Compute service to
not suspend execution using Kotlin Coroutines.
The suspending modifiers were introduced in case the ComputeClient would
communicate with the service over a network connection. However, the main
use-case has been together with the ComputeService, where the suspending
modifiers only frustrate the user experience when writing experiments.
Furthermore, with the advent of Project Loom, it is not necessarily a
problem to block the (virtual) thread during network communications.
|
|
This pull request updates the build and runtime dependencies used by OpenDC to their latest version compatible with the project.
## Implementation Notes :hammer_and_pick:
* Update simulator dependency versions
* Update Gradle to 7.6
## External Dependencies :four_leaf_clover:
* Gradle
* Quarkus
* Slf4j
* Spotless
* Sentry
|
|
This change updates the simulator dependencies to the latest available
version where possible.
|
|
This change updates the Gradle wrapper version to 7.6 in order to
support building the project with Java 19.
|
|
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4)
---
updated-dependencies:
- dependency-name: loader-utils
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This pull request increases the minimum version of Java required by OpenDC to 17.
This new version of Java introduces several new features compared to our old minimum
version (11), which we attempt to apply in this conversion.
## Implementation Notes :hammer_and_pick:
* Increase minimum Java version to Java 17
* Use RandomGenerator as randomness source
* Add common dispatcher interface
* Add compatibility with Kotlin coroutines
* Use InstantSource as time source
* Re-implement SimulationScheduler as Dispatcher
* Replace use of CoroutineContext by Dispatcher
## External Dependencies :four_leaf_clover:
* Java 17
## Breaking API Changes :warning:
* The use of `CoroutineContext` and `Clock` as parameters of classes has been replaced
by the `Dispatcher` interface.
* The use of `Clock` has been replaced by `InstantSource` which does not carry time
zone info.
* The use of `Random` and `SplittableRandom` as parameter type has been replaced
by `RandomGenerator`
|
|
This change removes the use of a Spy object from the TestInlet class.
Since the Spy is not actually used in our tests, we remove it due to the
high initialization cost.
|
|
This change fixes the links to the documentation in the project README.
These links assumed that the new website was already deployed at
opendc.org.
|
|
This change updates the simulator dependencies to the latest available
version where possible.
|
|
This change updates the Gradle wrapper version to 7.6-rc3 in order to
support building the project with Java 19.
|
|
This change updates the build configuration for Gradle to make use of
its Java Toolchains feature which enables running/testing multiple Java
versions at the same time. This feature can also provision a Java
installation if it is not available on the user's system.
|
|
This change replaces the use of `CoroutineContext` for passing the
`SimulationDispatcher` across the different modules of OpenDC by the
lightweight `Dispatcher` interface of the OpenDC common module.
|
|
This change updates the `SimulationScheduler` class to implement the
`Dispatcher` interface from the OpenDC Common module, so that OpenDC
modules only need to depend on the common module for dispatching future
task (possibly in simulation).
|
|
This change updates the modules of OpenDC to always accept
the `InstantSource` interface as source of time. Previously we used
`java.time.Clock`, but this class is bound to a time zone which does not
make sense for our use-cases.
Since `java.time.Clock` implements `java.time.InstantSource`, it can be
used in places that require an `InstantSource` as parameter. Conversion
from `InstantSource` to `Clock` is also possible by invoking
`InstantSource#withZone`.
|
|
This change adds support for converting a `Dispatcher` implementation
into a `CoroutineDispatcher` instance.
|
|
This pull request removes the dependency on Sass for the OpenDC web UI, by converting
the existing Sass files into CSS. With the recent updates of CSS, we have no use-case for
Sass anymore and sticking to CSS reduces the build infrastructure necessary.
## Implementation Notes :hammer_and_pick:
* Drop dependency on Sass
* Update web dependencies to latest version
|
|
This change updates the dependencies of the OpenDC web UI to latest
version where possible.
|
|
This change updates the OpenDC web UI to not rely on Sass for
stylesheets. CSS in combination with PostCSS has become powerful enough
for our use-cases as indicated by the small differences between the CSS
and SCSS versions of our files.
By switching to CSS, we can make use of Turbopack to build the project,
which is a re-implementation of Webppack in Rust and is able to build
projects much faster.
|
|
This change adds a new interface `Dispatcher` that is used throughout
OpenDC for scheduling the execution of future tasks. This replaces the
`CoroutineContext` and `Clock` that exist on many of the implementations
in OpenDC.
With this approach, we reduce the dependency on Kotlin Coroutines.
|
|
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.3/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.2...v2.0.3)
---
updated-dependencies:
- dependency-name: loader-utils
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
|
This change updates the modules of OpenDC to always accept
the `RandomGenerator` interface as source of randomness. This interface
is implemented by the slower `java.util.Random` class, but also by the
faster `java.util.SplittableRandom` class
|
|
This change updates the Gradle configuration to target Java 17 (instead
of Java 11) as the lowest denominator when running/building OpenDC. This
version of Java has been available for more than a year and is the
latest LTS release.
|
|
This pull request adds support for snapshotting simulated workloads in OpenDC, which
serves as the basis for virtual machine migration/suspension support.
Part of #32
## Implementation Notes :hammer_and_pick:
* Support synchronous update of FlowStage
* Report exceptions in onStop as suppressed
* Add support for snapshotting workloads
|
|
This change updates the interface of `SimWorkload` to support
snapshotting workloads. We introduce a new method `snapshot()` to this
interface which returns a new `SimWorkload` that can be started at a
later point in time and on another `SimMachine`, which continues
progress from the moment the workload was snapshotted.
|
|
This change updates the implementation of `SimMachineContext` to report
exceptions thrown in `onStop` as suppressed exceptions if an exception
caused the workload to stop.
|
|
This change adds a new method to `FlowStage` called `sync()` which
enables users to synchronously update the stage at the current
timestamp.
This functionality is neccessary to support snapshotting since we need
to synchronize the state of the `FlowStage` before creating a snapshot
of the workload.
|
|
This pull request implements customizable startup and clean-up time for virtual machine.
We achieve this by implementing `SimWorkload` chaining and modelling start-up and
clean-up time using `SimWorkload` as well.
Implements #33
## Implementation Notes :hammer_and_pick:
* Store method parameters in class files
* Add completion parameter to startWorkload
* Provide workload constructors in SimWorkloads
* Add support for resetting machine context
* Add support for chaining workloads
* Use workload chaining for boot delay
* Model host boot time
* Do not suspend on guest start
* Use static logger field
## Breaking API Changes :warning:
* `SimMachine#startWorkload` now has a third parameter `completion` which is invoked when
the workload finishes executing (either due to failure or success).
* `SimFlopsWorkload` and `SimRuntimeWorkload` can be instantiated via `SimWorkloads`.
|
|
This change updates the `Guest` class implementation to use a static
logger field instead of allocation a new logger for every guest.
|
|
This change updates the `Host` interface to remove the suspend modifiers
to the start, stop, spawn, and delete methods of this interface. We now
assume that the host immediately launches the guest on invocation of
this method.
|
|
This change updates `SimHost` to support modeling the time and resource
consumption it takes to boot the host. The boot procedure is modeled as a
`SimWorkload`.
|
|
This change updates the implementation of `SimHost` to use workload
chaining for modelling boot delays. Previously, this was implemented by
sleeping 1 millisecond using Kotlin coroutines. With this change, we
remove the need for coroutines and instead use the `SimDurationWorkload`
to model the boot delay.
In the future, we envision a user-supplied stochastic boot model to
model the boot delay for VM instances.
|
|
This change adds a new static method `chain` to `SimWorkloads` to chain
multiple workloads sequentially.
|
|
This change updates the interface of `SimMachineContext` to allow
workloads to reset all resources provided by the machine to the
workload. This allows us to implement a `SimWorkload` that can compose
multiple workloads.
|
|
This change introduces a new class SimWorkloads which provides
construction methods for the standard workloads available in OpenDC.
|
|
This change updates the interface of `SimMachine#startWorkload` to
introduce a parameter `completion` that is invoked when the workload
completes either succesfully or due to failure.
This functionality has often been implemented by wrapping a
`SimWorkload` and catching its exceptions. However, since this
functionality is used in all usages of `SimMachine#startWorkload` we
instead embed it into `SimMachine` itself.
|
|
This change updates the build configuration to enable Java to emit
method parameter information in the class files. This provides more
useful error messages when not enough parameters are given.
|
|
This pull request updates the web interface to make use of Next.js 13 and React 18.
## Implementation Notes :hammer_and_pick:
* Drop dependency on FontAwesome
* Update to Next 13 and React 18
* Drop dependency on Roboto font
* Make root redirect non-permanent
* Do not optimize images for export
* Update to Node 18 for the build process
* Ensure consistency of build tasks
* Update README.md of web UI
* Default to anonymous auth domain
* Disable configuration of basePath
## External Dependencies :four_leaf_clover:
* Next.js 13
* React 18
* PatternFly 4
* Node 18
## Breaking API Changes :warning:
* The base path of the web UI cannot be configured anymore via the Quarkus extension.
The previous implementation relied on Next.js internals and this functionality cannot be
provided without resorting to hacks. Since this functionality was not actually used, we have
removed it for now.
|
|
This change removes the ability to configure the basePath of the Next.js
application using the Quarkus extension. This functionality was brittle
due to relying on Next.js internals coping with out replacement
strategy.
We should wait for Next.js to implement proper support for
changing the base path at runtime before making this functionality
available again.
|
|
This change updates the auth code in the OpenDC web UI to default to
the anonymous auth domain if no configuration is provided.
|
|
This change updates the README to match the updated build process for
the web interface.
|
|
This change updates the build script for the web UI to use consistent
names for the build tasks.
|
|
This change updates the build process for the OpenDC website to use Node 18
for building the website.
|