Skip to content

Commit 42b2f8c

Browse files
authored
Merge branch 'main' into batch_pipeline_status
2 parents 193b202 + 7d2c480 commit 42b2f8c

38 files changed

+3071
-557
lines changed

conf/openmetadata.yaml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,12 @@ database:
225225
# These work across both PostgreSQL and MySQL drivers
226226
properties:
227227
# HikariCP connection pool settings
228-
connectionTimeout: ${DB_CONNECTION_TIMEOUT:-300000} # 300 seconds
229-
idleTimeout: ${DB_IDLE_TIMEOUT:-600000} # 10 minutes
230-
maxLifetime: ${DB_MAX_LIFETIME:-1800000} # 30 minutes
231-
leakDetectionThreshold: ${DB_LEAK_DETECTION_THRESHOLD:-600000} # 10 minute
228+
connectionTimeout: ${DB_CONNECTION_TIMEOUT:-30000} # 30 seconds - fail fast if pool exhausted
229+
idleTimeout: ${DB_IDLE_TIMEOUT:-120000} # 2 minutes - reclaim idle connections faster
230+
maxLifetime: ${DB_MAX_LIFETIME:-600000} # 10 minutes - rotate connections (cloud DB friendly)
231+
leakDetectionThreshold: ${DB_LEAK_DETECTION_THRESHOLD:-60000} # 1 minute - detect leaks early
232232
keepaliveTime: ${DB_KEEPALIVE_TIME:-0} # 0 = disabled (set to 30000 for Aurora)
233-
validationTimeout: ${DB_VALIDATION_TIMEOUT:-300000} # 300 seconds
233+
validationTimeout: ${DB_VALIDATION_TIMEOUT:-5000} # 5 seconds - HikariCP default
234234
# PostgreSQL specific - these are ignored by MySQL driver
235235
prepareThreshold: ${DB_PG_PREPARE_THRESHOLD:-1} # Use prepared statements immediately
236236
preparedStatementCacheQueries: ${DB_PG_PREP_STMT_CACHE_QUERIES:-500} # Cache more statements
@@ -580,10 +580,9 @@ limits:
580580
limitsConfigFile: ${LIMITS_CONFIG_FILE:-""}
581581

582582
# Bulk Operation Configuration
583-
# Controls parallelism and resource usage for bulk API operations (e.g., bulk import/export)
584-
# Uses a bounded thread pool to prevent connection pool exhaustion
583+
# Controls parallelism and admission control for bulk API operations.
585584
bulkOperation:
586-
# Max threads for bulk operations (recommendations: 2 vCore=5-8, 4 vCore=8-15, 8 vCore=15-25)
585+
# Max threads for processing
587586
maxThreads: ${BULK_OPERATION_MAX_THREADS:-10}
588587
# Max queued operations before rejection (returns 503)
589588
queueSize: ${BULK_OPERATION_QUEUE_SIZE:-1000}

openmetadata-integration-tests/src/test/java/org/openmetadata/it/tests/APIEndpointResourceIT.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.openmetadata.schema.type.Field;
3232
import org.openmetadata.schema.type.FieldDataType;
3333
import org.openmetadata.schema.type.TagLabel;
34+
import org.openmetadata.schema.type.api.BulkOperationResult;
3435
import org.openmetadata.sdk.client.OpenMetadataClient;
3536
import org.openmetadata.sdk.exceptions.InvalidRequestException;
3637
import org.openmetadata.sdk.models.ListParams;
@@ -50,6 +51,7 @@ public class APIEndpointResourceIT extends BaseEntityIT<APIEndpoint, CreateAPIEn
5051
{
5152
supportsLifeCycle = true;
5253
supportsListHistoryByTimestamp = true;
54+
supportsBulkAPI = true;
5355
}
5456

5557
// ===================================================================
@@ -705,4 +707,25 @@ private static void assertField(Field expectedField, Field actualField) {
705707
assertFields(expectedField.getChildren(), actualField.getChildren());
706708
}
707709
}
710+
711+
// ===================================================================
712+
// BULK API SUPPORT
713+
// ===================================================================
714+
715+
@Override
716+
protected BulkOperationResult executeBulkCreate(List<CreateAPIEndpoint> createRequests) {
717+
return SdkClients.adminClient().apiEndpoints().bulkCreateOrUpdate(createRequests);
718+
}
719+
720+
@Override
721+
protected BulkOperationResult executeBulkCreateAsync(List<CreateAPIEndpoint> createRequests) {
722+
return SdkClients.adminClient().apiEndpoints().bulkCreateOrUpdateAsync(createRequests);
723+
}
724+
725+
@Override
726+
protected CreateAPIEndpoint createInvalidRequestForBulk(TestNamespace ns) {
727+
CreateAPIEndpoint request = new CreateAPIEndpoint();
728+
request.setName(ns.prefix("invalid_api_endpoint"));
729+
return request;
730+
}
708731
}

0 commit comments

Comments
 (0)