Skip to content

Debug assert getting triggered when treating a sparse vector as default vector #5209

@JojiiOfficial

Description

@JojiiOfficial

Current Behavior

Qdrant panics due to a debug_assert getting triggered when doing a scroll request, like below

Steps to Reproduce

PUT /collections/my_collection
{
    "sparse_vectors": {
        "": { }
    }
}

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

POST collections/my_collection/points/scroll // This one will panic
{
  "with_vector": true
}

Qdrant Output

2024-10-09T15:22:02.636438Z 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: <segment::data_types::vectors::VectorStructInternal as core::convert::From<segment::data_types::named_vectors::NamedVectors>>::from
             at ./lib/segment/src/data_types/vectors.rs:452:21
   8: <T as core::convert::Into<U>>::into
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/convert/mod.rs:759:9
   9: collection::collection_manager::segments_searcher::SegmentsSearcher::retrieve_blocking::{{closure}}
             at ./lib/collection/src/collection_manager/segments_searcher.rs:407:68
  10: collection::collection_manager::holders::segment_holder::SegmentHolder::read_points
             at ./lib/collection/src/collection_manager/holders/segment_holder.rs:661:29
  11: collection::collection_manager::segments_searcher::SegmentsSearcher::retrieve_blocking
             at ./lib/collection/src/collection_manager/segments_searcher.rs:384:9
  12: collection::collection_manager::segments_searcher::SegmentsSearcher::retrieve::{{closure}}::{{closure}}
             at ./lib/collection/src/collection_manager/segments_searcher.rs:362:21
  13: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/blocking/task.rs:42:21
  14: 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
  15: 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
  16: 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
  17: 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
  18: <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
  19: std::panicking::try::do_call
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:559:40
  20: __rust_try
  21: std::panicking::try
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:523:19
  22: std::panic::catch_unwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panic.rs:149:14
  23: 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
  24: 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
  25: 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
  26: 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
  27: 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
  28: tokio::runtime::task::UnownedTask<S>::run
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/task/mod.rs:473:9
  29: tokio::runtime::blocking::pool::Task::run
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/blocking/pool.rs:160:9
  30: tokio::runtime::blocking::pool::Inner::run
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/blocking/pool.rs:518:17
  31: tokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}}
             at /home/jojii/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/blocking/pool.rs:476:13
  32: std::sys_common::backtrace::__rust_begin_short_backtrace
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:155:18
  33: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/mod.rs:542:17
  34: <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
  35: std::panicking::try::do_call
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:559:40
  36: __rust_try
  37: std::panicking::try
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:523:19
  38: std::panic::catch_unwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panic.rs:149:14
  39: std::thread::Builder::spawn_unchecked_::{{closure}}
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/mod.rs:541:30
  40: core::ops::function::FnOnce::call_once{{vtable.shim}}
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:250:5
  41: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/boxed.rs:2063:9
  42: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/boxed.rs:2063:9
  43: std::sys::pal::unix::thread::Thread::new::thread_start
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys/pal/unix/thread.rs:108:17
  44: <unknown>
  45: <unknown>
    
2024-10-09T15:22:02.636543Z ERROR qdrant::startup: Panic occurred in file lib/segment/src/data_types/vectors.rs at line 452: Sparse vector cannot be default

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions