Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
f88059c
feat(devloop): run on WildFly and TomEE
tltv Sep 21, 2026
182194c
feat(devloop): run on Apache Tomcat through Cargo
tltv Sep 22, 2026
ad1704a
fix(devloop): ignore a resource rewritten with the same bytes
tltv Sep 22, 2026
5845f9d
test(devloop): run the dev loop ITs on Tomcat through Cargo
tltv Sep 22, 2026
276c0e5
feat(devloop): run on Payara Server and Payara Micro
tltv Sep 23, 2026
fd63432
feat(devloop): run on Open Liberty
tltv Sep 24, 2026
a93f9eb
formatting
tltv Sep 24, 2026
26639c7
fix(devloop): run WildFly on a multi-module project
tltv Sep 24, 2026
e2201fc
fix(devloop): compare resources against what the app was told
tltv Sep 24, 2026
2fa7708
fix(devloop): reconfigure the server plugin in the app module only
tltv Sep 24, 2026
4779a99
fix(devloop): bind the TomEE run goal in the application module
tltv Sep 25, 2026
8e534a8
fix(devloop): drop only the skip when there is no build extension
tltv Sep 25, 2026
dcb6db4
fix(devloop): keep an unreadable resource in the inventory
tltv Sep 28, 2026
5b0a835
fix(devloop): settle a resource that turned out unchanged
tltv Sep 25, 2026
6ca4ccc
fix(devloop): stop broadcasting a setting the extension can force
tltv Sep 25, 2026
88380c8
docs(devloop): say that Liberty is named a phase in a reactor too
tltv Sep 25, 2026
279dff8
fix(devloop): give each loopback attempt a timeout, and never throw null
tltv Sep 25, 2026
1519bf8
docs(devloop): correct the stale note on the Cargo fixture
tltv Sep 25, 2026
3af3758
docs(devloop): move an orphaned javadoc onto the test it describes
tltv Sep 25, 2026
6cb1aa2
fix(devloop): redact the auth token wherever it sits in a flag
tltv Sep 25, 2026
a2efd39
fix(devloop): leave a project property the loop already set alone
tltv Sep 25, 2026
075e98e
fix(devloop): name the channel that really splits a flag with a space
tltv Sep 25, 2026
4359e6e
docs(devloop): say that exec.args is not Payara Micro's own name
tltv Sep 25, 2026
c83b71f
fix(devloop): address Sonar findings and cover Maven goal launch
tltv Sep 25, 2026
bcc6677
fix(devloop): bind liberty:run in the application module
tltv Sep 25, 2026
5c537d0
fix(devloop): wait for the deployment an app server keeps
tltv Sep 25, 2026
d4d74dc
fix(devloop): address Sonar findings in registration and plugin table
tltv Sep 25, 2026
b5b5d21
fix(devloop): put the application's JVM first on the build's PATH
tltv Sep 25, 2026
e9d7ecd
fix(devloop): keep both Payara plugins from opening a browser
tltv Sep 25, 2026
f222110
fix(devloop): address new Sonar findings in daemon
tltv Sep 25, 2026
dab711a
fix(devloop): make the PATH choice in pathWith explicit
tltv Sep 28, 2026
6fc03e1
test(devloop): run the ITs on TomEE, EAP, Liberty and both Payaras (#…
tltv Sep 28, 2026
d1fbd9a
Merge branch 'main' into feat/devloop-wildfly-tomee-goals
tltv Sep 29, 2026
762f9c7
fix(devloop): wait for WildFly's own deployment to end a start
mshabarov Sep 29, 2026
dcd28db
Merge branch 'main' into feat/devloop-wildfly-tomee-goals
mshabarov Sep 29, 2026
4151406
Merge branch 'main' into feat/devloop-wildfly-tomee-goals
tltv Sep 29, 2026
4b6ceb8
test(devloop): make the vaadin-dev command timeout actually hold
tltv Sep 29, 2026
ef20217
ci: keep dev loop server and daemon logs in the IT report
tltv Sep 29, 2026
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
12 changes: 10 additions & 2 deletions .github/workflows/validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,15 @@ jobs:
$cmd -T 1C || $cmd
fi
if [ ${{matrix.current}} -eq 7 ]; then
cmd="mvn install -B -ntp -DskipTests -f flow-tests/test-devloop/pom.xml -pl test-devloop-spring/devloop-shared,test-devloop-jetty/devloop-shared -am"
cmd="mvn install -B -ntp -DskipTests -f flow-tests/test-devloop/pom.xml -pl test-devloop-spring/devloop-shared,test-devloop-jetty/devloop-shared,test-devloop-cargo/devloop-shared -am"
$cmd || $cmd
fi
if [ ${{matrix.current}} -eq 9 ]; then
cmd="mvn install -B -ntp -DskipTests -f flow-tests/test-devloop/pom.xml -pl test-devloop-tomee/devloop-shared,test-devloop-liberty/devloop-shared,test-devloop-payara-micro/devloop-shared -am"
$cmd || $cmd
fi
if [ ${{matrix.current}} -eq 10 ]; then
cmd="mvn install -B -ntp -DskipTests -f flow-tests/test-devloop/pom.xml -pl test-devloop-payara/devloop-shared,test-devloop-jbosseap/devloop-shared -am"
$cmd || $cmd
fi
- name: Run ITs
Expand Down Expand Up @@ -314,7 +322,7 @@ jobs:
pkill -KILL java || true
- name: Package test-report files
if: ${{ always() }}
run: find . -name surefire-reports -o -name failsafe-reports -o -name error-screenshots -o -name "mvn-*.out" -o -name "jetty-start.out" | tar -czf tests-report-it-${{matrix.current}}.tgz -T -
run: find . -name surefire-reports -o -name failsafe-reports -o -name error-screenshots -o -name "mvn-*.out" -o -name "jetty-start.out" -o -path "*/target/devloop/*.log" | tar -czf tests-report-it-${{matrix.current}}.tgz -T -
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ always() }}
with:
Expand Down
426 changes: 423 additions & 3 deletions flow-devloop-daemon/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,22 @@
public final class DevLoopAgent {

/**
* The system properties key the {@link Instrumentation} handle is published
* under.
* The system properties key the {@link Instrumentation} handle used to be
* published under.
* <p>
* It is no longer written. The system properties table is a
* {@code Hashtable<Object, Object>} and will hold an arbitrary object,
* which is what made it a convenient way to hand the handle across class
* loaders - but a table that is declared to map strings to strings and does
* not is a trap for everything else in the JVM that reads it. Measured
* against WildFly 38: Narayana merges the system properties when it loads
* {@code jbossts-properties.xml}, took the handle for a string, and the
* transactions subsystem failed its boot operations with a
* {@link NullPointerException} - fatally, after the HTTP listener had
* already bound. The handle now travels by {@link #get()} instead.
* <p>
* Kept only so that a reader who finds the name in an older log or an older
* dev server can see what became of it.
*/
public static final String PROPERTY = "devloop.instrumentation";

Expand Down Expand Up @@ -80,7 +94,6 @@ public static void agentmain(String args, Instrumentation inst) {

private static void install(Instrumentation inst) {
instrumentation = inst;
System.getProperties().put(PROPERTY, inst);
// System.out rather than a logger: this runs in premain, before the
// application's logging framework exists, and the output belongs to the
// app log the daemon reads anyway.
Expand All @@ -92,6 +105,15 @@ private static void install(Instrumentation inst) {
/**
* The captured instrumentation handle, or {@code null} when this class was
* loaded without the agent having been installed.
* <p>
* This is the one channel. A {@code -javaagent} jar is appended to the
* system class path, so this class is the system class loader's and its
* static is the same object for every loader beneath it - including a
* servlet container's, which is the case the system-properties table was
* once used for. A caller that cannot name the class directly, because the
* agent jar is not on its own class path, reaches it through
* {@link ClassLoader#getSystemClassLoader()}; see the dev server's
* {@code DevLoopRedefiner}.
*
* @return the instrumentation handle, or {@code null}
*/
Expand Down
Loading
Loading