@@ -6,15 +6,9 @@ use tonic::Status;
66
77use crate :: auth:: TokenInterceptor ;
88use crate :: qdrant:: collections_client:: CollectionsClient ;
9- use crate :: qdrant:: {
10- alias_operations, AliasOperations , ChangeAliases , CollectionClusterInfoRequest ,
11- CollectionClusterInfoResponse , CollectionExistsRequest , CollectionOperationResponse ,
12- CreateAlias , CreateCollection , DeleteAlias , DeleteCollection , GetCollectionInfoRequest ,
13- GetCollectionInfoResponse , ListAliasesRequest , ListAliasesResponse ,
14- ListCollectionAliasesRequest , ListCollectionsRequest , ListCollectionsResponse , RenameAlias ,
15- UpdateCollection , UpdateCollectionClusterSetupRequest , UpdateCollectionClusterSetupResponse ,
16- } ;
9+ use crate :: qdrant:: { alias_operations, AliasOperations , ChangeAliases , CollectionClusterInfoRequest , CollectionClusterInfoResponse , CollectionExistsRequest , CollectionOperationResponse , CreateAlias , CreateCollection , DeleteAlias , DeleteCollection , GetCollectionInfoRequest , GetCollectionInfoResponse , ListAliasesRequest , ListAliasesResponse , ListCollectionAliasesRequest , ListCollectionsRequest , ListCollectionsResponse , RenameAlias , UpdateCollection , UpdateCollectionClusterSetupRequest , UpdateCollectionClusterSetupResponse } ;
1710use crate :: qdrant_client:: { Qdrant , QdrantResult } ;
11+ use crate :: qdrant_client:: version_check:: is_compatible;
1812
1913/// # Collection operations
2014///
@@ -27,6 +21,26 @@ impl Qdrant {
2721 & self ,
2822 f : impl Fn ( CollectionsClient < InterceptedService < Channel , TokenInterceptor > > ) -> O ,
2923 ) -> QdrantResult < T > {
24+ if self . config . check_compatibility && self . is_compatible ( ) == None {
25+ let client_version = env ! ( "CARGO_PKG_VERSION" ) . to_string ( ) ;
26+ let server_version = match self . health_check ( ) . await {
27+ Ok ( info) => info. version ,
28+ Err ( _) => "Unknown" . to_string ( ) ,
29+ } ;
30+ if server_version == "Unknown" {
31+ println ! ( "Failed to obtain server version. \
32+ Unable to check client-server compatibility. \
33+ Set check_compatibility=false to skip version check.") ;
34+ } else {
35+ let is_compatible = is_compatible ( Some ( & client_version) , Some ( & server_version) ) ;
36+ self . set_is_compatible ( Some ( is_compatible) ) ;
37+ println ! ( "Client version {client_version} is not compatible with server version {server_version}. \
38+ Major versions should match and minor version difference must not exceed 1. \
39+ Set check_compatibility=false to skip version check.") ;
40+
41+ }
42+ }
43+
3044 let result = self
3145 . channel
3246 . with_channel (
0 commit comments