Spring Boot Transactions

OnDemand

Top Contributor
Hallo zusammen,

ich habe folgendes Problem:
Ein Service ruft meinen REST Service, dieser sammelt sseeeehr viele Daten aus der Datenbank. Das dauert weit über 5 Minuten und gibt die Daten als json zurück.

Das Problem dabei ist, ich habe es mit Tenanten aufgebaut, wenn sich nun ein Tenant zb in die Weboberfläche einlogged, oder dieser Tenant einen anderen Service anfragt, bekommt der solange keine Antwort, bis der obige fertig ist mit seiner Sucherei.

Habe vom REST Service 2 Instanzen laufen, bei der zweiten Instanz, sehe ich dass sie SELECTS auf die Datenbank gibt, aber scheinbar keine Antwort bekommt.

Ich vermute das hat was mit Transactions zu tun? Die "große Suchtransaktion" sperrt die neu ankommenden Requests aus, solange noch gesucht wird, kann das sein? Wir kann ich Meinen Service dazubringen, dass es nicht blocked? Habe einen Connection Pool mit 3 Connections pro Tenant.

Wenn der lang andauernde Service sucht und ich geht mit meinem SQL CLient auf die DB, ist alles iO also kann es schon mal keine Sperre von Mysql sein, sondern eher etwas von Spring?!
 

thecain

Top Contributor
Ich würde zum Beispiel Accepted zurückgeben und eine neue url auf der das Ergebnis angefragt werden kann, wenn es fertig ist. Auf diese Url kann dann gepollt werden oder mit Callbacks gearbeitet werden.
Sonst würde ich mal untersuchen warum das Query 5 min+ dreht, das klingt nicht OK
 

OnDemand

Top Contributor
Oh coole Idee! Danke! Hab es jetzt erstmal anders gelöst, dass ich immer 10 Einträge abfrage. Die Objeckte sind relartiv komlex und erstrecken sich über zig tabellen die angefragt werden müssen. Wo kann ich mehr zu deinem Vorschlag lesen? Wie wird das dann zwischengespeichert für die "Abholung"? Mit pollen meinst du, dass der anfragende Service dann immer wieder anfragt, bis er ein Ergebnis bekommt?
 

OnDemand

Top Contributor
Danke das sieht gut aus. Mir fiel jetzt aber auf dass auch bei kurzen Requests, andere Requestst nicht bedient werden.

Folgendes fiel mir auf: Es kommt eine Anfrage rein, der tenant wird auf user x gesetzt und aus seiner DB werden Daten geholt. (Ich sehe in den Logs die entsprechenden Queries), nun logged sich der User ein, und ruft da zb Daten ab aus seiner DB. Dann wird der andere Request unterbrochen . Warum geht das nicht parallel? Das muss doch mit der Datenbank zu tun haben. Ist hier vielleicht was nicht ganz richtig konfiguriert?

Sind 3 Connections zu wenig?
Code:
HikariConfig config = new HikariConfig();
                config.setJdbcUrl(tenantProperties.getProperty("datasource.url"));
                config.setUsername(tenantProperties.getProperty("datasource.username"));
                config.setPassword(tenantProperties.getProperty("datasource.password"));
                config.setPoolName(tenantId);
                config.setMaximumPoolSize(3);
                HikariDataSource ds = new HikariDataSource(config);

Edit: wenn ich während eines Request die Datenbank manuell abfrage, geht das parallel. Also muss es ein Problem sein, dass Http Requests nicht parallel bedient werden
 
Zuletzt bearbeitet:

thecain

Top Contributor
Meine Vermutung ins blaue ist, dass beim Poolwechsel offene Connections beendet werden.
Kenne mich aber mit HikariCP nicht aus, kann also auch komplett daneben sein
 

thecain

Top Contributor
so wie es aussieht wird doch die Config bei einem Benutzer/Tenantwechsel geändert. Der Poolname ist ja auch die TenantId.

Ist aber wir gesagt ins blaue geraten mit diesen paar Zeilen Code
 

dzim

Top Contributor
Also so ein Hikari-Pool ist durchaus sinnvoll! Eventuell kannst du noch überlegen, ob du diesen speziellen noch Asynchron machst. Wobei ich zugeben muss, dass ich hiermit beim nachträglichen einbauen in die Spring Boot Applikation auch so meine Probleme hatte (Async Timeouts u.s.w.)...

Würde auch erst mal noch schauen, wie man die Query optimieren kann - ich hatte z.B. auch schon Performance-Probleme mit ORM (Hibernate -könnt mich selbst prügeln, dass ich mich davon habe überzeugen lassen!) die ich am Ende mit Native Queries umgangen habe.

Auch solltest du dann wenige einzelne Requests absetzen - JDBC ist vergleichbar lahm.

Ich habe momentan mit einer Spring Boot-App auch so meine Probleme und werde, wenn ich sie nicht in den Griff bekomme, den Service wohl gegen eine (hoffentlich) schlankere Lösung mittels Ktor (Kotlin), HikariCP & Exposed zu Testzwecken austauschen...
 

OnDemand

Top Contributor
Hey, ja hab mit Hibernate auch so meine Probleme, besonders wenn man die Objekt-Relationen nicht richtig miteinander hat, dann macht es statt einem einfachen UPDATE , ein UPDATE auf null und dann DELETE das null und dann ein neues INSERT...Muss man erstmal dahinter steigen :p Hast du Deinen Pool in einer Tenanten Umgebung?
 

