{"id":45576358,"url":"https://github.com/microprofile/microprofile-lra","last_synced_at":"2026-02-23T09:58:29.349Z","repository":{"id":31099740,"uuid":"126884472","full_name":"microprofile/microprofile-lra","owner":"microprofile","description":"microprofile-lra","archived":false,"fork":false,"pushed_at":"2026-02-16T15:01:44.000Z","size":1654,"stargazers_count":108,"open_issues_count":26,"forks_count":29,"subscribers_count":34,"default_branch":"main","last_synced_at":"2026-02-16T22:15:11.564Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/microprofile.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-03-26T20:12:49.000Z","updated_at":"2026-02-16T15:01:45.000Z","dependencies_parsed_at":"2022-08-08T13:00:26.638Z","dependency_job_id":"b846b331-4d17-44af-8b4b-46297eab1659","html_url":"https://github.com/microprofile/microprofile-lra","commit_stats":null,"previous_names":["microprofile/microprofile-lra","eclipse/microprofile-lra"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/microprofile/microprofile-lra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microprofile%2Fmicroprofile-lra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microprofile%2Fmicroprofile-lra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microprofile%2Fmicroprofile-lra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microprofile%2Fmicroprofile-lra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microprofile","download_url":"https://codeload.github.com/microprofile/microprofile-lra/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microprofile%2Fmicroprofile-lra/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29741144,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-23T09:58:23.916Z","updated_at":"2026-02-23T09:58:29.329Z","avatar_url":"https://github.com/microprofile.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"//\n// Copyright (c) 2019 Contributors to the Eclipse Foundation\n//\n// See the NOTICES file(s) distributed with this work for additional\n// information regarding copyright ownership.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\nimage:https://badges.gitter.im/eclipse/microprofile-lra.svg[link=\"https://gitter.im/eclipse/microprofile-lra?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge\"]\n\n# Long Running Actions for MicroProfile\n\n== Introduction\n\nThe specification introduces APIs for services to coordinate activities.\n\nThe main thrust of the proposal introduces an API for loosely coupled\nservices to coordinate long running activities in such a way as to\nguarantee a globally consistent outcome without the need to take locks\non data.\n\n== Motivation\n\nIn a loosely coupled service based environment there is sometimes a need\nfor different services to provide consistency guarantees. Typical\nexamples include:\n\n* order processing involving three services (take order, bill customer,\nship product). If the shipping service finds that it is out of stock\nthen the customer will have been billed with no prospect of receiving\nhis item;\n* an airline overbooks a flight which means that the booking count and\nthe flight capacity are inconsistent.\n\nThere are various ways that systems overcome such inconsistency but it\nwould be advantageous to provide a generic solution which handles\nfailure conditions, maintains state for those flows that span long\nperiods of time and ensures that remedial activities are called\ncorrectly.\n\nTraditional techniques for guaranteeing consistency in distributed\nenvironments has focused on XA transactions where locks may be held for\nlong periods thereby introducing strong coupling between services and\ndecreasing concurrency to unacceptable levels. Additionally, if such a\ntransaction aborts then valuable work which may be valid will be rolled\nback. In view of these issues an alternative approach is desirable.\n\nGoals\n\n* support long running actions\n* no strong coupling between services\n* allow actions to finish early\n* allow compensating actions if a business activity is cancelled\n\n== Contributing\n\nDo you want to contribute to this project? link:CONTRIBUTING.adoc[Find out how you can help here].\n\n== Building\n\nThis project uses the Apache Maven Wrapper plugin for predictable builds and to build it type `./mvnw clean install`. To check which version of maven the project is currently using type `./mvnw -version`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicroprofile%2Fmicroprofile-lra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicroprofile%2Fmicroprofile-lra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicroprofile%2Fmicroprofile-lra/lists"}