Giter Club home page Giter Club logo

Comments (11)

fjl avatar fjl commented on May 18, 2024 15
badger.NewKV("non-existent-dir/foo")

crashes my program. That's not acceptable. Opening a non-existent file is not an internal error, it's a user error which my program will want to relay to the user in an arbitrary way.

from badger.

jbowens avatar jbowens commented on May 18, 2024 3

Besides the pragmatic concerns, it violates go conventions to panic across a package boundary.

from badger.

manishrjain avatar manishrjain commented on May 18, 2024 2

Yup. Agree with all the concerns here. We have started to surface errors via the API calls (see 31c0bd2). We'll do a sweep over the next couple of weeks over the entire code base. And try to remove all calls to y.Checkf, if possible.

The biggest hurdle would be to deal with background tasks, and we'll need to build mechanisms to deal graciously with them. I'll keep you updated on this thread.

from badger.

szymonm avatar szymonm commented on May 18, 2024 1

We are adding basic checks for the directory to ease usage for the newcomers, see #29.
Overall, we decided that it's library user's responsibility to provide a writable directory for badger for the whole duration of using KV.

There is also a separate thread for disk errors: #28

from badger.

whyrusleeping avatar whyrusleeping commented on May 18, 2024 1

Any operation that could fail, under any conditions, should return an error.

we decided that it's library user's responsibility to provide a writable directory

Sure, you can hope the user provides a writeable directory, but the fact remains that if they give you a directory, and you can't write to it, you need to tell them they failed on their end of the contract.

from badger.

fjl avatar fjl commented on May 18, 2024

I see that there is a way to get errors when using Entry. Would still be nice to have a version of NewKV that doesn't exit the program.

from badger.

manishrjain avatar manishrjain commented on May 18, 2024

log.Fatals only happen when Badger itself causes issues. External input won't cause it. In fact, these Fatals are really great at catching bugs and making the library robust.

We send errors back when justified, for e.g. when doing CAS operations.

from badger.

szymonm avatar szymonm commented on May 18, 2024

I see your point, you are right. We can do much better error handling.

from badger.

awfm9 avatar awfm9 commented on May 18, 2024

Good to hear, looking forward to using the library.

from badger.

manishrjain avatar manishrjain commented on May 18, 2024

See changes: 55c350d and 7610c2f. These surface error handling all the way from disk to public APIs. They should address the concerns raised in this issue.

Closing the issue. Feel free to reopen if some API is still unhandled.

from badger.

awfm9 avatar awfm9 commented on May 18, 2024

Excellent. I will probably switch our usage of BoltDB to Badger, since we are in the early stages of our project as well.

from badger.

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.