From eb24f8690d96423f011d8271760ce5667d050d8a Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 10 Nov 2025 19:07:18 +0000
Subject: [PATCH 1/3] Fix database performance: Add connection pooling and
timeout optimizations
---
.../pet_clinic_insurance_service/settings.py | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/pet_clinic_insurance_service/pet_clinic_insurance_service/settings.py b/pet_clinic_insurance_service/pet_clinic_insurance_service/settings.py
index b159fb30..06fd57d4 100644
--- a/pet_clinic_insurance_service/pet_clinic_insurance_service/settings.py
+++ b/pet_clinic_insurance_service/pet_clinic_insurance_service/settings.py
@@ -117,6 +117,14 @@ def get_secret_value(secret_name: str, region_name: str) -> str:
"PASSWORD": DB_PASSWORD,
"HOST": os.environ.get("DB_SERVICE_HOST"),
"PORT": os.environ.get("DB_SERVICE_PORT"),
+ # Database connection pool optimization
+ "CONN_MAX_AGE": 600, # Keep connections alive for 10 minutes
+ "OPTIONS": {
+ "MAX_CONNS": 20, # Maximum number of connections
+ "MIN_CONNS": 5, # Minimum number of connections
+ "connect_timeout": 10, # Connection timeout in seconds
+ "options": "-c default_transaction_isolation=read_committed"
+ }
}
}
@@ -138,6 +146,11 @@ def get_secret_value(secret_name: str, region_name: str) -> str:
'level': 'INFO',
'propagate': True,
},
+ 'django.db.backends': {
+ 'handlers': ['console'],
+ 'level': 'WARNING', # Log slow queries
+ 'propagate': False,
+ },
},
}
@@ -180,4 +193,4 @@ def get_secret_value(secret_name: str, region_name: str) -> str:
# Default primary key field type
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
-DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
+DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
\ No newline at end of file
From 90e4d9ae78a50491e9ac1a7070a2e420aa50a67a Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 10 Nov 2025 19:07:44 +0000
Subject: [PATCH 2/3] Fix HTTP client timeouts to prevent
ResourceAccessException
---
.../src/main/resources/application.yml | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/spring-petclinic-customers-service/src/main/resources/application.yml b/spring-petclinic-customers-service/src/main/resources/application.yml
index 26e1025f..5ffb2407 100644
--- a/spring-petclinic-customers-service/src/main/resources/application.yml
+++ b/spring-petclinic-customers-service/src/main/resources/application.yml
@@ -4,6 +4,18 @@ spring:
config:
import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/}
+# HTTP client timeout configuration to prevent ResourceAccessException
+server:
+ tomcat:
+ connection-timeout: 60000 # 60 seconds
+ keep-alive-timeout: 60000
+
+# RestTemplate and WebClient timeout configuration
+rest:
+ client:
+ connection-timeout: 30000 # 30 seconds
+ read-timeout: 60000 # 60 seconds
+
eureka:
instance:
preferIpAddress: true
@@ -16,6 +28,7 @@ logging:
root: OFF
org.springframework.samples.petclinic.customers.web.PetResource: INFO
org.springframework.samples.petclinic.customers.aws.SqsService: FATAL
+ org.springframework.web.client.RestTemplate: WARN # Log HTTP client errors
pattern:
level: trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
From e508bb5a5a04ad642747fd56c1aff303887a78de Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 10 Nov 2025 19:08:18 +0000
Subject: [PATCH 3/3] Fix Hibernate StackOverflowError in deleteAllInBatch with
native query
---
.../customers/model/OwnerRepository.java | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/OwnerRepository.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/OwnerRepository.java
index aa720f24..ae272cb5 100644
--- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/OwnerRepository.java
+++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/OwnerRepository.java
@@ -16,6 +16,9 @@
package org.springframework.samples.petclinic.customers.model;
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
/**
* Repository class for Owner domain objects All method names are compliant with Spring Data naming
@@ -27,4 +30,14 @@
* @author Michael Isvy
* @author Maciej Szarlinski
*/
-public interface OwnerRepository extends JpaRepository { }
+public interface OwnerRepository extends JpaRepository {
+
+ /**
+ * Custom delete method to prevent StackOverflowError in deleteAllInBatch
+ * Uses native SQL to avoid Hibernate HQL parsing issues
+ */
+ @Modifying
+ @Transactional
+ @Query(value = "DELETE FROM owners", nativeQuery = true)
+ void deleteAllOwners();
+}
\ No newline at end of file