perf: build info log messages lazily so raising the log level actually saves work (#27837)

Raising GLOBAL_LOG_LEVEL to WARNING buys quieter output but not less work: 241 INFO call sites interpolate their payload into an f-string before the logging call gets to drop it. The heaviest is get_doc, which logs every chunk id and metadata dict in a collection, so on the full-context retrieval path that is the entire knowledge base, once per chat request.

That one line at WARNING, CPython 3.12:

| knowledge base | payload | before   | after   |
| -------------- | ------- | -------- | ------- |
| top-k of 3     | 1.2 kB  | 3.8 us   | 0.07 us |
| 500 chunks     | 201 kB  | 583.6 us | 0.08 us |
| 5000 chunks    | 2.0 MB  | 5.8 ms   | 0.15 us |

The lazy form log.info('query_doc:result %s %s', result.ids, result.metadatas) hands the payload to record.getMessage(), which the InterceptHandler only reaches once a record has passed the level check. Output at INFO is byte-identical. Two sites that already built their message eagerly, one str concat and one % operator, move to the same lazy form.
This commit is contained in:
Classic298 authored and GitHub committed 2026-08-02 15:39:10 -05:00
1 parent 52145eede9
commit 2d18727ab8
48 files changed
+297 -247

No files matched your search

@@ -36,7 +36,7 @@ class S3VectorClient(VectorDBBase):
if self.bucket_name and self.region:
try:
self.client = boto3.client('s3vectors', region_name=self.region)
log.info(f"S3Vector client initialized for bucket '{self.bucket_name}' in region '{self.region}'")
log.info("S3Vector client initialized for bucket '%s' in region '%s'", self.bucket_name, self.region)
except Exception as e:
log.error(f'Failed to initialize S3Vector client: {e}')
self.client = None
@@ -70,7 +70,9 @@ class S3VectorClient(VectorDBBase):
]
},
)
log.info(f'Created S3 index: {index_name} (dim={dimension}, type={data_type}, metric={distance_metric})')
log.info(
'Created S3 index: %s (dim=%s, type=%s, metric=%s)', index_name, dimension, data_type, distance_metric
)
except Exception as e:
log.error(f"Error creating S3 index '{index_name}': {e}")
raise
@@ -137,9 +139,9 @@ class S3VectorClient(VectorDBBase):
return
try:
log.info(f"Deleting collection '{collection_name}'")
log.info("Deleting collection '%s'", collection_name)
self.client.delete_index(vectorBucketName=self.bucket_name, indexName=collection_name)
log.info(f"Successfully deleted collection '{collection_name}'")
log.info("Successfully deleted collection '%s'", collection_name)
except Exception as e:
log.error(f"Error deleting collection '{collection_name}': {e}")
raise
@@ -156,7 +158,7 @@ class S3VectorClient(VectorDBBase):
try:
if not self.has_collection(collection_name):
log.info(f"Index '{collection_name}' does not exist. Creating index.")
log.info("Index '%s' does not exist. Creating index.", collection_name)
self._create_index(
index_name=collection_name,
dimension=dimension,
@@ -202,9 +204,11 @@ class S3VectorClient(VectorDBBase):
indexName=collection_name,
vectors=batch,
)
log.info(f"Inserted batch {i // batch_size + 1}: {len(batch)} vectors into index '{collection_name}'.")
log.info(
"Inserted batch %s: %s vectors into index '%s'.", i // batch_size + 1, len(batch), collection_name
)
log.info(f"Completed insertion of {len(vectors)} vectors into index '{collection_name}'.")
log.info("Completed insertion of %s vectors into index '%s'.", len(vectors), collection_name)
except Exception as e:
log.error(f'Error inserting vectors: {e}')
raise
@@ -218,11 +222,11 @@ class S3VectorClient(VectorDBBase):
return
dimension = len(items[0]['vector'])
log.info(f'Upsert dimension: {dimension}')
log.info('Upsert dimension: %s', dimension)
try:
if not self.has_collection(collection_name):
log.info(f"Index '{collection_name}' does not exist. Creating index for upsert.")
log.info("Index '%s' does not exist. Creating index for upsert.", collection_name)
self._create_index(
index_name=collection_name,
dimension=dimension,
@@ -264,10 +268,14 @@ class S3VectorClient(VectorDBBase):
batch = vectors[i : i + batch_size]
if i == 0: # Log sample info for first batch only
log.info(
f'Upserting batch 1: {len(batch)} vectors. First vector sample: key={batch[0]["key"]}, data_type={type(batch[0]["data"]["float32"])}, data_len={len(batch[0]["data"]["float32"])}'
'Upserting batch 1: %s vectors. First vector sample: key=%s, data_type=%s, data_len=%s',
len(batch),
batch[0]['key'],
type(batch[0]['data']['float32']),
len(batch[0]['data']['float32']),
)
else:
log.info(f'Upserting batch {i // batch_size + 1}: {len(batch)} vectors.')
log.info('Upserting batch %s: %s vectors.', i // batch_size + 1, len(batch))
self.client.put_vectors(
vectorBucketName=self.bucket_name,
@@ -275,7 +283,7 @@ class S3VectorClient(VectorDBBase):
vectors=batch,
)
log.info(f"Completed upsert of {len(vectors)} vectors into index '{collection_name}'.")
log.info("Completed upsert of %s vectors into index '%s'.", len(vectors), collection_name)
except Exception as e:
log.error(f'Error upserting vectors: {e}')
raise
@@ -300,7 +308,7 @@ class S3VectorClient(VectorDBBase):
return None
try:
log.info(f"Searching collection '{collection_name}' with {len(vectors)} query vectors, limit={limit}")
log.info("Searching collection '%s' with %s query vectors, limit=%s", collection_name, len(vectors), limit)
# Initialize result lists
all_ids = []
@@ -362,7 +370,7 @@ class S3VectorClient(VectorDBBase):
all_metadatas.append(query_metadatas)
all_distances.append(query_distances)
log.info(f'Search completed. Found results for {len(all_ids)} queries')
log.info('Search completed. Found results for %s queries', len(all_ids))
# Return SearchResult format
return SearchResult(
@@ -402,7 +410,7 @@ class S3VectorClient(VectorDBBase):
return self.get(collection_name)
try:
log.info(f"Querying collection '{collection_name}' with filter: {filter}")
log.info("Querying collection '%s' with filter: %s", collection_name, filter)
# For S3 Vector, we need to use list_vectors and then filter results
# Since S3 Vector may not support complex server-side filtering,
@@ -437,7 +445,7 @@ class S3VectorClient(VectorDBBase):
if limit and len(filtered_ids) >= limit:
break
log.info(f'Filter applied: {len(filtered_ids)} vectors match out of {len(all_ids)} total')
log.info('Filter applied: %s vectors match out of %s total', len(filtered_ids), len(all_ids))
# Return GetResult format
if filtered_ids:
@@ -472,7 +480,7 @@ class S3VectorClient(VectorDBBase):
return GetResult(ids=[[]], documents=[[]], metadatas=[[]])
try:
log.info(f"Retrieving all vectors from collection '{collection_name}'")
log.info("Retrieving all vectors from collection '%s'", collection_name)
# Initialize result lists
all_ids = []
@@ -534,7 +542,7 @@ class S3VectorClient(VectorDBBase):
if not next_token:
break
log.info(f"Retrieved {len(all_ids)} vectors from collection '{collection_name}'")
log.info("Retrieved %s vectors from collection '%s'", len(all_ids), collection_name)
# Return in GetResult format
# The Open WebUI GetResult expects lists of lists, so we wrap each list
@@ -576,17 +584,17 @@ class S3VectorClient(VectorDBBase):
try:
if ids:
# Delete by specific vector IDs/keys
log.info(f"Deleting {len(ids)} vectors by IDs from collection '{collection_name}'")
log.info("Deleting %s vectors by IDs from collection '%s'", len(ids), collection_name)
self.client.delete_vectors(
vectorBucketName=self.bucket_name,
indexName=collection_name,
keys=ids,
)
log.info(f"Deleted {len(ids)} vectors from index '{collection_name}'")
log.info("Deleted %s vectors from index '%s'", len(ids), collection_name)
elif filter:
# Handle filter-based deletion
log.info(f"Deleting vectors by filter from collection '{collection_name}': {filter}")
log.info("Deleting vectors by filter from collection '%s': %s", collection_name, filter)
# If this is a knowledge collection and we have a file_id filter,
# also clean up the corresponding file-specific collection
@@ -595,7 +603,8 @@ class S3VectorClient(VectorDBBase):
file_collection_name = f'file-{file_id}'
if self.has_collection(file_collection_name):
log.info(
f"Found related file-specific collection '{file_collection_name}', deleting it to prevent duplicates"
"Found related file-specific collection '%s', deleting it to prevent duplicates",
file_collection_name,
)
self.delete_collection(file_collection_name)
@@ -604,7 +613,7 @@ class S3VectorClient(VectorDBBase):
query_result = self.query(collection_name, filter)
if query_result and query_result.ids and query_result.ids[0]:
matching_ids = query_result.ids[0]
log.info(f'Found {len(matching_ids)} vectors matching filter, deleting them')
log.info('Found %s vectors matching filter, deleting them', len(matching_ids))
# Delete the matching vectors by ID
self.client.delete_vectors(
@@ -612,7 +621,7 @@ class S3VectorClient(VectorDBBase):
indexName=collection_name,
keys=matching_ids,
)
log.info(f"Deleted {len(matching_ids)} vectors from index '{collection_name}' using filter")
log.info("Deleted %s vectors from index '%s' using filter", len(matching_ids), collection_name)
else:
log.warning('No vectors found matching the filter criteria')
else:
@@ -645,11 +654,11 @@ class S3VectorClient(VectorDBBase):
try:
self.client.delete_index(vectorBucketName=self.bucket_name, indexName=index_name)
deleted_count += 1
log.info(f'Deleted index: {index_name}')
log.info('Deleted index: %s', index_name)
except Exception as e:
log.error(f"Error deleting index '{index_name}': {e}")
log.info(f'Reset completed: deleted {deleted_count} indexes')
log.info('Reset completed: deleted %s indexes', deleted_count)
except Exception as e:
log.error(f'Error during reset: {e}')