Giter Club home page Giter Club logo

Comments (5)

slimsag avatar slimsag commented on May 30, 2024

The root of this issue seems to be the annotation serialization model that we've chosen.

  • To marshal or unmarshal an event, it must be registered.
  • Registration must occur because there are various interfaces (TimespanEvent, TimestampedEvent, ImportantEvent) which direct information about the event type (e.g. for TimespanEvent it tells us which struct field exactly is the start and end times of the span).
  • Without registration we cannot know the timespan times, important fields, etc.

The stringent requirement on event registration means that custom event types don't render properly when running the standalone appdash command (as shown above).

We could formalize the annotation (read: struct field) name for both the starting and ending times of a timespan (or the timestamp for a timestamped event) but this would effectively render the TimespanEvent interface a bit redundant (and users of it would soon find their events not rendering in the standalone appdash app).

The least imposing option I can think of is to keep the redundant TimespanEvent interface for legacy code, and encourage the use of a new type Timespan struct{StartTime, EndTime time.Time} structure (which would always have identical StartTime and EndTime annotation names, so the standalone app could always unmarshal at least a Timespan event for rendering).

from appdash.

joeshaw avatar joeshaw commented on May 30, 2024

The idea I had, without any idea of how possible or difficult it would be to implement: Tie the registration of the event to a collector, and send a "schema serialization" to the collector to inform it how a particularly named event is structured.

In our app we currently call appdash.RegisterEvent() in init(), but there's no reason why we couldn't call it after we create a collector.

from appdash.

slimsag avatar slimsag commented on May 30, 2024

@joeshaw Right, I think your solution would work. It does require a change to the core annotation serialization model, however.

I'm not opposed to changing the annotation serialization model, and it's required in order to fix this, but it does need some good thought on what the best approach is (how does Zipkin/Dapper handle it? what other approaches are there? etc), I just want to ensure the solution is not rushed 😄

For now I think the best approach is to require modification of the appdash executable's source code, which should be as simple as:

import "my/event/declarations"

(At least until I'm certain of a proper solution to this issue).

from appdash.

joeshaw avatar joeshaw commented on May 30, 2024

@slimsag yep, not trying to rush you on this. We've worked around this in the meantime exactly as you suggest. Thanks!

from appdash.

slimsag avatar slimsag commented on May 30, 2024

The proper solution here is probably the opentracing API which does not use custom event types but rather standard methods for adding tags/etc to spans.

from appdash.

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.