Giter Site home page Giter Site logo

fossildb's People

Contributors

fm3 avatar frcroth avatar jstriebel avatar normanrz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fossildb's Issues

Multi-Get and Multi-Put with list of keys

Sometimes users know a specific list of keys they want to get or put. Currently, they have to send many grpcs, one per key (except for the special case of prefix scan gets). To reduce overhead, it would be nice to add API endpoints that directly support this.

message OptionalLong {
    optional uint64 value = 1;
}

message GetMultipleKeysByListRequest {
    required string collection = 1;
    repeated string keys = 2;
    repeated OptionalLong versions = 3;
}

// length of versions should either be equal to length of keys, in which case each individual version is considered optional, or 0 (empty list), in which case None is assumed for every key.

message GetMultipleKeysByListReply {
    required bool success = 1;
    repeated string errorMessage = 2;
    repeated bytes values = 4;
    repeated uint64 actualVersions = 5;
    repeated bool missingKeys = 6;
}

// if only some keys exist, values and actualVersions are be densified. missingValueIndices lists the keys for wich nothing has been found

(Note that the name GetMultipleKeys was unfortunately already taken by the prefix-scan-based request)

message PutMultipleKeysByListRequest {
    required string collection = 1;
    repeated string keys = 2;
    repeated OptionalLong versions = 3;
}

message PutMultipleKeysByListReply {
    required bool success = 1;
    optional string errorMessage = 2;
}

Any comments on the API draft? @normanrz @philippotto

Double-check that health check is not blocked by other connections

We saw autoheal trigger during large requests. This may have been due to the health check responding slowly while that other request was being handled. We should double-check that these are as independent as possible.
I assume that it is already fine, as errors should have been far more common otherwise, but Iโ€™d rather check again.

add Smoketest

Test the docker image with some basic settings (maybe with client?)
See #8

Add healthcheck to dockerfile

The server dockerfile doesn't have a healthcheck yet. Using the healthcheck from the client is not possible because it is in a different image. Possible options that I see:

  • Make a big docker image that has both client and server in one
  • Hack a health check with grpcurl

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.