qdrant / qdrant

Qdrant - High-performance, massive-scale Vector Database for the next generation of AI. Also available in the cloud https://cloud.qdrant.io/
https://qdrant.tech
Apache License 2.0
20.34k stars 1.39k forks source link

Panic in Query API on bad request #5208

Closed JojiiOfficial closed 2 weeks ago

JojiiOfficial commented 2 weeks ago

Doing a Query API request using a point ID, but a vector name, for which this point has no vector for, Qdrant panics.

Steps to Reproduce

Run the following commands in console on a fresh install of latest Qdrant version


PUT collections/my_collection
{
  "vectors": {
    "size": 4,
    "distance": "Cosine"
  },
  "sparse_vectors": {
        "text": { }
    }
}

PUT /collections/my_collection/points?wait=true
{
    "points": [
        {
            "id": 1,
            "vector": {
                "text": {
                    "indices": [1, 3, 5, 7],
                    "values": [0.1, 0.2, 0.3, 0.4]
                }
            }
        }
    ]
}

POST collections/my_collection/points/query  // <- Will cause the panic
{
  "query": 1
}

Qdrant Output

2024-10-09T15:02:32.891698Z ERROR qdrant::startup: Panic backtrace: 
   0: qdrant::startup::setup_panic_hook::{{closure}}
             at ./src/startup.rs:19:25
   1: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/boxed.rs:2077:9
   2: std::panicking::rust_panic_with_hook
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:799:13
   3: std::panicking::begin_panic_handler::{{closure}}
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:656:13
   4: std::sys_common::backtrace::__rust_end_short_backtrace
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:171:18
   5: rust_begin_unwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:652:5
   6: core::panicking::panic_fmt
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:72:14
   7: core::panicking::panic
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:146:5
   8: core::option::unwrap_failed
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/option.rs:1985:5
   9: core::option::Option<T>::unwrap
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/option.rs:935:21
  10: collection::operations::universal_query::collection_query::VectorQuery<collection::operations::universal_query::collection_query::VectorInput>::ids_into_vectors
             at ./lib/collection/src/operations/universal_query/collection_query.rs:169:30
  11: collection::operations::universal_query::collection_query::Query::try_into_scoring_query
             at ./lib/collection/src/operations/universal_query/collection_query.rs:104:34
  12: collection::operations::universal_query::collection_query::CollectionQueryRequest::try_into_shard_request::{{closure}}
             at ./lib/collection/src/operations/universal_query/collection_query.rs:492:17
  13: core::option::Option<T>::map
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/option.rs:1075:29
  14: collection::operations::universal_query::collection_query::CollectionQueryRequest::try_into_shard_request
             at ./lib/collection/src/operations/universal_query/collection_query.rs:489:21
  15: collection::collection::query::<impl collection::collection::Collection>::query_batch::{{closure}}::{{closure}}
             at ./lib/collection/src/collection/query.rs:230:17
  16: collection::common::batching::batch_requests
             at ./lib/collection/src/common/batching.rs:73:9
  17: collection::collection::query::<impl collection::collection::Collection>::query_batch::{{closure}}
             at ./lib/collection/src/collection/query.rs:221:23
  18: storage::content_manager::toc::point_ops::<impl storage::content_manager::toc::TableOfContent>::query_batch::{{closure}}
             at ./lib/storage/src/content_manager/toc/point_ops.rs:330:14
  19: <qdrant::actix::api::query_api::query_points as actix_web::service::HttpServiceFactory>::register::query_points::{{closure}}::{{closure}}
             at ./src/actix/api/query_api.rs:63:14
  20: qdrant::actix::helpers::time::{{closure}}::{{closure}}
             at ./src/actix/helpers.rs:56:30
  21: qdrant::actix::helpers::time_impl::{{closure}}
             at ./src/actix/helpers.rs:98:18
  22: qdrant::actix::helpers::time::{{closure}}
             at ./src/actix/helpers.rs:56:49
  23: <qdrant::actix::api::query_api::query_points as actix_web::service::HttpServiceFactory>::register::query_points::{{closure}}
             at ./src/actix/api/query_api.rs:74:6
  24: actix_web::handler::handler_service::{{closure}}::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-web-4.9.0/src/handler.rs:113:22
  25: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/future/future.rs:123:9
  26: <actix_web::resource::Resource<T> as actix_web::service::HttpServiceFactory>::register::{{closure}}::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-web-4.9.0/src/resource.rs:452:28
  27: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/future/future.rs:123:9
  28: <actix_web::middleware::compress::CompressResponse<S,B> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-web-4.9.0/src/middleware/compress.rs:177:22
  29: <actix_utils::future::either::Either<L,R> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-utils-3.0.1/src/future/either.rs:76:43
  30: <actix_web_extras::middleware::condition::ConditionMiddlewareFuture<E,D> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-web-extras-0.1.0/src/middleware/condition.rs:139:55
  31: <actix_cors::middleware::CorsMiddleware<S> as actix_service::Service<actix_web::service::ServiceRequest>>::call::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-cors-0.7.0/src/middleware.rs:239:27
  32: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/future/future.rs:123:9
  33: <actix_web::middleware::condition::ConditionMiddlewareFuture<E,D> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-web-4.9.0/src/middleware/condition.rs:123:54
  34: <actix_web::middleware::logger::LoggerResponse<S,B> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-web-4.9.0/src/middleware/logger.rs:361:32
  35: <qdrant::actix::actix_telemetry::ActixTelemetryService<S> as actix_service::Service<actix_web::service::ServiceRequest>>::call::{{closure}}
             at ./src/actix/actix_telemetry.rs:47:35
  36: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/future/future.rs:123:9
  37: <actix_service::map_err::MapErrFuture<A,Req,F,E> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-service-2.0.2/src/map_err.rs:99:9
  38: actix_http::h1::dispatcher::InnerDispatcher<T,S,B,X,U>::poll_response
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-http-3.7.0/src/h1/dispatcher.rs:466:27
  39: <actix_http::h1::dispatcher::Dispatcher<T,S,B,X,U> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-http-3.7.0/src/h1/dispatcher.rs:1128:43
  40: <actix_http::service::HttpServiceHandlerResponse<T,S,B,X,U> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-http-3.7.0/src/service.rs:1064:45
  41: <actix_service::and_then::AndThenServiceResponse<A,B,Req> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-service-2.0.2/src/and_then.rs:114:37
  42: <actix_server::service::StreamService<S,I> as actix_service::Service<(actix_server::worker::WorkerCounterGuard,actix_server::socket::MioStream)>>::call::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-server-2.1.1/src/service.rs:75:31
  43: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/future/future.rs:123:9
  44: tokio::runtime::task::core::Core<T,S>::poll::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/core.rs:331:17
  45: tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/loom/std/unsafe_cell.rs:16:9
  46: tokio::runtime::task::core::Core<T,S>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/core.rs:320:13
  47: tokio::runtime::task::harness::poll_future::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/harness.rs:500:19
  48: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panic/unwind_safe.rs:272:9
  49: std::panicking::try::do_call
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:559:40
  50: __rust_try
  51: std::panicking::try
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:523:19
  52: std::panic::catch_unwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panic.rs:149:14
  53: tokio::runtime::task::harness::poll_future
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/harness.rs:488:18
  54: tokio::runtime::task::harness::Harness<T,S>::poll_inner
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/harness.rs:209:27
  55: tokio::runtime::task::harness::Harness<T,S>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/harness.rs:154:15
  56: tokio::runtime::task::raw::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/raw.rs:271:5
  57: tokio::runtime::task::raw::RawTask::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/raw.rs:201:18
  58: tokio::runtime::task::LocalNotified<S>::run
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/mod.rs:436:9
  59: tokio::task::local::LocalSet::tick::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/task/local.rs:693:63
  60: tokio::runtime::coop::with_budget
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/coop.rs:107:5
  61: tokio::runtime::coop::budget
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/coop.rs:73:5
  62: tokio::task::local::LocalSet::tick
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/task/local.rs:693:31
  63: <tokio::task::local::RunUntil<T> as core::future::future::Future>::poll::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/task/local.rs:999:16
  64: tokio::task::local::LocalSet::with::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/task/local.rs:747:13
  65: std::thread::local::LocalKey<T>::try_with
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/local.rs:283:12
  66: std::thread::local::LocalKey<T>::with
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/local.rs:260:9
  67: tokio::task::local::LocalSet::with
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/task/local.rs:745:9
  68: <tokio::task::local::RunUntil<T> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/task/local.rs:985:9
  69: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/task/local.rs:639:19
  70: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/future/future.rs:123:9
  71: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:696:57
  72: tokio::runtime::coop::with_budget
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/coop.rs:107:5
  73: tokio::runtime::coop::budget
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/coop.rs:73:5
  74: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:696:25
  75: tokio::runtime::scheduler::current_thread::Context::enter
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:423:19
  76: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:695:36
  77: tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:774:68
  78: tokio::runtime::context::scoped::Scoped<T>::set
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/context/scoped.rs:40:9
  79: tokio::runtime::context::set_scheduler::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/context.rs:180:26
  80: std::thread::local::LocalKey<T>::try_with
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/local.rs:283:12
  81: std::thread::local::LocalKey<T>::with
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/local.rs:260:9
  82: tokio::runtime::context::set_scheduler
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/context.rs:180:9
  83: tokio::runtime::scheduler::current_thread::CoreGuard::enter
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:774:27
  84: tokio::runtime::scheduler::current_thread::CoreGuard::block_on
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:683:19
  85: tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:191:28
  86: tokio::runtime::context::runtime::enter_runtime
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/context/runtime.rs:65:16
  87: tokio::runtime::scheduler::current_thread::CurrentThread::block_on
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/current_thread/mod.rs:179:9
  88: tokio::runtime::runtime::Runtime::block_on_inner
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/runtime.rs:361:47
  89: tokio::runtime::runtime::Runtime::block_on
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/runtime.rs:335:13
  90: tokio::task::local::LocalSet::block_on
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/task/local.rs:596:9
  91: actix_rt::runtime::Runtime::block_on
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-rt-2.7.0/src/runtime.rs:80:9
  92: actix_rt::arbiter::Arbiter::with_tokio_rt::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/actix-rt-2.7.0/src/arbiter.rs:144:21
  93: std::sys_common::backtrace::__rust_begin_short_backtrace
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:155:18
  94: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/mod.rs:542:17
  95: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panic/unwind_safe.rs:272:9
  96: std::panicking::try::do_call
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:559:40
  97: __rust_try
  98: std::panicking::try
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:523:19
  99: std::panic::catch_unwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panic.rs:149:14
 100: std::thread::Builder::spawn_unchecked_::{{closure}}
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/mod.rs:541:30
 101: core::ops::function::FnOnce::call_once{{vtable.shim}}
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:250:5
 102: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/boxed.rs:2063:9
 103: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/boxed.rs:2063:9
 104: std::sys::pal::unix::thread::Thread::new::thread_start
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys/pal/unix/thread.rs:108:17
 105: <unknown>
 106: <unknown>
2024-10-09T15:02:32.891924Z ERROR qdrant::startup: Panic occurred in file lib/collection/src/operations/universal_query/collection_query.rs at line 171: called `Option::unwrap()` on a `None` value

Expected Behavior

An error message that there is no default vector available

timvisee commented 2 weeks ago

Fixed in https://github.com/qdrant/qdrant/pull/5211