Skip to content

Commit 879b85f

Browse files
committed
rename ConfigurationStatus to CollectionWarning
1 parent 429e180 commit 879b85f

13 files changed

Lines changed: 101 additions & 135 deletions

File tree

docs/grpc/docs.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
- [CollectionOperationResponse](#qdrant-CollectionOperationResponse)
2525
- [CollectionParams](#qdrant-CollectionParams)
2626
- [CollectionParamsDiff](#qdrant-CollectionParamsDiff)
27-
- [ConfigurationStatus](#qdrant-ConfigurationStatus)
27+
- [CollectionWarning](#qdrant-CollectionWarning)
2828
- [CreateAlias](#qdrant-CreateAlias)
2929
- [CreateCollection](#qdrant-CreateCollection)
3030
- [CreateCollection.MetadataEntry](#qdrant-CreateCollection-MetadataEntry)
@@ -609,7 +609,7 @@
609609
| payload_schema | [CollectionInfo.PayloadSchemaEntry](#qdrant-CollectionInfo-PayloadSchemaEntry) | repeated | Collection data types |
610610
| points_count | [uint64](#uint64) | optional | Approximate number of points in the collection |
611611
| indexed_vectors_count | [uint64](#uint64) | optional | Approximate number of indexed vectors in the collection. |
612-
| configuration_status | [ConfigurationStatus](#qdrant-ConfigurationStatus) | | status of configuration inconsistencies |
612+
| warnings | [CollectionWarning](#qdrant-CollectionWarning) | repeated | Warnings related to the collection |
613613

614614

615615

@@ -688,16 +688,15 @@
688688

689689

690690

691-
<a name="qdrant-ConfigurationStatus"></a>
691+
<a name="qdrant-CollectionWarning"></a>
692692

693-
### ConfigurationStatus
693+
### CollectionWarning
694694

695695

696696

697697
| Field | Type | Label | Description |
698698
| ----- | ---- | ----- | ----------- |
699-
| ok | [bool](#bool) | | |
700-
| warning | [string](#string) | | |
699+
| message | [string](#string) | | |
701700

702701

703702

docs/redoc/master/openapi.json

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6595,7 +6595,6 @@
65956595
"type": "object",
65966596
"required": [
65976597
"config",
6598-
"configuration_status",
65996598
"optimizer_status",
66006599
"payload_schema",
66016600
"segments_count",
@@ -6608,8 +6607,13 @@
66086607
"optimizer_status": {
66096608
"$ref": "#/components/schemas/OptimizersStatus"
66106609
},
6611-
"configuration_status": {
6612-
"$ref": "#/components/schemas/ConfigurationStatus"
6610+
"warnings": {
6611+
"description": "Warnings related to the collection",
6612+
"default": [],
6613+
"type": "array",
6614+
"items": {
6615+
"$ref": "#/components/schemas/CollectionWarning"
6616+
}
66136617
},
66146618
"indexed_vectors_count": {
66156619
"description": "Approximate number of indexed vectors in the collection. Indexed vectors in large segments are faster to query, as it is stored in a specialized vector index.",
@@ -6678,30 +6682,17 @@
66786682
}
66796683
]
66806684
},
6681-
"ConfigurationStatus": {
6682-
"description": "Current state of the collection",
6683-
"oneOf": [
6684-
{
6685-
"description": "Configuration is valid",
6686-
"type": "string",
6687-
"enum": [
6688-
"ok"
6689-
]
6690-
},
6691-
{
6692-
"description": "Configuration has warnings",
6693-
"type": "object",
6694-
"required": [
6695-
"warning"
6696-
],
6697-
"properties": {
6698-
"warning": {
6699-
"type": "string"
6700-
}
6701-
},
6702-
"additionalProperties": false
6685+
"CollectionWarning": {
6686+
"type": "object",
6687+
"required": [
6688+
"message"
6689+
],
6690+
"properties": {
6691+
"message": {
6692+
"description": "Warning message",
6693+
"type": "string"
67036694
}
6704-
]
6695+
}
67056696
},
67066697
"CollectionConfig": {
67076698
"description": "Information about the collection configuration",

lib/api/src/grpc/proto/collections.proto

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,8 @@ message OptimizerStatus {
162162
string error = 2;
163163
}
164164

165-
message ConfigurationStatus {
166-
bool ok = 1;
167-
string warning = 2;
165+
message CollectionWarning {
166+
string message = 1;
168167
}
169168

170169
message HnswConfigDiff {
@@ -577,7 +576,7 @@ message CollectionInfo {
577576
map<string, PayloadSchemaInfo> payload_schema = 8; // Collection data types
578577
optional uint64 points_count = 9; // Approximate number of points in the collection
579578
optional uint64 indexed_vectors_count = 10; // Approximate number of indexed vectors in the collection.
580-
ConfigurationStatus configuration_status = 11; // status of configuration inconsistencies
579+
repeated CollectionWarning warnings = 11; // Warnings related to the collection
581580
}
582581

583582
message ChangeAliases {

lib/api/src/grpc/qdrant.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -378,11 +378,9 @@ pub struct OptimizerStatus {
378378
#[derive(serde::Serialize)]
379379
#[allow(clippy::derive_partial_eq_without_eq)]
380380
#[derive(Clone, PartialEq, ::prost::Message)]
381-
pub struct ConfigurationStatus {
382-
#[prost(bool, tag = "1")]
383-
pub ok: bool,
384-
#[prost(string, tag = "2")]
385-
pub warning: ::prost::alloc::string::String,
381+
pub struct CollectionWarning {
382+
#[prost(string, tag = "1")]
383+
pub message: ::prost::alloc::string::String,
386384
}
387385
#[derive(validator::Validate)]
388386
#[derive(serde::Serialize)]
@@ -1242,9 +1240,9 @@ pub struct CollectionInfo {
12421240
/// Approximate number of indexed vectors in the collection.
12431241
#[prost(uint64, optional, tag = "10")]
12441242
pub indexed_vectors_count: ::core::option::Option<u64>,
1245-
/// status of configuration inconsistencies
1246-
#[prost(message, optional, tag = "11")]
1247-
pub configuration_status: ::core::option::Option<ConfigurationStatus>,
1243+
/// Warnings related to the collection
1244+
#[prost(message, repeated, tag = "11")]
1245+
pub warnings: ::prost::alloc::vec::Vec<CollectionWarning>,
12481246
}
12491247
#[derive(validator::Validate)]
12501248
#[derive(serde::Serialize)]

lib/collection/src/collection/collection_ops.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -406,12 +406,10 @@ impl Collection {
406406
Ok(info)
407407
}
408408

409-
pub async fn validate_and_print_warnings(&self) -> CollectionResult<()> {
410-
let status = self.collection_config.read().await.validate_configuration();
411-
if let ConfigurationStatus::Warning(warnings) = status {
412-
for warning in warnings.lines() {
413-
log::warn!("Collection {}: {warning}", self.name());
414-
}
409+
pub async fn print_warnings(&self) -> CollectionResult<()> {
410+
let warnings = self.collection_config.read().await.get_warnings();
411+
for warning in warnings {
412+
log::warn!("Collection {}: {}", self.name(), warning.message);
415413
}
416414
Ok(())
417415
}

lib/collection/src/collection/state_management.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ impl Collection {
173173

174174
self.collection_config.read().await.save(&self.path)?;
175175

176-
self.validate_and_print_warnings().await?;
176+
self.print_warnings().await?;
177177

178178
if recreate_optimizers {
179179
self.recreate_optimizers_blocking().await?;

lib/collection/src/config.rs

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use std::collections::{BTreeMap, HashMap, HashSet};
2-
use std::fmt::Write as _;
32
use std::fs::File;
4-
use std::io::{Read, Write as _};
3+
use std::io::{Read, Write};
54
use std::num::{NonZeroU32, NonZeroUsize};
65
use std::path::Path;
76

@@ -23,8 +22,8 @@ use wal::WalOptions;
2322

2423
use crate::operations::config_diff::{DiffConfig, QuantizationConfigDiff};
2524
use crate::operations::types::{
26-
CollectionError, CollectionResult, ConfigurationStatus, SparseVectorParams,
27-
SparseVectorsConfig, VectorParams, VectorParamsDiff, VectorsConfig, VectorsConfigDiff,
25+
CollectionError, CollectionResult, CollectionWarning, SparseVectorParams, SparseVectorsConfig,
26+
VectorParams, VectorParamsDiff, VectorsConfig, VectorsConfigDiff,
2827
};
2928
use crate::operations::validation;
3029
use crate::optimizers_builder::OptimizersConfig;
@@ -277,9 +276,9 @@ impl CollectionConfigInternal {
277276
}
278277
}
279278

280-
/// Check for configuration inconsistencies.
281-
pub fn validate_configuration(&self) -> ConfigurationStatus {
282-
let mut messages = String::new();
279+
/// Get warnings related to this configuration
280+
pub fn get_warnings(&self) -> Vec<CollectionWarning> {
281+
let mut warnings = Vec::new();
283282

284283
for (vector_name, vector_config) in self.params.vectors.params_iter() {
285284
let vector_hnsw = self.hnsw_config.update_opt(vector_config.hnsw_config);
@@ -289,30 +288,25 @@ impl CollectionConfigInternal {
289288

290289
if vector_hnsw.copy_vectors.unwrap_or_default() {
291290
if !vector_quantization {
292-
writeln!(
293-
&mut messages,
294-
"The `hnsw_config.copy_vectors` option for vector '{vector_name}' \
295-
requires quantization to be enabled. This option will be ignored."
296-
)
297-
.unwrap();
291+
warnings.push(CollectionWarning {
292+
message: format!(
293+
"The `hnsw_config.copy_vectors` option for vector '{vector_name}' \
294+
requires quantization to be enabled. This option will be ignored."
295+
),
296+
});
298297
}
299298
if vector_config.multivector_config.is_some() {
300-
writeln!(
301-
&mut messages,
302-
"The `hnsw_config.copy_vectors` option for vector '{vector_name}' \
303-
is not compatible with multivectors. This option will be ignored."
304-
)
305-
.unwrap();
299+
warnings.push(CollectionWarning {
300+
message: format!(
301+
"The `hnsw_config.copy_vectors` option for vector '{vector_name}' \
302+
is not compatible with multivectors. This option will be ignored."
303+
),
304+
});
306305
}
307306
}
308307
}
309308

310-
if !messages.is_empty() {
311-
messages.pop(); // trim the last newline
312-
ConfigurationStatus::Warning(messages)
313-
} else {
314-
ConfigurationStatus::Ok
315-
}
309+
warnings
316310
}
317311

318312
pub fn to_base_segment_config(&self) -> CollectionResult<SegmentConfig> {

lib/collection/src/operations/conversions.rs

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ use tonic::Status;
2525
use super::cluster_ops::ReshardingDirection;
2626
use super::consistency_params::ReadConsistency;
2727
use super::types::{
28-
CollectionConfig, ConfigurationStatus, ContextExamplePair, CoreSearchRequest, Datatype,
29-
DiscoverRequestInternal, GroupsResult, Modifier, PointGroup, RecommendExample,
30-
RecommendGroupsRequestInternal, ReshardingInfo, SparseIndexParams, SparseVectorParams,
31-
SparseVectorsConfig, VectorParamsDiff, VectorsConfigDiff,
28+
CollectionConfig, ContextExamplePair, CoreSearchRequest, Datatype, DiscoverRequestInternal,
29+
GroupsResult, Modifier, PointGroup, RecommendExample, RecommendGroupsRequestInternal,
30+
ReshardingInfo, SparseIndexParams, SparseVectorParams, SparseVectorsConfig, VectorParamsDiff,
31+
VectorsConfigDiff,
3232
};
3333
use crate::config::{
3434
CollectionParams, ShardingMethod, WalConfig, default_replication_factor,
@@ -50,9 +50,9 @@ use crate::operations::config_diff::{
5050
use crate::operations::point_ops::{FilterSelector, PointIdsList, PointsSelector, WriteOrdering};
5151
use crate::operations::shard_selector_internal::ShardSelectorInternal;
5252
use crate::operations::types::{
53-
AliasDescription, CollectionClusterInfo, CollectionInfo, CollectionStatus, CountResult,
54-
LocalShardInfo, OptimizersStatus, RecommendRequestInternal, RecordInternal, RemoteShardInfo,
55-
ShardTransferInfo, UpdateResult, UpdateStatus, VectorParams, VectorsConfig,
53+
AliasDescription, CollectionClusterInfo, CollectionInfo, CollectionStatus, CollectionWarning,
54+
CountResult, LocalShardInfo, OptimizersStatus, RecommendRequestInternal, RecordInternal,
55+
RemoteShardInfo, ShardTransferInfo, UpdateResult, UpdateStatus, VectorParams, VectorsConfig,
5656
};
5757
use crate::optimizers_builder::OptimizersConfig;
5858
use crate::shards::remote_shard::CollectionCoreSearchRequest;
@@ -380,7 +380,7 @@ impl From<CollectionInfo> for api::grpc::qdrant::CollectionInfo {
380380
let CollectionInfo {
381381
status,
382382
optimizer_status,
383-
configuration_status,
383+
warnings,
384384
indexed_vectors_count,
385385
points_count,
386386
segments_count,
@@ -448,15 +448,6 @@ impl From<CollectionInfo> for api::grpc::qdrant::CollectionInfo {
448448
api::grpc::qdrant::OptimizerStatus { ok: false, error }
449449
}
450450
}),
451-
configuration_status: Some(match configuration_status {
452-
ConfigurationStatus::Ok => api::grpc::qdrant::ConfigurationStatus {
453-
ok: true,
454-
warning: "".to_string(),
455-
},
456-
ConfigurationStatus::Warning(warning) => {
457-
api::grpc::qdrant::ConfigurationStatus { ok: false, warning }
458-
}
459-
}),
460451
indexed_vectors_count: indexed_vectors_count.map(|count| count as u64),
461452
points_count: points_count.map(|count| count as u64),
462453
segments_count: segments_count as u64,
@@ -545,10 +536,28 @@ impl From<CollectionInfo> for api::grpc::qdrant::CollectionInfo {
545536
.into_iter()
546537
.map(|(k, v)| (k.to_string(), v.into()))
547538
.collect(),
539+
warnings: warnings
540+
.into_iter()
541+
.map(api::grpc::qdrant::CollectionWarning::from)
542+
.collect(),
548543
}
549544
}
550545
}
551546

547+
impl From<CollectionWarning> for api::grpc::qdrant::CollectionWarning {
548+
fn from(value: CollectionWarning) -> Self {
549+
let CollectionWarning { message } = value;
550+
Self { message }
551+
}
552+
}
553+
554+
impl From<api::grpc::qdrant::CollectionWarning> for CollectionWarning {
555+
fn from(value: api::grpc::qdrant::CollectionWarning) -> Self {
556+
let api::grpc::qdrant::CollectionWarning { message } = value;
557+
Self { message }
558+
}
559+
}
560+
552561
impl From<RecordInternal> for api::grpc::qdrant::RetrievedPoint {
553562
fn from(record: RecordInternal) -> Self {
554563
let RecordInternal {
@@ -851,12 +860,12 @@ impl TryFrom<api::grpc::qdrant::GetCollectionInfoResponse> for CollectionInfo {
851860
let api::grpc::qdrant::CollectionInfo {
852861
status,
853862
optimizer_status,
854-
configuration_status,
855863
indexed_vectors_count,
856864
points_count,
857865
segments_count,
858866
config,
859867
payload_schema,
868+
warnings,
860869
} = collection_info_response;
861870
Ok(Self {
862871
status: CollectionStatus::try_from(status)?,
@@ -872,20 +881,6 @@ impl TryFrom<api::grpc::qdrant::GetCollectionInfoResponse> for CollectionInfo {
872881
}
873882
}
874883
},
875-
configuration_status: match configuration_status {
876-
None => {
877-
return Err(Status::invalid_argument(
878-
"Malformed ConfigurationStatus type",
879-
));
880-
}
881-
Some(api::grpc::qdrant::ConfigurationStatus { ok, warning }) => {
882-
if ok {
883-
ConfigurationStatus::Ok
884-
} else {
885-
ConfigurationStatus::Warning(warning)
886-
}
887-
}
888-
},
889884
indexed_vectors_count: indexed_vectors_count.map(|count| count as usize),
890885
points_count: points_count.map(|count| count as usize),
891886
segments_count: segments_count as usize,
@@ -901,6 +896,7 @@ impl TryFrom<api::grpc::qdrant::GetCollectionInfoResponse> for CollectionInfo {
901896
.into_iter()
902897
.map(|(k, v)| Ok::<_, Status>((json_path_from_proto(&k)?, v.try_into()?)))
903898
.try_collect()?,
899+
warnings: warnings.into_iter().map(CollectionWarning::from).collect(),
904900
})
905901
}
906902
}

0 commit comments

Comments
 (0)