Giter Club home page Giter Club logo

tracingplane-java's Issues

Configurable Overflow Per-Bag

A bag could predefine the point at which overflow is acceptable, so that the bag itself can overflow without causing all subsequent bags to overflow

To achieve this, baggage buffers would add a way of annotating the acceptable size limit

Then in the baggage protocol, we would need a per-bag overflow marker. I think the best way of doing this would be to add an indexed child with no index specified (which would therefore be lexicographically less than the bag's other children)

One-of fields

One-of fields are useful, especially for use cases like supporting 64/128 bit IDs

Implement structs

When you want to merge multiple fields as a single entity, want to use structs.

Structs also impose lower overhead.

Implement enums

Enum of values that can just map to integers

Can then be used for flag sets

End-to-end Tests

After migrating Hadoop instrumentation and brownsys/tracing, do some end-to-end tests to measure overheads and check correctness.

Accessor methods

In the current implementation, users manually manipulate object fields, because that was quicker to implement.

Ideally, it should be more protobuf-style, with getters, setters, and existence checkers.

This will also make it easier to provide things such as optionals and one-ofs

Volatile fields

Volatile fields are fields that we only want one side of a branch to ever see.

When we branch a context, only one side of the branch will get the field; the other side will get null.

Volatile fields enable the implementation of state-based CRDTs based on vector clocks that have random component IDs; you declare a component id field that is volatile, and a map<id, ...> for the values.

Volatile fields are always transient, because we can't guarantee an intermediary component will respect the volatile-ness

Baggage Buffers - Pending Features

The following features are yet to be implemented in Baggage Buffers:

  • Inline fields
  • Max and Min
  • Add/Subtract Counter
  • Take comments in .bb file and put them as class/field comments in generated code.

Tracingplane Spec

Need a spec so that other people know what to implement if they wanted to integrate tracingplane into other languages.

Documentation and Javadoc TODOs

README markdowns in root and project subdirs:

  • Readmes for root project and all subprojects. Figure out appropriate way of presenting the information.
  • Tracingplane organization documentation
  • Directory of resources (wiki pages, javadocs, package docs)

Javadocs

  • Package level documentation
  • Docs on all public classes
  • Fold some of the package doc README info into javadocs too

Wiki pages

  • One of several pages outlining researchy parts of tracing plane, mostly pulled from paper
  • High level overview of how to use tracingplane
  • Tutorial: Downloading / cloning / building / installing
  • Tutorial: set up a maven project or add jar to classpath
  • Tutorial: instrumenting a system (threads, runnables, callables); instrumenting a system (custom queues); instrumenting a system (network / io); advanced: using aspectj
  • FAQ page: what is the license? do you have systems instrumented already that i can plug in to? is it compatible with scala?

Other Project TODOs:

  • Make download links for distribution JARs with dependencies
  • Make license explicit somewhere
  • For distribution JARs, enumerate all dependencies and their licenses
  • Split out BDL compiler to separate project
  • Fix scala versions

Transient fields

Bags should support transient fields. Transient fields are omitted during serialization; that is, they only live within a single process.

Transient fields should behave like other fields -- eg they should be bags, and support merge/join

Since transient fields are not serialized, transient fields do not need a field number. They could be declared like:

int64 myregularid = 0;
int64 mytransientid = transient;

That's a little ugly but i think it'll do for now

Application - XTrace Lite

As an extension to tutorials, write an xtrace lite application that will aid transit layer instrumentation.

Implement true/false flags

Implement true-wins and false-wins flags.

With inline data atoms, this can be a zero-length data atom whose presence indicates the value.

Split out repos

Split out compiler as a separate repo from the java library

Baggage Protocol bag options

Bag options could be specified as a separate child bag rather than in the header. This would be better for supporting changes to the options (eg, if you want to specify a lower bag threshold)

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.