--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/7aa8ced6-d969-4bfb-8853-12db86a08b7b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/b3aa33b4-857d-4da6-9ec7-eab396f62096%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/OF7E23D315.A9B265C7-ON002582A4.004BA3E1-862582A4.0054726B%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
Hey James,While I am sympathetic to the idea of event sourcing, my experience has been that it is a relatively high bar for teams and I don't think it should be the only model. Event Sourcing is not a bunch of inserts and updates put in a log as you know and of a much higher level business meaning than what Java people call entities.Also, I've seen and pushed a model where indeed data changes and provided as input to a microservice. But that does not preclude the said microservice to have an actual datastore underneath and thus wanting some more traditional data access technologies.Anyways, that's a brief version of my thoughts on microservices, event sourcing and data access these days :)
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/dab72327-e5ec-4a7d-a026-ac5eae3bb08e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/dab72327-e5ec-4a7d-a026-ac5eae3bb08e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CABY0rKNkKdsFyEu_dWPEEfZineOR9CG32Pq%3D%2BJUpV%2BFuFK04zg%40mail.gmail.com.
Could https://github.com/eclipse/microprofile-lra answer some of the concerns around ACID with microservices?
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/dab72327-e5ec-4a7d-a026-ac5eae3bb08e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CABY0rKNkKdsFyEu_dWPEEfZineOR9CG32Pq%3D%2BJUpV%2BFuFK04zg%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe5jMfJkP3OdyKXGYRbDmQB3_FTXqeU-7c0-XxT5xPYGGQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Nathan, James, all,Thanks for starting this thread, it's a very important topic for MicroProfile. There are many interesting questions/suggestions in here and I hope to be able to comment on a few more, but one thing specifically caught my attention:> 2) Complementary event log. In this, you have a traditional CRUD schema,> but with every update you do to your schema, you also persist an event to> the event log in the same transaction. This event log can then be published> to a message broker without needing transactions, and updates can be> propagated with at least once messaging guarantees to other services.This sounds very similar to what we do with CDC (change data capturing) in general and the Debezium (http://debezium.io/) project in particular. Only that the event log is in fact the one used maintained by the DB itself and that then Debezium connects to that log and creates change data streams based on table row changes. So the event steam comes "for free" for upstream applications, they don't have to do anything for that other than writing to the DB tables. Also in that approach there's a single source of truth (the DB's log) which is exposed in a (largely) uniform fashion by Debezium.I think it's a great pattern for pushing data changes between microservices and I'd be very glad to help and propagate it in the context of MicroProfile.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/29b5c66f-3c78-4727-8072-d12f649120d3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CABY0rKO6M3tvQ5F2P2mmt2Rk3fFqOPXPB%3DdW5TrByytvcOK6gA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
I've been trying to give some thought to some ways that event logging might be incorporated into a data access spec.
It seems that it would need a variant of the generic template that allows for supplying an event/reason to the generic insert/update/remove methods, along with some additional built-in methods for querying the event log.
Also, an @Event annotation that could be tacked on to a method parameter with which the application could identify the reason for the update operation. For example,
@Update("quantity = quantity - :amount")
@Where("productId = :productId AND quantity >= :amount")
boolean decrementQuantity(@Event DecQuantityReason reason, String productId, long amount);
To run through an example here, assuming that InventoryItem "PRD000203" has quantity of 100, then the following query,
inventorydb.decrementQuantity(DecQuantityReason.REMOVED_FOR_SHIPMENT, "PRD000203", 5);
This would result in 3 commands to the database, all within the same transaction, in the following order,
- the update made to the InventoryItem table as usual
- a query on the InventoryItem table to retrieve the newly computed quantity value, which in this case is 95
- an insert to the InventoryItemEvents table, of something along the lines of:
sequenceNumber, timestamp, "REMOVED_FOR_SHIPMENT", "PRD000203", "{ quantity: 95 }"
Having stepped through this, it seems like a lot of overhead to put in place in advance of the comprehensive solution across MicroProfile technologies. One option here would be to design a spec that keeps event logging in mind, remaining consistent with being able to add support as work progress across the MicroProfile platform, but not covering the event logging support in the initial release. Any thoughts on whether that would be acceptable?
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/OF1C23D9BB.E9756BB9-ON002582A5.004E8D7E-862582A5.0075F803%40notes.na.collabserv.com.
Why is this necessary? Probably related to my next comment.
This is where I am confused. If I am just reading the events table, I am likely to assume that 95 items just got removed for shipment. Shouldn’t this really be a quantity of 5?
Separately, I assume you can change multiple values in one event, right?
Hi Craig,
I'll try to answer your questions.Why is this necessary? Probably related to my next comment.This is where I am confused. If I am just reading the events table, I am likely to assume that 95 items just got removed for shipment. Shouldn’t this really be a quantity of 5?What doesn't seem to be clear here is that the event table would be containing new values which have changed from the previous state (represented by the sum of the previous events). So in the example, 95 is the new value of 'quantity'. "REMOVED_FOR_SHIPMENT" is the logged reason for the event, though that could probably be improved by passing in the number removed so it could be clearer e.g. "5 items removed for shipment"
Separately, I assume you can change multiple values in one event, right?I think it would be important to support that, so if you're rebuilding from the event log, and you have a case where 5 items were removed from one place and added to another, you can't end up in a state with 5 additional or missing items.That said, there may be better ways to do this. It sounds like James is knowledgeable in this area, so I'm interested in what he has to say.Thanks,Mark
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/0ce579f9-9868-4c43-92b5-14484e3ded1d%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CANgkmLAPA3JNVBV0ZATok7stuQ6cnnU6REgfs1Pj3RpL6OtDyA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
So what happens if there are a -5 and a -10 transaction you have to both revoke from? Neither 95 or 90 is the right answer if you are taking absolute values. And you are pot luck depending on the order you replay events.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/704201fe-4f9c-499e-ba3c-ef93f4185f57%40googlegroups.com.
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/b3aa33b4-857d-4da6-9ec7-eab396f62096%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/OF7E23D315.A9B265C7-ON002582A4.004BA3E1-862582A4.0054726B%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
--
Raymond
Augé (@rotty3000)
Senior Software Architect Liferay,
Inc. (@Liferay)
Board Member & EEG Co-Chair, OSGi
Alliance (@OSGiAlliance)
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAMm6HcBXsYdrQbOyMxMKv-JUZVBUbJSrrYS1mdQx6KqtQaXPWA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CABY0rKOEKR3Ey71iZ92GHj66HAJn0gKxUd4K-Rn3rnHsxfM2wA%40mail.gmail.com.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CANgkmLC0wkSapoffEUz9JTcxurbJ9tYQZWMvRVMo5bNepZwkyA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/2c7c886d-5bfc-22b2-9615-d9cdae86c30b%40gmail.com.
For more options, visit https://groups.google.com/d/optout.
.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/OF7E23D315.A9B265C7-ON002582A4.004BA3E1-862582A4.0054726B%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/dab72327-e5ec-4a7d-a026-ac5eae3bb08e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
Having a set of goals is a good idea. There were a few partial goals in the initial post, although overshadowed by the example ideas, and some others have been scattered across the various responses. I went through all of the responses again and have tried to collect a good list. I'm sure it will reflect my own biases, but should at least open up for further discussion.
Goals:
High Usability
- Standardize and greatly simplify basic patterns for data access. Spec is not tied to any particular data access technology.
- Avoid the need for the user to write boilerplate code, and the need to manually manage life cycles of objects. The most basic of CRUD operations should be possible in just a couple lines of code (Inject, then run)
- Allow the user to think and operate purely in terms of their own data model, but without extra steps such as writing or building additional classes to model their data. It must be possible to use existing POJOs as is, without modification. Existing POJOs might or might not include attributes such as a primary key/id. A good spec should be able to cope with both.
- Near zero learning curve. Must be obvious to first-time users given only JavaDoc of the top level annotation or class and standard auto-complete. Intuitive, with no magic side-effects such as method names controlling details of updates/queries.
Limited in nature, especially so for initial release
- Extensible enough for future addition of event logging.
- Covers a core set of most commonly used data access operations. Is not a full replacement for SQL, JPA, or NoSQL vendor APIs.
Covers operations on a single entity type, not across multiple.
- Not overly limited so as to not be useful. Should not restrict to just a single sequence of conditions ANDed together. Must also support OR, nesting of conditions/computations, and so forth as business logic commonly requires, subject to what the the backend database is capable of.
- Ability to run multiple operations within a single transaction if the backend database supports it.
Easy to configure
- Configurable entirely within the application, in a standard way, possibly via MP config. It would be too high of a learning curve to require a JPA persistence.xml.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CABY0rKOnvu34xJg%3D-XpUNeZ3ifgFPEMxNPCcU1krb5LvJon-kA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/45538a41-57b5-4ba0-b39b-a7521761d8df%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/f2dd64e2-db92-44ae-a74e-8380d09fc6b2%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/79abc475-a880-44df-9b1a-82c0b2b6a1c6%40googlegroups.com.
On Thu, 7 Jun 2018 at 12:29, Ken Finnigan <k...@kenfinnigan.me> wrote:Could https://github.com/eclipse/microprofile-lra answer some of the concerns around ACID with microservices?
I don't think so. From my reading of the README, LRA solves problems where you can't do strongly consistent validation at a business level. It looks a lot more like Process Managers, as defined by Microsoft here:That's about making decisions when you don't have all the information necessary to validate them because that information lives in other services, and then doing compensating actions in the case that those decisions were, further down process, found to be invalid. But to implement this, you still need a level of consistency to get the messages between the services in the first place.For example, there's a big difference between these two things:1. An inventory service receiving an event for an order for an item, finding its out of stock, and having to go back to the original order and invalidate it.2. An inventory service receives an event for an order for an item because at the time that event was published, the inventory service was down, or the network was down, or the service publishing the event crashed before it had an opportunity to publish it, etc.microprofile-lra appears to be solving the first, but it doesn't address the second. I think a persistence solution must address the second, and microprofile-lra is dependent on the second to work.Generally, as part of implementing the second, you publish a message to a message broker, and the message broker ensures the message gets there. But how do you publish the message to the message broker atomically with your database update? If you publish during your transaction, and then you crash (or the database crashes, network goes down, etc etc) after that but before the transaction commits, then you get a phantom event going to the inventory service, an event saying this order was submitted when the order service due to the transaction being rolled back believes it was never submitted. If you publish after the transaction, and you crash before the publish but after the commit, then you end up with the message for a submitted order never reaching the inventory service, and so the inventory service never has an opportunity to either fulfill it, or invalidate it with a compensating action as LRA is designed to allow. This is the two generals problem, it's impossible to solve if you try to do it in this way.However, if you use an event log to publish, then you can solve it. The event log lives in the same database that your data is stored in. When your order service receives a command to submit the order, in addition to updating the order status in the order table, it persists an event to its event log saying the order is submitted. Since the event log and the order table are in the same database, they can be updated in the same ACID transaction, and so you have guaranteed consistency between the event log and the order table. Then, another process, working in the background, polls the event log for events that have not yet been published. This process publishes events to the message broker, and typically by tracking an offset that is associated with each event in the event log, it can guarantee at least once delivery of events from the event log to the message broker. And so, you have end to end consistency. You can even get exactly once delivery if your message broker supports tracking the event log offsets for you.It sounds like a lot of overhead to implement, and it is if you do it manually. But, if the framework provides in built support for it, then it can be very straight forward. The process that publishes the event log could be built on the MicroProfile Reactive Messaging work that we're doing, in fact, here's an example of doing exactly that in Lagom, the @Incoming (a microprofile messaging annotation) source is the event log, and the @Outgoing destination is Kafka, and all the mechanics of polling, tracking offsets, getting into Kafka etc are handled by the framework, the user only worries about the business logic of deciding which events get published, and converting the internal persisted event representation to an external representation suitable for consumption by other services:So, if the persistence API we offer can offer a way to get events into the event log consistently (ie, in the same transaction as the update), then guaranteed consistency in publishing events to other services will be straight forward.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe5jMfJkP3OdyKXGYRbDmQB3_FTXqeU-7c0-XxT5xPYGGQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/d29a5526-ce44-4970-a266-624803194252%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CABY0rKOvMpNaQMKYR0jJDDg8f6b28VFYKE92YXECXxZLXUdoCA%40mail.gmail.com.
On Wed, 6 Jun 2018 at 23:09, 'Gunnar Morling' via Eclipse MicroProfile <microp...@googlegroups.com> wrote:Nathan, James, all,Thanks for starting this thread, it's a very important topic for MicroProfile. There are many interesting questions/suggestions in here and I hope to be able to comment on a few more, but one thing specifically caught my attention:
> 2) Complementary event log. In this, you have a traditional CRUD schema,> but with every update you do to your schema, you also persist an event to> the event log in the same transaction. This event log can then be published> to a message broker without needing transactions, and updates can be> propagated with at least once messaging guarantees to other services.
This sounds very similar to what we do with CDC (change data capturing) in general and the Debezium (http://debezium.io/) project in particular. Only that the event log is in fact the one used maintained by the DB itself and that then Debezium connects to that log and creates change data streams based on table row changes. So the event steam comes "for free" for upstream applications, they don't have to do anything for that other than writing to the DB tables. Also in that approach there's a single source of truth (the DB's log) which is exposed in a (largely) uniform fashion by Debezium.I think it's a great pattern for pushing data changes between microservices and I'd be very glad to help and propagate it in the context of MicroProfile.Automatic capturing of updates and publishing them as messages has a lot of strengths, in particular, it's not prone to developer error in that developers can't forget to manually publish an event. But it also has a major drawback - when you capture the insert/update/delete done on the database, you lose the intention of the event. For example, let's say that the status of an order goes to "review". What was the event that triggered that? Did the payment processor reject the payment, and so now someone needs to review it? Did the inventory service say that the order can't be fulfilled, and so now someone needs to review it? Depending on what that intention was, different services that receive the event are going to need to do different processing, for example, an email notification service is going to send emails to different people with different wording based on what the event was, not based on what the data update was. The event is more than just the update, and knowing what the event is is important because other services might need to do different processing based on which event was received.So capturing data updates requires reverse engineering the updates to work out what the event was, and this is both error prone, and in some circumstances requires a lot of code to get right. In the end, you're going to be converting these updates to some event and passing them to an API to be published, it's much easier to do this when you are handling the command in the first place and know exactly what the intention was and so you can publish the right event. That's why I think an API where you manually publish the event is much simpler for developers to use, and a well written API can offer protections to ensure that they don't forget to emit an event when doing updates, by, for example, requiring to emit an event before an update is committed.--Gunnar
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/7aa8ced6-d969-4bfb-8853-12db86a08b7b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/29b5c66f-3c78-4727-8072-d12f649120d3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CABY0rKO6M3tvQ5F2P2mmt2Rk3fFqOPXPB%3DdW5TrByytvcOK6gA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CABY0rKOvMpNaQMKYR0jJDDg8f6b28VFYKE92YXECXxZLXUdoCA%40mail.gmail.com.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/2b70dae4-2a86-48e9-8f61-c567da445665%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/OF59219F6E.E12919EB-ON002582B3.00517D46-872582B3.005DB3F9%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
Michael,
While I left out this sort of detail from the original idea (I knew the transactional aspects would be controversial),
it is essential for a data access spec to be capable of addressing the variety of patterns that will be needed for different scenarios. In the most basic of patterns where data access is self-contained within a service and never coordinated with any other services, there just needs to be a way to demarcate transaction boundaries within the service itself, and the traditional UserTransaction begin/commit/rollback ought to be sufficient for that. Although many will hate to hear me say it, I think there's even a case for distributed two-phase transactions across services for the specific patterns where the need to coordinate across services is very infrequent. As for patterns that address the coordination of independent services, I can see a data access spec seamlessly tying in to the Long Running Actions spec.
Data access template update/insert/delete operations provide a convenient point to automatically detect the presence of the current LRA and join it, computing the detail of the changes incurred by the operation and persisting this information to the same database within the same transaction, implicitly generating a compensation action that is capable of using this information to undo/revert the operation. This spares the user from the biggest burden of using long running actions - providing compensation actions - allowing them to focus solely on demarcating start/completion of the LRA and the services that participate. The user would be able to utilize CRUD operations within their service just as they would when LRA was not involved at all. The data access spec and LRA spec would remain independent, but seamlessly interoperable.
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/2b70dae4-2a86-48e9-8f61-c567da445665%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/660528f0-898c-4ecd-a685-890a2259e3e2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/2b70dae4-2a86-48e9-8f61-c567da445665%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/OF59219F6E.E12919EB-ON002582B3.00517D46-872582B3.005DB3F9%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
--
Thanks
Emily
=================
Emily Jiang
eji...@apache.org
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAECq3A-%3D9ekNvULOy_NQVNKpNt7UjTJyB%2BG_YqOiYkDNexTtqA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Addressing some questions from Emily,
> How does the rollback model work?
Rollback of a data access transaction must result in a request to cancel the LRA so that compensation can be performed for any prior operations. The data access layer, which will be aware of the LRA, will make this request.
> Hence, some transaction context should be defined, which might impact data persistence.
There are two forms of transaction context that we are concerned with: context for the actual transaction in the database, and context for the LRA which coordinates the transaction with transactions being performed by other services.
For the former, we need a way to group transactional operations that do not cross service boundaries. There ought to be some discussion of whether the existing JTA UserTransaction is the right way to do that, or if data access spec should be defining its own way to either group multiple of its own operations into a transaction or demarcate a begin/end.
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/OF59219F6E.E12919EB-ON002582B3.00517D46-872582B3.005DB3F9%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/OF1DE71865.BEC5E673-ON002582B9.0048DBEE-862582B9.004FB4CD%40notes.na.collabserv.com.
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/2b70dae4-2a86-48e9-8f61-c567da445665%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/OF59219F6E.E12919EB-ON002582B3.00517D46-872582B3.005DB3F9%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
--
Thanks
Emily
=================
Emily Jiang
eji...@apache.org
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAECq3A-%3D9ekNvULOy_NQVNKpNt7UjTJyB%2BG_YqOiYkDNexTtqA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/OF1DE71865.BEC5E673-ON002582B9.0048DBEE-862582B9.004FB4CD%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALaezvXYb7RK%2Ba3CxTsaKV9qRY9X79hLM-P_M6m9yMgZ9__o1A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAECq3A-%3D9ekNvULOy_NQVNKpNt7UjTJyB%2BG_YqOiYkDNexTtqA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/OF2A1BD8E5.3935FC40-ON002582B9.00562662-862582B9.0057AE3B%40notes.na.collabserv.com.
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/2b70dae4-2a86-48e9-8f61-c567da445665%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/OF59219F6E.E12919EB-ON002582B3.00517D46-872582B3.005DB3F9%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
--
Thanks
Emily
=================
Emily Jiang
eji...@apache.org
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAECq3A-%3D9ekNvULOy_NQVNKpNt7UjTJyB%2BG_YqOiYkDNexTtqA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/OF1DE71865.BEC5E673-ON002582B9.0048DBEE-862582B9.004FB4CD%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe
.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALaezvXYb7RK%2Ba3CxTsaKV9qRY9X79hLM-P_M6m9yMgZ9__o1A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
To view this discussion on the web visit
https://groups.google.com/d/msgid/microprofile/OF2A1BD8E5.3935FC40-ON002582B9.00562662-862582B9.0057AE3B%40notes.na.collabserv.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/microprofile/1sXozNjXLsM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to
microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALaezvVt6NY7jXYp8JUOH9N6Y%2Bm_8YrF7LVEkSiv9OkSnboZ4g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.