Giter Club home page Giter Club logo

cherami-client-go's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cherami-client-go's Issues

Error installing as library via go get

I'm trying to use the client as a library within my current code.

I've tried installing using go get and get the following errors:

โ‡’  go get github.com/uber/cherami-client-go

# github.com/uber/tchannel-go/thrift/gen-go/meta
../github.com/uber/tchannel-go/thrift/gen-go/meta/meta.go:289: cannot use metaProcessorHealth literal (type *metaProcessorHealth) as type thrift.TProcessorFunction in assignment:
	*metaProcessorHealth does not implement thrift.TProcessorFunction (wrong type for Process method)
		have Process(int32, thrift.TProtocol, thrift.TProtocol) (bool, thrift.TException)
		want Process(context.Context, int32, thrift.TProtocol, thrift.TProtocol) (bool, thrift.TException)
../github.com/uber/tchannel-go/thrift/gen-go/meta/meta.go:290: cannot use metaProcessorThriftIDL literal (type *metaProcessorThriftIDL) as type thrift.TProcessorFunction in assignment:
	*metaProcessorThriftIDL does not implement thrift.TProcessorFunction (wrong type for Process method)
		have Process(int32, thrift.TProtocol, thrift.TProtocol) (bool, thrift.TException)
		want Process(context.Context, int32, thrift.TProtocol, thrift.TProtocol) (bool, thrift.TException)
../github.com/uber/tchannel-go/thrift/gen-go/meta/meta.go:291: cannot use metaProcessorVersionInfo literal (type *metaProcessorVersionInfo) as type thrift.TProcessorFunction in assignment:
	*metaProcessorVersionInfo does not implement thrift.TProcessorFunction (wrong type for Process method)
		have Process(int32, thrift.TProtocol, thrift.TProtocol) (bool, thrift.TException)
		want Process(context.Context, int32, thrift.TProtocol, thrift.TProtocol) (bool, thrift.TException)
../github.com/uber/tchannel-go/thrift/gen-go/meta/meta.go:301: not enough arguments in call to processor.Process
	have (int32, thrift.TProtocol, thrift.TProtocol)
	want (context.Context, int32, thrift.TProtocol, thrift.TProtocol)

Any help at pointing at what I am doing wrong would be most appreciated

Zero-value of ClientOptions is invalid

For an API like NewClient which accepts ClientOptions, the expectation is that you pass in a struct customizing only the values you want to change from the defaults and the rest can be left as-is to use the default values for them.

That is, I should be able to do any of the following:

NewClient(..., &ClientOptions{})  // Equivalent to NewClient(..., nil)
NewClient(..., &ClientOptions{DeploymentStr: "dev"})
NewClient(..., &ClientOptions{MetricsReporter: reporter, Logger: myLogger})

For the examples above, ClientOptions.Timeout will be zero which is a problem because,

Please apply the defaults for ClientOptions for the zero-value case. Also, NewClient should not panic because of invalid options especially since it already has an error in its return values.

#24 introduces a breaking change into the cherami library (for yarpc)

When I ran glide up in yarpc I started getting test/build errors because of new functions on the cherami consumer interface:

transport/x/cherami/mocks/mock_cherami_consumer.go:87: cannot use (*Consumer)(nil) (type *Consumer) as type "go.uber.org/yarpc/vendor/github.com/uber/cherami-client-go/client/cherami".Consumer in assignment:
        *Consumer does not implement "go.uber.org/yarpc/vendor/github.com/uber/cherami-client-go/client/cherami".Consumer (missing Pause method)
transport/x/cherami/mocks/mock_cherami_publisher.go:87: cannot use (*Publisher)(nil) (type *Publisher) as type "go.uber.org/yarpc/vendor/github.com/uber/cherami-client-go/client/cherami".Publisher in assignment:
        *Publisher does not implement "go.uber.org/yarpc/vendor/github.com/uber/cherami-client-go/client/cherami".Publisher (missing Pause method)

#24 introduced two new functions to the consumer interface. There hasn't been a release with these new changes (yarpc is still pointing to the master branch), but once a release goes out with this, all consumer implementations outside the cherami-client-go library will likely have build errors.

It's possible that yarpc is the only library depending on this interface, in which case this is probably ok, unfortunately if any other services/libraries depend on this interface people might start getting some weird build errors. If needed we can follow the semvar (http://semver.org/) rules to customize the versions we release.

cc: @breerly @abhinav

Read limited to about 250/s

We have a cherami cluster with 3 output nodes.

We can write to cherami 1000's a second, however the go client seems to only read between 2-300 messages a second off the queue. We can scale horizontally to hit this, but not sure what the bottle neck is.

Profiling them they rarely use more than 1/4 of a core at load, so they aren't bound by CPU or memory on the clients.

Any ideas where the bottle neck could be? Of our 3 output hosts, two seem to use a lot of ram and one stays fairly idle...

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.