Skip to content

Commit 34f3cc1

Browse files
committed
BAEL-8140: code review and puml
1 parent a38ccfc commit 34f3cc1

File tree

3 files changed

+95
-1
lines changed

3 files changed

+95
-1
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
@startuml Nested Transactions in publishArticle_v2
2+
3+
participant "Client" as C
4+
participant "Blog" as B
5+
participant "ArticleRepo" as AR
6+
participant "AuditService" as AS
7+
database "Database" as DB
8+
9+
C -> B: publishArticle_v2()
10+
activate B
11+
note right of B: @Transactional
12+
B -> DB: Begin TX1
13+
activate DB #LightBlue
14+
15+
B -> AR: save()
16+
activate AR
17+
AR -> DB: INSERT article
18+
AR --> B:
19+
deactivate AR
20+
21+
B -> AS: saveAudit()
22+
activate AS
23+
note right of AS: @Transactional\n(REQUIRES_NEW)
24+
AS -> DB: Begin TX2
25+
activate DB #LightGreen
26+
27+
AS -> DB: INSERT audit
28+
29+
AS -> DB: Commit TX2
30+
deactivate DB
31+
AS --> B:
32+
deactivate AS
33+
34+
B -> DB: Commit / Rollback TX1
35+
deactivate DB
36+
B --> C:
37+
deactivate B
38+
39+
note over DB
40+
TX1: Article save
41+
TX2: Audit save (independent, always commits)
42+
end note
43+
44+
@enduml
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
@startuml Sequential Transactions in publishArticle_v3
2+
3+
participant "Client" as C
4+
participant "Blog" as B
5+
participant "TransactionTemplate" as TT
6+
participant "ArticleRepo" as AR
7+
participant "AuditRepo" as AuR
8+
database "Database" as DB
9+
10+
C -> B: publishArticle_v3()
11+
activate B
12+
13+
B -> TT: execute()
14+
activate TT
15+
TT -> DB: Begin TX1
16+
activate DB #LightBlue
17+
18+
TT -> AR: save()
19+
activate AR
20+
AR -> DB: INSERT article
21+
AR --> TT
22+
deactivate AR
23+
24+
TT -> DB: Commit / Rollback TX1
25+
deactivate DB
26+
TT --> B
27+
deactivate TT
28+
29+
30+
B -> DB: Begin TX2
31+
activate DB #LightGreen
32+
33+
B -> AuR: save()
34+
activate AuR
35+
AuR -> DB: INSERT audit (FAILURE)
36+
AuR --> B:
37+
deactivate AuR
38+
39+
B -> DB: Commit TX2
40+
deactivate DB
41+
42+
B --> C:
43+
deactivate B
44+
45+
note over DB
46+
TX1 completes (commit or rollback) BEFORE TX2 begins
47+
TX2: Independent transaction for FAILURE audit
48+
end note
49+
50+
@enduml

persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/rollbackonly/BlogIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void whenPublishingAnInvalidArticle_thenThrowsUnexpectedRollbackException() {
5151
assertThatThrownBy(() -> articleService.publishArticle(
5252
new Article("Test Article", null)))
5353
.isInstanceOf(UnexpectedRollbackException.class)
54-
.hasMessageContaining("Transaction silently rolled back because it has been marked as rollback-only");
54+
.hasMessageContaining("marked as rollback-only");
5555

5656
assertThat(auditRepo.findAll())
5757
.isEmpty();

0 commit comments

Comments
 (0)