Comments (4)
Sounds good to me.
from vespa.
Seems like we should be able to support this without any wire format changes by sending down Gets with a field-set of [none]
and only returning the last modified timestamp. Just have to verify that the timestamp is always set if present, regardless of field-set.
from vespa.
A subset of this proposal is implemented as part of #11319. It does not implement the metadata-only additional phase, but does trigger fast path updates if documents are in sync across replicas after the existing read phase.
from vespa.
We've very recently identified a race condition regression that was introduced with #11319 that may trigger inconsistent document versions to be created in the following scenario:
- The update is sent with
create: true
- The replicas of the target bucket are already out of sync when the update arrives on the distributor
- A concurrent mutation to the target bucket modifies the size of its replica set (i.e. adds a replica) in the time between sending the Get operations and the subsequent Update operations
A log warning of the following form should be emitted if this particular edge case is triggered:
Update operation for 'id:foo::bar' in bucket Bucket(BucketSpace(0x0000000000000001), BucketId(0x4000000000f00baa)) updated documents with different timestamps. This should not happen and may indicate undetected replica divergence. Found ts=0 on node 5, ts=1576000000000001 on node 6
A grep for updated documents with different timestamps
in the vespa logs will show if this has happened. If it has, the safest option is to re-feed the given document ID, as it may have replica divergence that Vespa cannot detect and automatically fix.
This regression shall have been fixed with #11561, but note that this fix is not yet pushed as a public release. In the meantime, if this problem is observed, it's possible to disable the code path that triggers the bug by adding a config override to services.xml
for the affected content cluster:
<config name="vespa.config.content.core.stor-distributormanager">
<restart_with_fast_update_path_if_all_get_timestamps_are_consistent>false</restart_with_fast_update_path_if_all_get_timestamps_are_consistent>
</config>
This is a live change and does not require a process restart.
from vespa.
Related Issues (20)
- Inconsistent rendering of string versus array of string with regards to unicode escaping HOT 2
- Vespa 9: Consider updating bm25 hyperparameter defaults
- Segmented And behaviour with weakAnd for CJK languages HOT 1
- Implement array `slice` expression in the indexing language
- Vespa 9: Fail operation when selection expression evaluate to false
- Vespa 9: Fail updates against documents that doesn't exist
- The bm25 is 0 when the query and documents is chinese HOT 2
- Clarification on ColbertV2 support for end-to-end HOT 4
- Sorting giving incorrect results
- Exceptions while performing Vespa Visit operation HOT 1
- Support `in` filtering operation in `sameElement` HOT 2
- Performance of vespa HOT 3
- [Feature request] Prefix match support fuzziness HOT 4
- Add secondPhase/globalPhase ranking features
- Short form for indexed tensors representing binary data requires "values" HOT 1
- Error when onnx model is fp16 HOT 3
- Generate a sample Vespa JSON payload given a Vespa tensor type
- Vespa CLI option to delete all documents in an application
- What's the difference between Tensor and Vector within other vector databases? HOT 1
- Vespa Deploy fails for application package with model files HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vespa.