-
Notifications
You must be signed in to change notification settings - Fork 2.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extension for running Narayana LRA participants #17903
Conversation
8297860
to
9761d8b
Compare
9761d8b
to
7a506d9
Compare
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building 7a506d9
Full information is available in the Build summary check run. Test Failures⚙️ JVM Tests - JDK 11 Windows #📦 integration-tests/narayana-lra✖ |
7a506d9
to
ba32fc2
Compare
...na-lra/deployment/src/main/java/io/quarkus/narayana/lra/deployment/NarayanaLRAProcessor.java
Show resolved
Hide resolved
|
||
[source,bash] | ||
---- | ||
quarkus.lra.coordinator-url=http://localhost:8080/lra-coordinator |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe "quarkus.narayana.lra.coordinator-url" is better than "quarkus.lra.coordinator-url"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense, I will add this change too.
But I will wait a while for anyone else who wants to review the PR before pushing a commit (since the PR check took about 5 hours last time). I will give it a few days and then ping someone from the quarkus team to check whether or not your review is sufficient to get the PR merged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, I don't think we include implementation names for other properties that are tied to the MP specs. If we would change the impl in the future (not that I expect that but never say never) this can be an issue. I would prefer quarkus.lra.coordinator.url
(note . instead of -) as there might be more properties under coordinator in future. The quarkus.
prefix is enough to display this is coming from quarkus.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So it's a land grab, I have no issues with that!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So on a second reading I am going to keep the property name as it was (namely, quarkus.lra.coordinator-url
). - it's how the quarkus config property naming system is meant to work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@NahuelOlgiati (Nahuel Olgiati) this was your only review comment that I declined. If that's okay and if the rest of the updates I made to the PR are okay too then if you have the permissions, will you mark it as approved.
@quarkusio/committerhelp I have had one review so far, what is the process for getting things merged once I have addressed all reviewer comments. Note that I am still waiting for the original reviewer (@xstefank ) to provide his review. |
|
||
== Introduction | ||
|
||
The LRA (short for Long Running Action) participant extension is useful in microservice based |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The LRA (short for Long Running Action) participant extension is useful in microservice based | |
The LRA (short for Long Running Actions) participant extension is useful in microservice based |
I think this should be aligned with the spec. But I don't insist.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
An LRA is a long running action.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, I think the specs is plural https://github.com/eclipse/microprofile-lra#long-running-actions-for-microprofile but I have no issue with this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A participant participates in a Long Running Action.
core/deployment/src/main/java/io/quarkus/deployment/Capability.java
Outdated
Show resolved
Hide resolved
|
||
[source,bash] | ||
---- | ||
quarkus.lra.coordinator-url=http://localhost:8080/lra-coordinator |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, I don't think we include implementation names for other properties that are tied to the MP specs. If we would change the impl in the future (not that I expect that but never say never) this can be an issue. I would prefer quarkus.lra.coordinator.url
(note . instead of -) as there might be more properties under coordinator in future. The quarkus.
prefix is enough to display this is coming from quarkus.
quarkus.lra.coordinator-url=http://localhost:8080/lra-coordinator | ||
---- | ||
|
||
For a narayana coordinator the path component of the url is normally `lra-coordinator`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not sure if the Narayana shouldn't be capitalized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
okay
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On a second reading, capitalising it is a bit shouty, I don't see any problem with lower case.
the coordinator or for repairing the network, respectively). To fulfil this task the | ||
coordinator must have access to durable storage for its logs (via a filesystem or in | ||
a database). At the time of writing, managing coordinators is the responsibility of | ||
the user. An "out-of-the-box" solution will be forthcoming. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why isn't the docker image for the coordinator also out-of-the-box? It's an external service like jaeger, kafka, prometheus, etc. I would remove this last sentence.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because the user has to manage it.
Example "out-of-the-box" solutions will be WildFly and an OCP operator.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok
@PUT | ||
@Path("compensate") | ||
@Compensate | ||
public Response compensateWork(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) URI lraId, String userData) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
userData is unused
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a shame, users would find it extremely useful. I will check whether or not it still works in the narayana implementation of the LRA spec and if not then I will remove it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we can have this on top of the spec in the Narayana implementation as an experimental feature, agreed it would be nice to have.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not an experimental feature, it is part of the narayana implementation of LRAs and has been present, I believe (I would need to look through the history) ever since I took the spec to the MP group. Don't forget that the MP-LRA spec process removed a lot of useful stuff from the implementation and that the narayana LRA implementation is not restricted to what the spec says, it is a transactional solution that just happens to implement all of the requirements of the MP-LRA spec.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
true, not experimental, additional, not speced. Sorry.
@PUT | ||
@Path("complete") | ||
@Complete | ||
public Response completeWork(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) URI lraId, String userData) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same, userData can be removed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same response.
quarkus.http.test-port=8081 | ||
quarkus.http.host=${HOST:localhost} | ||
#quarkus.http.host=0.0.0.0 | ||
#%test.quarkus.http.host=0.0.0.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
comments can also be removed now I think
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well they should work so I'd left it in so that we don't forget. I still need to talk to the resteasy integration team about the problem. But if you think it's going to be an issue I can remove it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If they are not used I would suggest removing them, we can add them when they add some value but now it only means that anyone reading the code will stop thinking why this is in here and why it is commented.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You missed my point but I can remove them.
|
||
@Override | ||
public Map<String, String> start() { | ||
registry = new GenericContainer<>("jbosstm/lra-coordinator:5.12.0.Final") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we can use latest here or parse the version dynamically from the properties? More a question to the quarkus team in how this is handled elsewhere.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a test. And other integration tests use a similar approach.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, just to remember to bump this version when the Narayana update will be done all the time seems a little overkill. Not sure if dependabot can handle such a scenario.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When we migrate to a new version of narayana the version will need updating in various places, I'm still not seeing the benefit of making this particular change generic (if I could even figure out a clean way to do that).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dependabot won't update it.
But, I believe it's fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
okay
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just add a periodic reminder to update the version.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is a periodic reminder?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a periodic todo task that remind you to update the version once in a while.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure what you are asking us to do but we try to track our users and update accordingly, for example we already do this with wildfly and quarkus is another platform we monitor,
public Map<String, String> start() { | ||
registry = new GenericContainer<>("jbosstm/lra-coordinator:5.12.0.Final") | ||
//.withNetworkMode("host"); // fails with: "Container doesn't expose any ports" | ||
//.withExposedPorts(90010); // and exposing one then fails with: "Requested port (90010) is not mapped" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if this has value, do you think that others will run into similar issues?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was an attempt at working around a resteasy integration issue about which I still need to talk to the resteasy integration team . But, again, if you think it's going to be an issue I can remove it. On the hand leaving it in will help other developers who hit the same issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe you can open a new issue if this needs to be fixed elsewhere where you will reference a branch in your fork with the left comments to be fixed and then you can open a follow-up PR updating to the correct configuration. So please remove the unused code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so. But if you insist then I will remove them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The only exposed port is 8080/tcp. So you would need .withExposedPorts(8080) and retrieved the mapped port.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I already to that, if you check the code in the PR you can see that we are already exposing 8080.
ba32fc2
to
1203f89
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, LGTM but someone from the Quarkus team should check if the extension stuff is in the right places.
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building 082a342
Full information is available in the Build summary check run. Test Failures⚙️ JVM Tests - JDK 11 #📦 devtools/cli✖ ✖ ⚙️ JVM Tests - JDK 16 #📦 devtools/cli✖ ✖ 📦 integration-tests/grpc-hibernate-reactive✖ |
If anyone from the quarkusio team is looking at this, the test failures concern io.quarkus.cli and look unrelated to the PR. Note also that the initial CI run passed and the second run included minor changes only after requests by the reviewers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lots of comments are actually questions to satisfy my own curiosity.
core/deployment/src/main/java/io/quarkus/deployment/Capability.java
Outdated
Show resolved
Hide resolved
@Recorder | ||
public class NarayanaLRARecorder { | ||
public void setConfig(final LRAConfiguration config) { | ||
if (System.getProperty(NarayanaLRAClient.LRA_COORDINATOR_URL_KEY) == null) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, it can be set from a sys variable, but not an env one? In addition, it overrides the configured value.
Is it because the TCK expect it, or what's the reason behind it?
The configured value can be set using -Dquarkus.lra.coordinator-url and from the QUARKUS_LRA_COORDINATOR_URL env variable.
</dependency> | ||
<dependency> | ||
<groupId>io.quarkus</groupId> | ||
<artifactId>quarkus-resteasy-deployment</artifactId> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would test with classic resteasy but also with resteasy reactive. Should not change anything, but we never know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will give it another go. I did try modifying the dependencies and got errors like:
Caused by: java.lang.IllegalStateException: Please make sure there is only one provider of the following capabilities:
capability io.quarkus.rest is provided by:
- io.quarkus:quarkus-resteasy-reactive::jar:999-SNAPSHOT
- io.quarkus:quarkus-resteasy::jar:999-SNAPSHOT
I couldn't figure who was still pulling the non reactive version but I will investigate further.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my earlier comment above (#17903 (comment)) about how we only use the async API anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You need to remove io.quarkus:quarkus-resteasy
, both can't be used at the same time.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is what I did.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hum, that's kind of annoying. Does your implementation pull the classic Resteasy. We would need to have a look.
integration-tests/narayana-lra/src/main/resources/application.properties
Outdated
Show resolved
Hide resolved
} | ||
|
||
// send an HTTP GET request to an endpoint | ||
private static String coordinatorGetRequest(String endpoint, int[] expectedResponseCodes, boolean readResponse) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not using restassured for this? You can pass absolute URLs too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The routine uses Jupiter:
assertTrue(Arrays.stream(expectedResponseCodes).anyMatch(i -> i == responseCode),
"unexpected response code: GET " + endpoint);
|
||
@Override | ||
public Map<String, String> start() { | ||
registry = new GenericContainer<>("jbosstm/lra-coordinator:5.12.0.Final") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dependabot won't update it.
But, I believe it's fine.
@cescoffier I responded to your comments but I won't push changes until I know you are happy with how I plan to address those comments that require updates to the extension. So if you wouldn't mind, can you confirm whether or not my responses are adequate? |
|
||
@Override | ||
public Map<String, String> start() { | ||
registry = new GenericContainer<>("jbosstm/lra-coordinator:5.12.0.Final") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just add a periodic reminder to update the version.
When such a method is called a context is created (if one is not already present) which is passed | ||
along with subsequent JAX-RS invocations until a method is reached | ||
which also contains an `@LRA` annotation with an attribute that indicates that the LRA should be | ||
closed or cancelled. The default is for the LRA to be closed in the same method that started the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe this should be written somewhere, maybe using an admonition. Again, readers may not be familiar with the LRA spec (and won't read it).
the method finishes and the `end = true` element on the confirmTrip method forces the LRA | ||
(started by the bookTrip method) to close the LRA. Note that this end element can | ||
be placed on any JAX-RS resource (ie one service can start the LRA whilst a different | ||
service ends it). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here are some rules I'm trying to apply:
- getting started should only contain details to run an example with a small introduction. It should not expect any prior knowledge, and from the beginning to the end should not take more than 15 minutes.
- reference contains everything else, more complex example, configuration....
So, typically, from line 164, it should be in the reference guide.
Note that of course, you can cross-link.
<dependency> | ||
<groupId>org.jboss.narayana.rts</groupId> | ||
<artifactId>lra-proxy-api</artifactId> | ||
<scope>compile</scope> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, probably better.
* In this version of the extension, a failed coordinator with | ||
* LRAs that have not yet finished must be restarted. | ||
*/ | ||
@ConfigItem(defaultValue = "http://localhost:8080/lra-coordinator") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's do this in an additional PR.
@Recorder | ||
public class NarayanaLRARecorder { | ||
public void setConfig(final LRAConfiguration config) { | ||
if (System.getProperty(NarayanaLRAClient.LRA_COORDINATOR_URL_KEY) == null) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesn't quarkus.lra.coordinator-url
work? IF your test resource returns a Map containing this property it should configure the extension with it.
</dependency> | ||
<dependency> | ||
<groupId>io.quarkus</groupId> | ||
<artifactId>quarkus-resteasy-deployment</artifactId> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You need to remove io.quarkus:quarkus-resteasy
, both can't be used at the same time.
082a342
to
063963d
Compare
@cescoffier From my viewpoint it seems that I have resolved each of your objections, ie I don't plan to push any more updates unless you have new input. Can you confirm whether or not you are waiting for me to provide new input? |
f6ea1b9
to
812179d
Compare
@NahuelOlgiati and @xstefank I updated this PR adding non JAX-RS support. I included a hack to make the constructors for io.narayana.lra.client.internal.proxy.nonjaxrs.LRAParticipant and LRAParticipantRegistry public. I tried using reflection but could not get it working. I decided not to spend too much time on that since we may (or may not) need to rework the narayana support for non JAX-RS so that it doesn't use CDI extensions. I will add some more integration tests when I return from my PTO (but my quickstart works). |
Just a note that I haven't forgotten about this, it's slowly moving to the top of my list while I go through my backlog and my usual daily tasks. |
@mmusgrov can you give me a window when I can work on this PR? It needs a rebase (we don't want merge commits in PRs) and I might have to make a couple of small adjustments here and there. Would Friday work for you? |
@gsmet Friday works okay for me. |
69e01fa
to
51f000d
Compare
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building 51f000d
Full information is available in the Build summary check run. Test Failures⚙️ JVM Tests - JDK 11 #📦 devtools/cli✖
✖
✖
⚙️ JVM Tests - JDK 16 #📦 devtools/cli✖
✖
✖
|
51f000d
to
1ade264
Compare
@gsmet I think the PR is in good shape but I have some improvements to the manual that could be of help for developers. May I update it or should I wait? Or, alternatively, I could just say what I wanted to say in a blog (and maybe revisit the manual in a future update). |
@gsmet The changes look good |
5e715fc
to
dac5303
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mmusgrov I pushed a commit with some small changes.
There's one blocking problem though: we need to figure out what to do with the classes in io.narayana.lra.client.internal.proxy.nonjaxrs
(see my comment inline). Maybe ping me on Zulip to discuss it?
* License along with this software; if not, write to the Free | ||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So... these files are a problem for me:
- first, Quarkus is Apache licensed so we need to relicense them under the right license. I have no idea where they come from so I'll let you figure out if it's doable or not;
- second are they somehow overriding files in existing jars? It looks like it from what I can see in the other jars. That's definitely something we don't want to do: we don't want a split package and we don't want to override classes this way. I have no idea why you did that so we would need to understand the reason to help you solve this problem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These files were copied over from the narayana implementation of LRA, I needed access to the constructor which is package private. I have changed them in the narayana repo (jbosstm/narayana#1888) so when we next do a narayana release I will update this extension and remove the two files (LRAParticipant.java and LRAParticipantRegistry.java).
@@ -16,7 +15,6 @@ public LRAParticipantRegistry lraParticipantRegistry() { | |||
|
|||
@Produces | |||
public ParticipantProxyResource participantProxyResource() { | |||
Object proxy = CDI.current().select(ParticipantProxyResource.class); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This variable is unused. Not sure why you did that or if it's just a leftover?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks (it was a leftover).
* License along with this software; if not, write to the Free | ||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same remark here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks (see my remark).
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building dac5303
|
@gsmet I'll create a blog at |
dac5303
to
186d7df
Compare
Squashed and rebased. Let's wait for CI and merge. |
@mmusgrov when it's merged, it will get available when 2.2 is released. Schedule is here: https://github.com/quarkusio/quarkus/wiki/Release-Planning . If everything is fine, it should appear automatically in code.quarkus.io, yes. |
Failing Jobs - Building 186d7df
Full information is available in the Build summary check run. Test Failures⚙️ JVM Tests - JDK 11 #📦 devtools/cli✖
✖
✖
|
@gsmet @gsmet Also I've written a blog to introduce the extension in adoc format, who should I give it to (there's no repo for blogs) so that it appears at https://quarkus.io/blog? |
Merged and added the As for the blog posts, they are there: https://github.com/quarkusio/quarkusio.github.io/tree/develop/_posts |
Thanks @gsmet - I have have added a PR for the blog. Note that I have just returned from PTO so apologies for its late submission. Is there anyone I should ping to get it added/reviewed? |
#4399
This PR adds support for an implementation of the eclipse microprofile-lra project version 1.0 (https://github.com/eclipse/microprofile-lra/releases/tag/1.0). I want to target the extension to core because compensating transactions are an essential component for building reliable services (and in this respect is similar/complementary to the narayana-jta extension which itself is useful for doing each of the compensatory actions that comprise the LRA).
It replaces PR #6763 which was closed as out of date. I was unable to re-open it but the discussion provides useful background and context for this PR.