dzim

Top Contributor
Wenn du mir "Tenante Umgebung" definierst... :p Also was du darunter verstehst...
Wir haben eine relativ grosse Anwendung, die für X Kunden, kundenspezifische Daten aus der DB holt und per Rest zur Verfügung stellt, damit ein UI damit etwas anfangen kann und dass sich um die ganze Rechtegeschichte kümmert... Genügt dir das?

In der besagten Spring Boot-Anwendung gibt es allerdings kein HikariCP - die DB und die Connections dahin sind (vermutlich) nicht das Problem. Auch Rechteverwaltung kennt die Anwendung nicht, denn sie ist nur eine Rest-Middleware für diverse kleinere Anwendungen, die DB-Zugriff brauchen, die aber nicht relevant in Bezug auf Rechte uns so sind.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Mile Stone und Snapshot Versionen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Exception Body Frameworks - Spring, Play, Blade, Vaadin & Co 2
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot: Feld ignorieren Frameworks - Spring, Play, Blade, Vaadin & Co 3
N Buch zum Spring Framework bzw. Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Jasypt Spring Boot HIbernate wie komme ich an den Key? Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring Boot im Docker Container - Logback wird nicht verwendet Frameworks - Spring, Play, Blade, Vaadin & Co 13
sascha-sphw Spring Boot Resource Server (OAuth2) @MockMvc Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot CDN Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Deserialiserung mit JSON Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot POST zu PHP API Frameworks - Spring, Play, Blade, Vaadin & Co 12
OnDemand Spring Boot WebClient ErrorHandling Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring boot : Unique Constraint mit Many to Many Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Repository null Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Limits API calls Frameworks - Spring, Play, Blade, Vaadin & Co 20
J Spring boot mit Keyclaok rollen basiert Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Scheduler flexibel machen Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot + Vaadin API Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Spring Boot und seine Module verstehen Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Architektur für Spring Boot Projekt Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Boot, Versionskontrolle und Entwicklungsumgebung und Deployment Frameworks - Spring, Play, Blade, Vaadin & Co 2
Avalon Image aus JSON Objekt im Browser anzeigen (BLOB, extrahieren, konvertieren) Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon CSS Datei wird in Spring Boot mit Thymeleaf im Standardordner nicht gefunden Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Mapping null bei GET Aufruf Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Boot Test mit Junit Frameworks - Spring, Play, Blade, Vaadin & Co 8
J Spring Boot - Reactor Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Boot, H2 und Restschnittstelle synchonisation mit Client Frameworks - Spring, Play, Blade, Vaadin & Co 10
TonioTec Spring Boot Datenbankabfrage Frameworks - Spring, Play, Blade, Vaadin & Co 7
OnDemand Spring Boot encoding Slash in URL Parameter Frameworks - Spring, Play, Blade, Vaadin & Co 7
S Spring Boot startet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot -> War File | 404 in Tomcat Frameworks - Spring, Play, Blade, Vaadin & Co 20
LimDul Spring Boot Anwendung "automatisch" neustarten Frameworks - Spring, Play, Blade, Vaadin & Co 3
A Spring boot Frameworks - Spring, Play, Blade, Vaadin & Co 18
bueseb84 Unit Test mit Spring Boot - Service Autowired Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand DTO <> Entity Hibernate Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 28
OnDemand Verständnisfrage DTO Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 19
OnDemand Spring Boot Load Balancing Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Threads Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Spring Boot: Wert aus Config Datei ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot: Ein geschütztes Verzeichnis Frameworks - Spring, Play, Blade, Vaadin & Co 1
bueseb84 Probleme mit Spring Boot Docker und Bootstrap Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot Eureka/Zuul Frameworks - Spring, Play, Blade, Vaadin & Co 0
F Redirect in einer Spring Boot WebApplication Frameworks - Spring, Play, Blade, Vaadin & Co 7
B Erstes Spring Boot Projekt: Gameserver-Manager Frameworks - Spring, Play, Blade, Vaadin & Co 5
V Spring Boot, thymeleaf, Eingaben cashen oder per session speichern? Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Spring Boot Security Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot i18n Frameworks - Spring, Play, Blade, Vaadin & Co 28
bueseb84 Spring Boot : Update H2 Repository Frameworks - Spring, Play, Blade, Vaadin & Co 14
A Spring Boot/ OneToMany Relation Frameworks - Spring, Play, Blade, Vaadin & Co 29
S Spring Boot testen mit Service Klassen Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Controller Spring Boot mit Java Frameworks - Spring, Play, Blade, Vaadin & Co 20
J Spring Boot H2 Datbase Frameworks - Spring, Play, Blade, Vaadin & Co 2
J Spring Boot Thymleaf mit Java.Optional Frameworks - Spring, Play, Blade, Vaadin & Co 0
L JavaFX Anwendung mit Spring Boot und mehrere FXML Forms Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Mit Maven (und Spring-boot) ein FatJAR und ein EAR bauen Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Basic Authentication langsam Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Start Stop Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
H Spring Boot - Dependency Injection Frameworks - Spring, Play, Blade, Vaadin & Co 26
B Java Spring Boot - POM-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Boot parallele Requests Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Resttemplate exchange XML Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Root-Pfad zu meiner Spring Boot Application Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Error Logging Frameworks - Spring, Play, Blade, Vaadin & Co 5

Ähnliche Java Themen

Neue Themen


Oben