Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
9b6fec0
Test change 🧪
jakobvogel Apr 11, 2025
5d38734
Lokalise: updates
scireumskip Apr 11, 2025
bfe15c8
Merge pull request #558 from scireum/lokalise-2025-04-11_15-10-33
jakobvogel Apr 11, 2025
3072286
Inserts values as Boolean objects ⚙️
jakobvogel Apr 14, 2025
d3b4548
Inserts new emojis 🧑‍🎨
jakobvogel Apr 14, 2025
fdb5767
Adapts sorting to official list 👮
jakobvogel Apr 14, 2025
3ec78e1
Tests one of the new emojis 🧪
jakobvogel Apr 14, 2025
1064943
Merge pull request #559 from scireum/feature/jvo/Emojis
jakobvogel Apr 15, 2025
0bea9f1
Lokalise: updates
scireumskip Apr 22, 2025
9b5d5df
Fixes typo 👩‍🏫
jakobvogel Apr 22, 2025
2faa789
Merge pull request #560 from scireum/lokalise-2025-04-22_13-09-22
jakobvogel Apr 22, 2025
792c672
Lokalise: updates
scireumskip Apr 25, 2025
07688c6
Merge pull request #561 from scireum/lokalise-2025-04-25_12-20-39
jakobvogel Apr 25, 2025
9e80854
Adds the Strings.areAllFilled
idlira Apr 29, 2025
7dd23e9
Removes a deprecated method
idlira Apr 29, 2025
1d275a5
Merge pull request #562 from scireum/ili/OX-11912
idlira Apr 29, 2025
1210c6e
First try for PR automatic tests with github-actions
ymo-sci May 12, 2025
295a12b
add compile step on pushing to master
ymo-sci May 12, 2025
6ae57c4
cache dependencies to reduce build-time
ymo-sci May 12, 2025
fdc7027
try to fix cache not working
ymo-sci May 12, 2025
27d82df
use cached mvn dependencies
ymo-sci May 12, 2025
392af45
try nightly test with mio secret and notification for failing tests
ymo-sci May 12, 2025
698f006
try UTC time fix
ymo-sci May 12, 2025
e139e70
try to fix
ymo-sci May 12, 2025
ccbb6d5
fix test again and notify every time for first try.
ymo-sci May 12, 2025
07ec459
Merge pull request #563 from scireum/feature/ymo/DO-409-gh-actions
ymo-sci May 14, 2025
3aa1031
fix broken link/adjust text and only send notification on failures
ymo-sci May 15, 2025
b692d17
Adds helper for quoting a string ❝
jakobvogel May 16, 2025
1e17c0b
Adds tests for quoting strings 🧪
jakobvogel May 16, 2025
cd256a5
Removes `@Nonnull` annotation 🧹
jakobvogel May 16, 2025
45dcffa
Fixes typos 👨‍🏫
jakobvogel May 16, 2025
358ca9a
Improves documentation ✍️
jakobvogel May 16, 2025
5f485e3
Adds support for secondary quotation marks ❜
jakobvogel May 16, 2025
d665ad7
Merge pull request #564 from scireum/feature/jvo/OX-11996-Quotes
jakobvogel May 16, 2025
58519b1
Lokalise: updates
scireumskip May 16, 2025
211aa71
Merge pull request #566 from scireum/lokalise-2025-05-16_10-25-20
jakobvogel May 16, 2025
ed71d04
Merge pull request #565 from scireum/feature/ymo/DO-409-mvn-mio
ymo-sci May 16, 2025
55e04d4
modernize auto release on tag-push
ymo-sci May 19, 2025
3e1dc63
Merge pull request #567 from scireum/feature/ymo/DO-409-cleanup
sabieber May 21, 2025
9f0c2f4
first try for sonarqube on github-actions with github-authenticated s…
ymo-sci May 21, 2025
38b3c37
change to fix-value for test now
ymo-sci May 21, 2025
b034809
try with organization...
ymo-sci May 21, 2025
be51ae6
try to trigger manually for testing sonarqube connection and execution
ymo-sci May 22, 2025
088c07e
Merge pull request #568 from scireum/feature/ymo/DO-409-mvn-sonar
ymo-sci May 27, 2025
210d7dc
Enhances test case
mkeckmkeck Jun 3, 2025
a42af95
Introduces a failing test case for csv escaped quote writing
mkeckmkeck Jun 3, 2025
2d8bd69
Changes the csv write behavior of quoting
mkeckmkeck Jun 3, 2025
3b3b2cb
Fixes previously introduced test
mkeckmkeck Jun 3, 2025
c260ff6
Improves readability using text block
mkeckmkeck Jun 3, 2025
d34681c
Adds some tests using the examples from rfc 4180
mkeckmkeck Jun 3, 2025
fd07ecf
Fixes newly introduces test
mkeckmkeck Jun 3, 2025
6f71531
Merge pull request #569 from scireum/feature/mke/SIRI-1110_csv_rfc
mkeckmkeck Jun 4, 2025
6f82fc1
Provide helper for quoting spaces in URLs
sabieber Jun 11, 2025
7069e47
Fix copy & paste typo
sabieber Jun 11, 2025
d09c0a4
Move some URL related helpers to the new helper class
sabieber Jun 11, 2025
b289234
Call new moved helpers where possible
sabieber Jun 11, 2025
9c6f29b
Merge pull request #570 from scireum/feature/sbi/OX-11739
sabieber Jun 11, 2025
f43335b
Revert "Refactoring"
mkeckmkeck Jun 25, 2025
403d139
Revert "Reduces logging for blacklisted hosts"
mkeckmkeck Jun 25, 2025
05a41a2
Merge pull request #571 from scireum/feature/mke/SIRI-1115_blacklisti…
mkeckmkeck Jun 26, 2025
c2918e0
Properly reads Objects from Json
mkeckmkeck Jun 27, 2025
9e1b21d
Formatting only
mkeckmkeck Jun 27, 2025
43b109f
Merge pull request #572 from scireum/feature/mke/SE-14628_improves_js…
mkeckmkeck Jun 27, 2025
f111afc
Removes an unused method
mkeckmkeck Jul 4, 2025
c2b0626
Improves regex against polynomial backtracking
mkeckmkeck Jul 7, 2025
8e48137
Fixes html entity decoding regular expressions
mkeckmkeck Jul 7, 2025
7ea4df5
Minor sonar fixes
mkeckmkeck Jul 7, 2025
d84a05f
Typo and formatting
mkeckmkeck Jul 7, 2025
946d4b5
Drive by: Remove redundant sam constructor
mkeckmkeck Jul 7, 2025
84f0d50
Autoformat
mkeckmkeck Jul 7, 2025
056bca6
Update src/main/java/sirius/kernel/settings/Extension.java
mkeckmkeck Jul 7, 2025
799ae6e
Merge pull request #573 from scireum/mke/SE-14326_sonar
mkeckmkeck Jul 8, 2025
54d3178
Upgrades to java24 and minor 3rd party lib upgrades
mkeckmkeck Jul 11, 2025
d349c41
Uses new API in our json utility class
mkeckmkeck Jul 11, 2025
3b2646b
Suppresses deprecation warning
mkeckmkeck Jul 11, 2025
55bee2f
Uses new java24 capable image to build and test in drone
mkeckmkeck Jul 11, 2025
99dac08
Uses new java24 capable image to build and test in github actions
mkeckmkeck Jul 11, 2025
f0cd311
Merge pull request #574 from scireum/mke/SIRI-1072_java24_and_libs
mkeckmkeck Jul 11, 2025
9421983
Format overrides of docker-compose-rule-core versions block-like
mkeckmkeck Jul 25, 2025
5a50064
Includes current version of commons lang3
mkeckmkeck Jul 25, 2025
4c9668e
Merge pull request #575 from scireum/mke/SIRI-1072_lib_upgrade
mkeckmkeck Jul 25, 2025
171b4dc
Reapply "Reduces logging for blacklisted hosts"
mkeckmkeck Sep 24, 2025
1dd2df9
Reapply "Refactoring"
mkeckmkeck Sep 24, 2025
d7d2e21
Marks blacklist follow-up exceptions to decide if they should be logged
mkeckmkeck Sep 26, 2025
74c54de
Implements blacklist log message skip for SOAPClient
mkeckmkeck Sep 26, 2025
4dd4774
Sonarlint fix
mkeckmkeck Sep 26, 2025
b1a3478
Improves blacklist log message
mkeckmkeck Sep 26, 2025
06ee780
Make non-logging mark by IOException subclass
mkeckmkeck Sep 26, 2025
d30e7b4
Merge pull request #577 from scireum/mke/SIRI-1118_reduce_blacklist_logs
mkeckmkeck Sep 26, 2025
9b49a99
Fix the timer command
jmuscireum Sep 30, 2025
eb8a08d
Merge pull request #578 from scireum/feature/jmu/timer-command-fix
jmuscireum Oct 1, 2025
4283ab0
Upgrades libs
idlira Oct 16, 2025
d0643b8
Fixes test case failing after kotlin update
idlira Oct 16, 2025
57b8a5a
Merge pull request #579 from scireum/ili/SIRI-1146
idlira Oct 16, 2025
00691fc
Moves Outcall from xml package to commons
andyHa Nov 19, 2025
a65607c
Permits reusing created HttpClient instances
andyHa Nov 19, 2025
4fbbde1
Misc code cleanup
andyHa Nov 19, 2025
82808a2
Misc code cleanup
andyHa Nov 19, 2025
b79d421
Adds a helper method to provide a bearer token like a JWT
andyHa Nov 19, 2025
bde2b9d
Adds a simple helper to re-try tasks on io errors
andyHa Nov 19, 2025
77bbe2b
Improves JavaDoc
andyHa Nov 19, 2025
32fe3d5
Centralizes constants and documents them properly
andyHa Nov 20, 2025
e18b98a
Marks optional parameters as Nullable
andyHa Nov 20, 2025
a44b08b
Modernizes timeout handling
andyHa Nov 20, 2025
216c8cf
Minor code cleanup as suggested in PR review
andyHa Nov 20, 2025
34e20e2
Code cleanup
andyHa Nov 20, 2025
8527633
BREAKING: Eliminates duplicate header names
andyHa Nov 20, 2025
6c194c0
Merge pull request #580 from scireum/feature/aha/outcall-cleanup
andyHa Nov 20, 2025
8ccfa44
Adds an explicit constant to better document behavior
andyHa Nov 21, 2025
5e00d24
Merge pull request #581 from scireum/feature/aha/minor-outcall-cleanup
andyHa Nov 21, 2025
532198d
Lokalise: updates
scireumskip Nov 28, 2025
06a7f75
Update src/main/resources/kernel_lt.properties
fhaScireum Nov 28, 2025
f6f2172
Merge pull request #585 from scireum/lokalise-2025-11-28_12-24-15
fhaScireum Nov 28, 2025
7845d86
Closes the executor in the right place
idlira Dec 4, 2025
a0bb3ef
Uses unnamed variable where not used
idlira Dec 4, 2025
ce54349
Permits to override when the executor must stop
idlira Dec 4, 2025
d297728
Covers for RejectedExecutionException
idlira Dec 5, 2025
2b3f063
Merge pull request #586 from scireum/ili/OX-12263
idlira Dec 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ clone:

