Giter Site home page Giter Site logo

cashapp / backfila Goto Github PK

View Code? Open in Web Editor NEW
30.0 30.0 49.0 4.27 MB

Service that manages backfill state, calling into other services to do batched work

Home Page: https://cashapp.github.io/backfila/

License: Apache License 2.0

Kotlin 89.66% Shell 0.43% TypeScript 8.12% HTML 0.10% Dockerfile 0.05% Java 1.52% JavaScript 0.11%

backfila's People

Contributors

adrw avatar chris-ryan-square avatar ctaslimsq avatar danlu-square avatar danny-zheng avatar dependabot[bot] avatar hellendou avatar jmuia avatar jrobotham-square avatar jvmakine avatar keeferrourke avatar ktabouguia-sq avatar lkerford avatar lyonlai avatar mhickman avatar mightyguava avatar mpawliszyn avatar sethuraman avatar shazraz avatar shellderp avatar siwonpark avatar staktrace avatar swankjesse avatar tgregory-block avatar tirsen avatar tso avatar wildeyedskies avatar zcross avatar zhxnlai avatar zpingcai avatar

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

backfila's Issues

Setting custom parameters to null vs empty is confusing

If a value is ever touched it will use empty string rather than null as the value. There is no way to unset it afaik either.

Not quite sure what we should do here. We could have a null checkbox that starts out checked. But that seems like overkill.

Another option is to treat empty as null but this isn't great either. Maybe someone else has a better idea.

UI improvements

  • show yellow progress bar when backing off
  • to service page, add "my backfills" section that shows your last 5 created backfills
    -show actual instantaneous # of active threads - can just read the VariableBuffer size
    -show runbatch latency, suggest smaller batch size if above 15s

Reflection for Java Parameter record classes is broken

class kotlin.reflect.jvm.internal.calls.CallerImpl$FieldGetter cannot access a member of class com.squareup.fidelius.server.backfill.backfila.dynamo.Parameters with modifiers "private final" 

To support record classes, we need to change the reflection strategy to use RecordComponents if the javaClass isRecord().

Better load sharing of backfill threads

Currently a backfills with a long wait between batches will hold onto processing power and reduce CPU so the autoscaler won't scale up.

Probably need to either come up with a way for the autoscaler to look at threads too or a way to process more evenly.

Change Instance(s) to cursor(s)

I'm finding several people are getting confused on what an instance is. It is a term that is already pretty well overloaded.

I think a better name might be cursor.

Timing everywhere

Should add scan and batch run times to the UI and add times to various logs client and backfila side.

Add old backfill nuisance messenger

When an old backfill has been sitting around for a configured period. If it isn't in an allowlist then increasingly bother the creators to remove it.

Backfila times out and retries batches after 1 minute

Conversation here: https://square.slack.com/archives/CET1PJ8NP/p1600206743294600?thread_ts=1600192471.251500&cid=CET1PJ8NP

Backfila is unexpectedly retrying immediately on connection failure rather than respecting the backoff schedule. We are also currently seeing a repeatable connection failure after 1 minute

okhttp3.internal.http2.StreamResetException: stream was reset: CANCEL

While backfill logic is largely idempotent, for large batches, a parallel batch on the same ID range can adversely performance since there'll be a nice bunch of extra lock waits.

We need to dig into what in Backfila's stack that's doing the retry on connection reset. Separately, why the reset is happening at all, though that's probably outside of backfila.

Ability to add notes to backfill runs

It'd be nice to be able to drop a note on a job to the effect of "Next time we run this cut the batch size by 50% because we're blowing up Thing X"

Similarly could use it to centralize findings, plans for future runs, sick recipes, whatever

Could custom parameters be mutable?

Requiring custom parameters to be immutable means creating a lot of extra backfills in some cases. Would be great if they were mutable like the batch size, scan size, etc.

Automatic Backpressure

When registering on service startup also register ways to detect load so backfila can automatically adjust backfill speed based on this data.

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.