Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug: Python runtime crashes after calling Index.restore() #195

Closed
2 tasks done
alexbarev opened this issue Aug 9, 2023 · 1 comment
Closed
2 tasks done

Bug: Python runtime crashes after calling Index.restore() #195

alexbarev opened this issue Aug 9, 2023 · 1 comment
Assignees
Labels
bug Something isn't working invalid This doesn't seem right released

Comments

@alexbarev
Copy link
Contributor

Describe the bug

Loading empty index causes python runtime terminated.

Steps to reproduce

from pathlib import Path
from usearch.index import Index
import numpy as np

# ensure there is no file prior to test
index_path = Path('index.usearch')
if index_path.exists():
    index_path.unlink()

index = Index(ndim=3)
index.save(index_path)
index.reset()
assert index_path.exists()

# Here python interpreter just exits
# terminate called after throwing an instance of 'std::runtime_error'
# what():  Resource temporarily unavailable
try:
    index = Index.restore(str(index_path)) 
except Exception:
    pass

Expected behavior

Python runtime exits without errors. Or an exception is thrown that Python code could catch.

USearch version

v1.1.1

Operating System

Ubuntu 22.04.2

Hardware architecture

x86

Which interface are you using?

Python bindings

Contact Details

No response

Is there an existing issue for this?

  • I have searched the existing issues

Code of Conduct

  • I agree to follow this project's Code of Conduct
@alexbarev alexbarev added bug Something isn't working invalid This doesn't seem right labels Aug 9, 2023
@alexbarev alexbarev changed the title Bug: runtime crashes after Index.restore() callin Bug: Python runtime crashes after calling Index.restore() Aug 9, 2023
@alexbarev alexbarev assigned alexbarev and ashvardanian and unassigned alexbarev Aug 9, 2023
ashvardanian added a commit that referenced this issue Aug 10, 2023
ashvardanian pushed a commit that referenced this issue Aug 24, 2023
# [1.2.0](v1.1.1...v1.2.0) (2023-08-24)

### Add

* `Clustering` class for recursive exploration ([4570ee3](4570ee3))
* `distance_between` and `cluster` APIs ([492b181](492b181))
* `growing_hash_set_gt` for faster construction ([6415283](6415283))
* `pairwise_distance` and clustering fixes ([f6f12fe](f6f12fe))
* `unfair_shared_mutex_t` for C++ 11 compat. ([40e803c](40e803c))
* Clustering functionality ([ddf1afa](ddf1afa))
* Clustering limited to number of clusters ([5e50f6b](5e50f6b))
* Error handling for remove and rename ([619d9f1](619d9f1))
* impl. of rename and remove funcs ([ae82b65](ae82b65))
* Rename, remove, count and check in batches ([1227ff0](1227ff0))
* Support multiple vectors per key ([7e5f6a7](7e5f6a7))

### Docs

* Add Arxiv dataset for benchmarks ([d17a8e0](d17a8e0))
* Add links to packages ([e463a94](e463a94))
* Change sections order ([623e279](623e279))
* Fix JavaScript documentation ([b935fe3](b935fe3))
* Mention integratiosn ([1b3ae10](1b3ae10))
* section on "Clustering" ([c99d528](c99d528))

### Fix

* `bitset_t` type alias for Pyhton ([eb3f91d](eb3f91d))
* `match_t` constructors and type names ([7ec4699](7ec4699))
* `nd.array(index.keys)` type ([9fe5735](9fe5735))
* `shared_lock_gt` for C++11 ([f988fc3](f988fc3))
* `stream_length` to include levels length ([7fbf72f](7fbf72f))
* Argument name in `self_recall` ([21f144e](21f144e))
* Cast keys on `Index.get` ([c960180](c960180))
* Close file descriptor before removing ([361f0fa](361f0fa))
* Clustering tests ([b7a59ad](b7a59ad))
* Concurrent interruptions & error handling ([bc26b4e](bc26b4e))
* Concurrent interruptions & error handling ([9163d79](9163d79))
* Counting nodes per level ([531d2bc](531d2bc))
* Default initialization ([7741f56](7741f56))
* FAISS banchmarks compatibility ([da771e6](da771e6))
* Loading empty index ([e686a3d](e686a3d)), closes [#195](#195)
* MetricKind name collision ([7723ce5](7723ce5))
* Missing `#endif` ([1e86a31](1e86a31))
* Multi-vector keys ([da9f3a9](da9f3a9))
* Normalizing path type in Python ([a0c705b](a0c705b))
* Persisting the flag for multi-indexes ([9fd2767](9fd2767))
* Pretty-printing metadata ([a823d06](a823d06))
* Printing top layer of graph ([a01fc6d](a01fc6d))
* Revert DLL exports for MSVC/MinGW interop ([a142c9d](a142c9d))
* Spinning through empty set ([052b837](052b837))
* Support platforms without 16-byte atomic store ([f3d56fa](f3d56fa))
* Type-casting in Python retrieval ([e6ed1a7](e6ed1a7))

### Improve

* `clustering` API ([d678810](d678810))
* Index finalizer method ([5ace138](5ace138))
* Lower asymptotics for clustering ([593f688](593f688))
* Multi-threading and error handling ([4b17ded](4b17ded))
* Parallel cluster refinement ([a415971](a415971))
* Pass specific keys to `self_recall` ([4ce7f5b](4ce7f5b))
* Reporting `connectivity` in `repr` ([58b043c](58b043c))

### Make

* Avoid OpenMP flags when not needed ([962990e](962990e))
* Drop Pandas dependency ([e89aa8e](e89aa8e))
* Freeze Sphinx version ([c428f54](c428f54))
* GoLang tests ([4463f0d](4463f0d))
* Override Clang flags ([be4c87d](be4c87d))
* Remove `robin-map` dependency ([89a0b75](89a0b75))
* Test python macOS builds without docker setup ([1190f83](1190f83))
* Update version in `README.md` ([27b214f](27b214f))

### Refactor

* `multi` support in C 99 bindings ([9ede10f](9ede10f))
* Args to top-level interface ([d9bc92b](d9bc92b))
* Avoid typename collision on Windows ([f18bd56](f18bd56))
* Bindings settgins and docs ([886e29f](886e29f))
* Black formatting ([4d2fccd](4d2fccd))
* Consistent `multi` in bindings ([9b724da](9b724da))
* Enable temporary disabled jobs ([f72e418](f72e418))
* Placeholder for #206 ([d1fd90a](d1fd90a)), closes [#206](#206)
* Prepare to move GoLang builds ([a1b9b38](a1b9b38))
* Split Index tests for key collisions ([f2f6b46](f2f6b46))
* Updating eval scripts ([3355e64](3355e64))
* use result error as error message ([552e1b7](552e1b7))
@ashvardanian
Copy link
Contributor

🎉 This issue has been resolved in version 1.2.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working invalid This doesn't seem right released
Projects
None yet
Development

No branches or pull requests

2 participants