steps:
- name: compile
image: scireum/sirius-build-jdk23
image: scireum/sirius-build-jdk24
commands:
- mvn clean compile
volumes: *scireum_volumes
Expand All @@ -28,7 +28,7 @@ steps:
- push

- name: cron_unit_tests
image: scireum/sirius-build-jdk23
image: scireum/sirius-build-jdk24
commands:
- mvn clean test
volumes: *scireum_volumes
Expand All @@ -48,7 +48,7 @@ steps:
- cron

- name: test
image: scireum/sirius-build-jdk23
image: scireum/sirius-build-jdk24
commands:
- mvn clean test -Dtest.excluded.groups=nightly
volumes: *scireum_volumes
Expand All @@ -57,7 +57,7 @@ steps:
- pull_request

- name: deploy
image: scireum/sirius-build-jdk23
image: scireum/sirius-build-jdk24
commands:
- sed -i 's/DEVELOPMENT-SNAPSHOT/${DRONE_TAG}/g' pom.xml
- mvn clean deploy -DskipTests
Expand All @@ -77,7 +77,7 @@ steps:
- tag

- name: sonar
image: scireum/sirius-build-jdk23
image: scireum/sirius-build-jdk24
commands:
- sed -i 's/DEVELOPMENT-SNAPSHOT/${DRONE_TAG}/g' pom.xml
- mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent test org.jacoco:jacoco-maven-plugin:report sonar:sonar -Dsonar.projectKey=${DRONE_REPO_NAME}
Expand Down
23 changes: 0 additions & 23 deletions .github/workflows/main.yml

This file was deleted.

37 changes: 37 additions & 0 deletions .github/workflows/nightly-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Nightly Tests
on:
schedule:
- cron: '0 0 * * *'

jobs:
test:
runs-on: ubuntu-latest
container:
image: scireum/sirius-build-jdk24
steps:
- name: Checkout project
uses: actions/checkout@v4

- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: |
~/.m2/repository
/root/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-

- name: Test project including nightly tests
run: mvn clean test

notify:
if: failure()
runs-on: ubuntu-latest
steps:
- name: Send Slack notification
run: |
curl -X POST -H 'Content-type: application/json' --data '{
"channel": "scireum-dev",
"text": "Nightly Tests failed for **${{ github.event.repository.name }}**: [Details](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})"
}' ${{ secrets.MEMOIO_SCIREUM_DEV }}
25 changes: 25 additions & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Execute Tests on Pull Request
on:
pull_request:

jobs:
test:
runs-on: ubuntu-latest
container:
image: scireum/sirius-build-jdk24
steps:
- name: Checkout project
uses: actions/checkout@v4

- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: |
~/.m2/repository
/root/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-

- name: Compile and test project without nightly tests
run: mvn clean compile test -Dtest.excluded.groups=nightly
26 changes: 26 additions & 0 deletions .github/workflows/push-master.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Compile on push to master branch
on:
push:
branches:
- master
jobs:
compile:
runs-on: ubuntu-latest
container:
image: scireum/sirius-build-jdk24
steps:
- name: Checkout project
uses: actions/checkout@v4

- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: |
~/.m2/repository
/root/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-

- name: Compile project
run: mvn clean compile
20 changes: 20 additions & 0 deletions .github/workflows/release-on-tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Automatic Release on dev-Tag

on:
push:
tags:
- "dev-*.*.*"

jobs:
release:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Release
uses: softprops/action-gh-release@v2.2.2
with:
prerelease: true
generate_release_notes: true
28 changes: 28 additions & 0 deletions .github/workflows/sonarqube.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: SonarQube Analysis
on:
workflow_dispatch:

jobs:
sonarqube:
runs-on: ubuntu-latest
container:
image: scireum/sirius-build-jdk24
steps:
- name: Checkout project
uses: actions/checkout@v4

- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: |
~/.m2/repository
/root/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-

- name: Replace version in pom.xml
run: sed -i 's/DEVELOPMENT-SNAPSHOT/sonar-test/g' pom.xml

- name: Analyze project with SonarQube
run: mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent test org.jacoco:jacoco-maven-plugin:report sonar:sonar -Dsonar.projectKey=scireum_sirius-kernel_81e9dc44-1749-4a49-a1f6-686fdb86bad3 -Dsonar.token=${{ secrets.SONAR_TOKEN }} -Dsonar.host.url=${{ secrets.SONAR_HOST_URL }} -Dsonar.organization=scireum
25 changes: 17 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>com.scireum</groupId>
<artifactId>sirius-parent</artifactId>
<version>14.0.1</version>
<version>14.2.0</version>
</parent>
<artifactId>sirius-kernel</artifactId>
<name>SIRIUS kernel</name>
Expand All @@ -26,31 +26,31 @@
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
<version>1.4.3</version>
<version>1.4.5</version>
</dependency>

