Git Product home page Git Product logo

Comments (6)

ChristophWersal avatar ChristophWersal commented on June 18, 2024 1

@klauspost We only interact with the "top" object - we do not use the version id at all.

I just used your example with "mc" in a bash loop. I ran it 100 times (not parallel) and it failed 4 out of 100 times. Maybe calling "mc" from bash is a bit slower than the version I used with Typescript/Deno or with php.

One information I forgot: the tests I ran with Deno ran against a load balancer (haproxy) that points with a "leastconn" config to any of the five nodes in the main MinIO cluster.

I just ran my Deno test gain - this time on the first node of the cluster itself and I directed the MinIO requests only to this first node. Then the failure rate increase to around 74%. It seems that the faster the requests are, the higher the failure rate.

from minio.

klauspost avatar klauspost commented on June 18, 2024 1

Inserting time.Sleep(time.Second) at the start of replicateDelete reproduces it reliably.

from minio.

ChristophWersal avatar ChristophWersal commented on June 18, 2024 1

We just updated both clusters to the new version "2024-05-07T06-41-25Z". We can confirm that we cannot reproduce the inconsistency anymore. Thanks a lot for the very quick fix.

from minio.

klauspost avatar klauspost commented on June 18, 2024

Thanks for the detailed report!

Ping @poornas @krisis - I will see if I can reproduce and see where the race is happening.

from minio.

klauspost avatar klauspost commented on June 18, 2024

@ChristophWersal One question. Are the deletes and headobject for a specific version or just for the "top" object - meaning requests for object without version id?

I am trying mc cp 0.txt myminio/testbucket&&mc rm myminio/testbucket/0.txt&&mc stat myminio/testbucket/0.txt on a replicated bucket. This creates a delete marker and doesn't delete the older versions and from casual testing it doesn't reproduce.

from minio.

klauspost avatar klauspost commented on June 18, 2024

Thanks. I am not going to speculate too much. That said my guess is there is a window in the replication process where the request is proxied to the replica and the replica serves the headobject before the replication has deleted the object.

from minio.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.