GithubHelp home page GithubHelp logo

Implement Atomic for usize about client_rust HOT 2 OPEN

link2xt avatar link2xt commented on June 16, 2024
Implement Atomic for usize

from client_rust.

Comments (2)

mxinden avatar mxinden commented on June 16, 2024

without conveting it to u64

Note that gauge::Atomic is also not implemented for u64, but only i64. This is due to the OpenMetrics Protobuf definition requiring a value to be either i64 or f64, not u64:

https://github.com/OpenObservability/OpenMetrics/blob/1386544931307dff279688f332890c31b6c5de36/proto/openmetrics_data_model.proto#L105

In other words, say that you provide a u64::MAX to Gauge::set, what should prometheus-client do? It can't store it in an i64. It can't store it in an f64 without loss.

Does that make sense?

from client_rust.

link2xt avatar link2xt commented on June 16, 2024

In other words, say that you provide a u64::MAX to Gauge::set, what should prometheus-client do? It can't store it in an i64. It can't store it in an f64 without loss.

If it is encoded in text format, just write it out as text. There are no such restrictions in text format, any integer can be encoded there even if it does not fit 128 bits. If it is not supported by the receiver, it is the receiver problem.
If it is encoded in protobuf, also does not matter, could be not encoded or encoded as i64::MAX then.

Currently in the application I have to do this:

metrics.heartbeat_token_count.set(tokens.len() as i64);

Metrics are then exported as text. This as i64 should not be necessary for a gauge that tracks some structure size and is then encoded into text.

from client_rust.

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.