<!-- Useful helper classes by Google -->
<!-- Changelog: https://github.com/google/guava/releases -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.4.0-jre</version>
<version>33.5.0-jre</version>
</dependency>

<!-- JSR305 annotations like @Nonnull etc. -->
<!-- Changelog: https://github.com/spotbugs/spotbugs/releases -->
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>4.9.1</version>
<version>4.9.7</version>
</dependency>

<!-- Required logging bridge to make slf4j log to our logging system -->
<!-- Changelog: https://www.slf4j.org/news.html -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>2.0.16</version>
<version>2.0.17</version>
</dependency>

<!-- Used to auto-start Docker environments. Excluding dependencies not required for docker-compose. -->
Expand All @@ -70,14 +70,15 @@
</exclusion>
</exclusions>
</dependency>
<!-- Required, as the version provided by docker-compose-rule-core has security issues -->

<!-- START:
Required, as the version provided by docker-compose-rule-core has security issues -->
<!-- Changelog: https://github.com/apache/commons-io/blob/master/RELEASE-NOTES.txt -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.18.0</version>
<version>2.20.0</version>
</dependency>
<!-- Required, as the version provided by docker-compose-rule-core has security issues -->
<!-- Changelog: https://github.com/FasterXML/jackson/wiki/Jackson-Releases -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
Expand All @@ -87,5 +88,13 @@
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!-- Changelog: https://commons.apache.org/proper/commons-lang/changes.html -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.19.0</version>
</dependency>
<!-- Required, as the version provided by docker-compose-rule-core has security issues
END: -->
</dependencies>
</project>
36 changes: 32 additions & 4 deletions src/main/java/sirius/kernel/async/ParallelTaskExecutor.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Supplier;

/**
* Executes tasks in parallel in the current node using virtual threads with a limit on concurrency.
Expand All @@ -34,6 +36,7 @@ public class ParallelTaskExecutor {
private final Semaphore semaphore;
private final AtomicInteger taskCount;
private final CallContext currentContext;
private Supplier<Boolean> isActiveSupplier;

/**
* Creates a new parallel task executor.
Expand All @@ -46,9 +49,24 @@ public ParallelTaskExecutor(int maxConcurrentTasks) {
this.taskQueue = new LinkedBlockingQueue<>();
this.semaphore = new Semaphore(maxConcurrentTasks);
this.taskCount = new AtomicInteger(0);
this.isActiveSupplier = () -> TaskContext.get().isActive();
startProcessing();
}

/**
* Permits to override the active checker which is used to determine when to stop processing tasks.
* <p>
* By default, the executor checks whether the current {@link TaskContext} is still active which is enough
* is most cases, but more complex scenarios might require a custom check.
*
* @param isActiveSupplier the supplier which determines whether the executor is still active
* @return the executor itself for fluent method calls
*/
public ParallelTaskExecutor withIsActiveSupplier(Supplier<Boolean> isActiveSupplier) {
this.isActiveSupplier = isActiveSupplier;
return this;
}

/**
* Submits a task to be executed in parallel.
*
Expand All @@ -68,31 +86,41 @@ public boolean submitTask(Runnable task) {
});
}

/**
* Determines whether the executor is still active.
*
* @return {@code true} if the executor is still active, {@code false} otherwise
*/
public boolean isActive() {
return Boolean.TRUE.equals(isActiveSupplier.get());
}

/**
* Waits for all tasks to complete and shuts down the executor.
*/
public void shutdownWhenDone() {
while (TaskContext.get().isActive()) {
while (isActive()) {
if (taskQueue.isEmpty() && taskCount.get() == 0) {
executor.close();
break;
}
Wait.millis(500);
}
executor.close();
}

private void startProcessing() {
Thread.startVirtualThread(() -> {
while (TaskContext.get().isActive()) {
while (isActive()) {
try {
Runnable task = taskQueue.take();
semaphore.acquire();
executor.submit(task);
} catch (InterruptedException exception) {
} catch (InterruptedException | RejectedExecutionException _) {
Thread.currentThread().interrupt();
break;
}
}
});
taskQueue.clear();
}
}
Loading
Loading