Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

config: Add strict mode that forbids unknown params #45

Closed
wants to merge 489 commits into from
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Dec 13, 2019

  1. github.com/grailbio: format Python code with black

    Summary: Changes were generated by the formatter, except to fix a syntax error.
    
    Test Plan: Existing tests.
    
    Reviewers: jcharumilind, pgopal
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T29275
    
    Differential Revision: https://phabricator.grailbio.com/D39547
    
    fbshipit-source-id: 949fd43
    josh-newman authored and Prasad Gopal committed Dec 13, 2019
    Configuration menu
    Copy the full SHA
    a3c2d87 View commit details
    Browse the repository at this point in the history
  2. base: expose ETag outside s3file package

    Summary:
    Exposes the ETag, which is a piece of data returned by S3 that contains
    a hash of information specific to a given version of a resource, outside
    of the s3file package.
    
    Test Plan: Tested in stacked diff D39535.
    
    Reviewers: rhuang, smahadevan
    
    Reviewed By: smahadevan
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T29873
    
    Differential Revision: https://phabricator.grailbio.com/D39665
    
    fbshipit-source-id: 8078b9e
    Adam Rinehouse authored and Prasad Gopal committed Dec 13, 2019
    Configuration menu
    Copy the full SHA
    4ceeb5a View commit details
    Browse the repository at this point in the history
  3. grail-access: configurable do not refresh duration

    Summary:
    We currently have a hard-coded duration before expiration in which
    credentials are not refreshed. Making this configurable via a flag
    helps some users who have `grail-access` in their .bashrc, etc.
    
    Test Plan: Manual testing.
    
    Reviewers: aeiser, afields
    
    Reviewed By: aeiser, afields
    
    Subscribers: smahadevan, afields
    
    Differential Revision: https://phabricator.grailbio.com/D39733
    
    fbshipit-source-id: 38ed4f3
    Siddhartha Bagaria authored and Prasad Gopal committed Dec 13, 2019
    Configuration menu
    Copy the full SHA
    c11b495 View commit details
    Browse the repository at this point in the history
  4. ticket-server: switch to simpler group.get api call to fetch cross ac…

    …count
    
    Summary:
    T7463 switched the ticket-server to use HasMember API call that does lookups for neseted inheritence.
    
    T15539 switched the ticket-server to use cross account lookups, so a user with a @grailbio.com email could be in a group from summitstudies.co.uk and still be validated as a member.
    
    T29527 noticed that "sometimes" due to a Google API delays - the existing cross account lookup is slow.
    
    This diff reverts the cross account lookup to use the older group.get(member) API call which should avoide the API issues, and is a simplification over the old code.
    
    Test Plan: Verify in SBX staging, and create a test cross group lookup.
    
    Reviewers: #shared_infrastructure, trooney
    
    Reviewed By: trooney
    
    Subscribers: sbagaria, joshnewman, rhuang, smahadevan, mfoster
    
    Maniphest Tasks: T29527
    
    Differential Revision: https://phabricator.grailbio.com/D39771
    
    fbshipit-source-id: 335e2a8
    Alex Eiser authored and Prasad Gopal committed Dec 13, 2019
    Configuration menu
    Copy the full SHA
    ce8d957 View commit details
    Browse the repository at this point in the history
  5. conta-sample: use blacklist for filtering snps

    Summary:
    blacklist must be a tsv containing columns: chr, pos, blacklist
    
    When using the --blacklist parameter, drop snps if their blacklist
    column contains TRUE.
    
    Ref T24754
    
    Test Plan: Added unit test
    
    Reviewers: edamato, psingh
    
    Reviewed By: psingh
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T24698, T24754
    
    Differential Revision: https://phabricator.grailbio.com/D40257
    
    fbshipit-source-id: 24b7f69
    Alexander Yip authored and Prasad Gopal committed Dec 13, 2019
    Configuration menu
    Copy the full SHA
    22e7d48 View commit details
    Browse the repository at this point in the history
  6. update go.mod to upgrade AWS SDK to v1.23.22

    Summary:
    Upgrade AWS Go SDK version to v1.23.22 (primarily
    to make OSS and Grail Reflow versions compatible with each other)
    
    - Fix tests and code which otherwise breaks in the new version, specifically in the following files:
    `go/src/github.com/grailbio/base/file/s3file/s3file.go`
    `go/src/github.com/grailbio/reflow/blob/s3blob/s3blob.go`
    `go/src/github.com/grailbio/reflow/blob/s3blob/s3blob_test.go`
    - Regenerated mocks under SCRMS
    
    Test Plan: Unit tests
    
    Reviewers: pgopal, O3 third-party, O15 scrms, psteed, bbentson
    
    Reviewed By: pgopal, O3 third-party, O15 scrms, psteed, bbentson
    
    Subscribers: jcharumilind, dnicolaou, sbagaria
    
    Differential Revision: https://phabricator.grailbio.com/D40307
    
    fbshipit-source-id: 596089e
    swami-m authored and Prasad Gopal committed Dec 13, 2019
    Configuration menu
    Copy the full SHA
    727dd69 View commit details
    Browse the repository at this point in the history

Commits on Dec 16, 2019

  1. base/admit: Refactor methods in admit package for easier policy imple…

    …mentations
    
    Summary:
    Refactor the convenience methods in admit package in the following way:
    - `admit.Do` takes a `func () (bool, error)` where the `bool` is the direct feedback to the policy's `Release()` method.
    - `admit.Retry` takes a `func () (CapacityStatus, error)` where the `CapacityStatus` is one of `{Within, OverNeedRetry, OverNoRetry}` and gives feedback to both the policy's `Release()` method and on how the `admit.Retry` method should behave w.r.t retries.
    
    Test Plan: Unit tests.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: pgopal, dnicolaou
    
    Tags: PHID-PROJ-dtbui7u2vg2f25wzkosc
    
    Maniphest Tasks: T30447
    
    Differential Revision: https://phabricator.grailbio.com/D40009
    
    fbshipit-source-id: d8a3170
    swami-m authored and Prasad Gopal committed Dec 16, 2019
    Configuration menu
    Copy the full SHA
    b78f30d View commit details
    Browse the repository at this point in the history
  2. base/admit: Add an AIMD-based controller

    Summary:
    Implement an AIMD-based controller as described in:
    https://docs.google.com/document/d/1Nl3UyQXTRusXDu8tIt_s9N6JxXu1vhuKeBYssyaKcGU
    
    Test Plan: Unit tests.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: pgopal, dnicolaou
    
    Tags: PHID-PROJ-dtbui7u2vg2f25wzkosc
    
    Maniphest Tasks: T30447
    
    Differential Revision: https://phabricator.grailbio.com/D40054
    
    fbshipit-source-id: 2aee1ca
    swami-m authored and Prasad Gopal committed Dec 16, 2019
    Configuration menu
    Copy the full SHA
    c504fd7 View commit details
    Browse the repository at this point in the history

Commits on Jan 23, 2020

  1. base/s3file: Use AWS IsErrorRetryable for all error types

    Summary:
    Instead of using the AWS SDK method `IsErrorRetryable` for AWS errors
    use it for all errors and fix the only test case which should be using
    AWS error types anyway.
    
    Test Plan: Unit tests
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: joshnewman
    
    Maniphest Tasks: T30700
    
    Differential Revision: https://phabricator.grailbio.com/D40391
    
    fbshipit-source-id: d9440ee
    swami-m authored and Prasad Gopal committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    ea51627 View commit details
    Browse the repository at this point in the history
  2. base/file: Consider all RequestErrors as retryable regardless of cause

    Summary:
    Since the move to AWS Go SDK v1.23.22, many of S3 transient errors
    are being considered as non-retryable which has been causing problems
    for users of bigslice particularly.
    
    This change makes us consider all AWS errors of type `RequestError`,
    regardless of underlying cause, as retryable, except in the case of context errors.
    
    Test Plan: Unit tests
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: joshnewman
    
    Maniphest Tasks: T30700, T30832
    
    Differential Revision: https://phabricator.grailbio.com/D40560
    
    fbshipit-source-id: b9933f9
    swami-m authored and Prasad Gopal committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    ae2060d View commit details
    Browse the repository at this point in the history
  3. embedbin: embed assets in binaries much faster, based on fatbin

    Summary:
    Uses fatbin's mechanism for appending zip files to the end of executables.
    It's an alternative to [go_embed_data](https://github.com/bazelbuild/rules_go/blob/3762b89ad8b1d71007a4a07b194a48d505613c15/go/extras.rst#id3), which we've used (D39858), but this is
    faster: go_embed_data took ~1-2 minutes to embed the deepmm binary package
    (Pytorch is large) in a Go binary (classifier-evaluation-deepmm) whereas
    embedbin only takes ~10 s, making the development and testing experience
    much nicer. Perhaps more importantly, go_embed_data generates a ~3 GiB .go
    source file, which causes things like Bazel coverage measurement to OOM,
    whereas embedbin does no such thing.
    
    I prototyped reusing fatbin's internals (instead of copying), but I ended
    up copying because 1) they're not too complicated, 2) I think it's a good idea
    for embedbin binaries to use different magic because they're not interchangeable
    with fatbin binaries, 3) code and API reuse isn't too significant given that
    fatbins unify handling of the base executable and alternatives, whereas those
    are conceptually distinct in embedbin.
    
    Test Plan:
    Unit test suite adapted from fatbin's, as well as an end-to-end Bazel test that
    runs the gofat tool to embed files, then checks that the files are correctly
    embedded. This coverage would probably be useful in the Github version, but
    I don't know how to run it since the Github version does not use Bazel, so for
    now I've added this end-to-end test internally.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: jschellenberger, aeiser, sbagaria, bbentson, skrishnamurthy, mmaher, smahadevan
    
    Maniphest Tasks: T30452
    
    Differential Revision: https://phabricator.grailbio.com/D40476
    
    fbshipit-source-id: 69b2103
    josh-newman authored and Prasad Gopal committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    cf1680f View commit details
    Browse the repository at this point in the history

Commits on Mar 26, 2020

  1. Add eventlog, package for semi-structured event logging (grailbio#12)

    Add the `eventlog` package which provides semi-structured event logging for convenient analytics.  Example usage:
    ```
    sess := session.NewSession()
    cw := cloudwatchlogs.New(sess)
    e := NewCloudWatchEventer(cw, "myLogGroup", "myLogStream")
    e.Event("rpcRetry", "org", "GRAIL", "retry", 0, "maxRetry", 10)
    e.Event("machineStopped", "addr", "192.168.1.1", "duration", 3600.0, "startTime": 1584140534)
    ```
    
    These events will then be available in CloudWatch Logs (and therefore easily made available in Athena) for analysis.
    jcharum authored Mar 26, 2020
    Configuration menu
    Copy the full SHA
    59f2288 View commit details
    Browse the repository at this point in the history

Commits on Apr 17, 2020

  1. grail-ticket: allow execution of sub commands

    Summary: Allow grail-ticket to exec a command with the aws environment flags
    
    Test Plan: n/a
    
    Reviewers: #shared_infrastructure, joshnewman, aeiser
    
    Reviewed By: #shared_infrastructure, aeiser
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D41635
    
    fbshipit-source-id: 087dcd2
    Alex Eiser authored and Prasad Gopal committed Apr 17, 2020
    Configuration menu
    Copy the full SHA
    e95c12a View commit details
    Browse the repository at this point in the history

Commits on Apr 30, 2020

  1. Configuration menu
    Copy the full SHA
    223f7ea View commit details
    Browse the repository at this point in the history

Commits on May 2, 2020

  1. Configuration menu
    Copy the full SHA
    ec89c5f View commit details
    Browse the repository at this point in the history

Commits on May 28, 2020

  1. Run CI on OS X (grailbio#18)

    jcharum authored May 28, 2020
    Configuration menu
    Copy the full SHA
    d7adc54 View commit details
    Browse the repository at this point in the history

Commits on Jun 24, 2020

  1. Upgrade v.io to 0.1.8 (grailbio#19)

    Co-authored-by: Alex Wissmann <awissmann@grailbio.com>
    awiss and Alex Wissmann authored Jun 24, 2020
    Configuration menu
    Copy the full SHA
    8f01d47 View commit details
    Browse the repository at this point in the history

Commits on Aug 17, 2020

  1. grail-access: blackbox tests

    Summary:
    I'd like to make some changes to grail-access. I've wondered for a long time why
    it deletes an existing Vanadium principal before it starts an authentication
    flow instead of just updating the blessing. I partly think it's inelegant, but
    I've also seen multiple problems in #eng-help that were caused or exacerbated
    by running grail-access, canceling it, and not realizing that destroys the
    credentials.
    
    After a bit of code inspection recently, I think grail-access has quite a bit
    of historical cruft in its code (handling of the principal and its blessings is
    disorganized and redundant), and I think the patches to work around agent errors
    could be fixed in a more principled way.
    
    However, since we use it a lot and I'm learning as I go along, my first step is
    to introduce some tests. These all invoke grail-access as if from a shell and
    check its behavior and output to ensure user-visible behavior is unchanged.
    
    The connection of this to my actual work is rather distant: I am hoping this
    fixes a grail-fuse issue which will make it easier to do non-Go analysis work
    and otherwise streamline some dev environment tasks and then I'll be so much
    more productive (ha). I think it's worth giving grail-access some attention,
    since it is almost in its initial prototype state from three years ago, but it
    might just take some time, and I understand if it takes time to review.
    
    Test Plan:
    Tests the EC2 blesser. I don't know how to reasonably fake the Google oauth2
    server, but that's also the more reasonable flow to test manually, so we may
    need to just rely on that.
    
    Tests pass with both Bazel and `go test`.
    
    Reviewers: aeiser
    
    Reviewed By: aeiser
    
    Subscribers: smahadevan, krestivo, afields, sbagaria
    
    Differential Revision: https://phabricator.grailbio.com/D44965
    
    fbshipit-source-id: e2ff93d
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    bb620fe View commit details
    Browse the repository at this point in the history
  2. grail-access: add test for oauth2 flow

    Summary:
    Mitch pointed me to some helpful references and I assembled a test for part of
    the Google authentication flow. I'm not bothering with anything browser-y,
    instead assuming the user used their browser to get a code (which is then
    ignored). While this test skips some of the flow, I think it's still useful,
    at least exercising the Vanadium bits.
    
    Test Plan: Yes.
    
    Reviewers: aeiser, mskinner
    
    Reviewed By: mskinner
    
    Subscribers: jcharumilind, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D45052
    
    fbshipit-source-id: bc48505
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    4f415d3 View commit details
    Browse the repository at this point in the history
  3. ticket-server: support special characters in email and group addresses

    Summary:
    Allow the ticket-server email and group regex to have special characets like `-`, `_`,`+`, and `.`.
    
    NOTE: this is not a complete regex of all supported email characters. e.g. Uppercase is not included since Google lowercases all addresses.
    
    Closes T36541
    
    Test Plan: Verified as part of D45302
    
    Reviewers: #shared_infrastructure, ender, bbentson
    
    Reviewed By: #shared_infrastructure, bbentson
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T36541
    
    Differential Revision: https://phabricator.grailbio.com/D45350
    
    fbshipit-source-id: 2047926
    Alex Eiser authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    147f839 View commit details
    Browse the repository at this point in the history
  4. ticket-server: add ssh certificate support

    Summary:
    Add support to the ticket-server to sign SSH Certificates for easier access to systems that are managed by teams.
    Add new grail-ssh command to simplify the use of the SSH Certificates.
    Design doc: https://docs.google.com/document/d/1_pKjirMinqm8UykFqEm5bqAqnwLOsV3qazio0pjE80I/edit
    
    Test Plan: Tested locally and in staging
    
    Reviewers: treaster, #shared_infrastructure
    
    Reviewed By: treaster
    
    Subscribers: sbagaria, smahadevan, treaster
    
    Maniphest Tasks: T36722
    
    Differential Revision: https://phabricator.grailbio.com/D41472
    
    fbshipit-source-id: a6cdc49
    Alex Eiser authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    4ef097c View commit details
    Browse the repository at this point in the history
  5. s3file: retry on InternalServerError

    Summary: [We've started encountering this error](https://grailbio.slack.com/archives/CRRJ02JCQ/p1590079383265300) during S3 throttling.
    
    Test Plan: Unit tests.
    
    Reviewers: jcharumilind, smahadevan
    
    Reviewed By: jcharumilind
    
    Subscribers: soheil, jschellenberger
    
    Differential Revision: https://phabricator.grailbio.com/D45625
    
    fbshipit-source-id: 4a15ddf
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    9672514 View commit details
    Browse the repository at this point in the history
  6. grail-access: don't destroy credentials on cancellation

    Summary:
    As mentioned in D44965, several people have asked in #eng-help about issues
    with grail-access where deleting credentials before starting a new
    authentication flow made things worse.
    
    In the process, I've made some other improvements:
    * Load principal with `agentlib` before calling `v23.Init`. This avoids some
      potentially confusing conflicts where `v23.Init` starts an agent and locks
      the principal so we can't load it.
    * Respect `$V23_CREDENTIALS` is present. I think we should just delete our
      `-dir` flag, but I want to preserve compatibility for now.
    * General cleanup: code deduplication, consistent logging, consistent contexts.
    
    Test Plan:
    Existing unit tests (from D44965), run on macOS and Linux with both Bazel and go test.
    
    Also, I wrote a test script for manually testing the Google flow and executed on macOS and Linux.
    Output on Linux (with redactions):
    
        $ cmd/grail-access/manual_google_test.bash
        Instructions:
    
        Running manual tests. If the script exits with a non-zero error code, the tests failed.
        You'll also be prompted to review output manually. If it doesn't look right, the tests failed.
    
        Using temporary directory for test: /tmp/tmp.PZSaBvnIrf
        Building grail-access for the test...
    
        Step 1/3: Starting grail-access Google authentication flow. Please complete it.
    
        ************************************************************************
        2020/05/28 06:08:37 INFO: Couldn't load principal from ./v23. Creating new one...
        I0528 06:08:37.176503   16864 google.go:67] listening: 127.0.0.1:35689
        The attempt to automatically open a browser failed. Please open the following link:
    
                https://accounts.google.com/o/oauth2/v2/auth?...
    
        Paste the received code and then press enter: ...
    
        Successfully applied new blessing:
        Public key: 6c:c8:a6:22:01:83:b5:61:f4:0e:f9:f0:3c:ab:73:d8
        ---------------- BlessingStore ----------------
        Default Blessings                v23.grail.com:google:joshnewman@grailbio.com
        Peer pattern                     Blessings
        ...                              v23.grail.com:google:joshnewman@grailbio.com
        ---------------- BlessingRoots ----------------
        Public key                                        Pattern
        98:61:28:77:eb:5f:97:7f:2c:ef:4d:1b:f1:4d:fd:c0   [v23.grail.com]
        Expires on 2020-06-04 06:08:45.544893802 +0000 UTC (in 168h0m0.002995278s)
        ************************************************************************
    
        Done with authentication flow.
        If it succeeded, you should lines like these above:
            Default Blessings      v23.grail.com:google:YOUR_USERNAME@grailbio.com
        and
            ...                    v23.grail.com:google:YOUR_USERNAME@grailbio.com
        and an expiration date in the future.
    
        Continue with next test? [Y]
    
        Step 2/3: Next, running the same flow, but automatically canceling.
    
        ************************************************************************
        I0528 06:08:49.313507   16964 google.go:67] listening: 127.0.0.1:38975
        The attempt to automatically open a browser failed. Please open the following link:
    
                https://accounts.google.com/o/oauth2/v2/auth?...
    
        Paste the received code and then press enter: ERROR: failed to fetch blessings: EOF
        ************************************************************************
    
        Step 3/3: Finally, make sure our Step 1 credentials survived.
    
        ************************************************************************
        Public key: 6c:c8:a6:22:01:83:b5:61:f4:0e:f9:f0:3c:ab:73:d8
        ---------------- BlessingStore ----------------
        Default Blessings                v23.grail.com:google:joshnewman@grailbio.com
        Peer pattern                     Blessings
        ...                              v23.grail.com:google:joshnewman@grailbio.com
        ---------------- BlessingRoots ----------------
        Public key                                        Pattern
        98:61:28:77:eb:5f:97:7f:2c:ef:4d:1b:f1:4d:fd:c0   [v23.grail.com]
        Expires on 2020-06-04 06:08:45.544893802 +0000 UTC (in 167h59m56.20723528s)
        ************************************************************************
    
        You should see the same blessing lines as in Step 1, and a consistent expiry time.
        If not, the tests failed.
    
        Cleaning up test directory: /tmp/tmp.PZSaBvnIrf
    
    Reviewers: aeiser
    
    Reviewed By: aeiser
    
    Subscribers: jcharumilind, krestivo, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D45022
    
    fbshipit-source-id: 76802df
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    349e292 View commit details
    Browse the repository at this point in the history
  7. grail-ticket-ecr: Create an image repo and image for grail-ticket (en…

    …g and prepostdev)
    
    Test Plan:
    Check that the image is produced via webconsole
    
    (It was been produced)
    
    Reviewers: O34 Pre/Post, treaster, fdegiuli
    
    Reviewed By: O34 Pre/Post, treaster
    
    Subscribers: #lab_testing, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D45662
    
    fbshipit-source-id: a47a020
    Brian Bentson authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    7b88ac7 View commit details
    Browse the repository at this point in the history
  8. ticket-server: remove terms reflecting mniorities

    Summary:
    Remove terms and references that are based in racial segregation.
    
    REF: T37372
    
    Test Plan: unit tests related to allow/deny
    
    Reviewers: bbentson, skrishnamurthy, ender
    
    Reviewed By: skrishnamurthy
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T37372
    
    Differential Revision: https://phabricator.grailbio.com/D46020
    
    fbshipit-source-id: ca05c4c
    Alex Eiser authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    8aee9a5 View commit details
    Browse the repository at this point in the history
  9. grail-ticket: Include grail-access in the grail-ticket docker image

    Summary: We want one image with both grail-access and grail-ticket so dumping grail-access binary into grail-ticket image.
    
    Test Plan:
    apply it to the trs server.
    ```
    *******************************************************
    *    WARNING: $V23_CREDENTIALS is not defined!        *
    *******************************************************
    
    How to fix this in bash: export V23_CREDENTIALS=/root/.v23
    
    2020/06/11 17:39:01 INFO: Couldn't load principal from /root/.v23. Creating new one...
    ERROR: failed to fetch blessings: grail-access:<rpc.Client>"/ticket-server.eng.grail.com:8102/blesser/ec2".BlessEc2: Error: launch time is too old: 2020-06-05 17:32:11 +0000 UTC should be within 1h0m0s
    ```
    Returns the proper failure mode
    
    Reviewers: fdegiuli, treaster
    
    Reviewed By: fdegiuli
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D46068
    
    fbshipit-source-id: 117bea8
    Brian Bentson authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    a190761 View commit details
    Browse the repository at this point in the history
  10. base/file: refactor: split s3file.go into a few pieces

    Summary:
    It accumulated many types and functions over the years and they were sometimes
    interleaved in ways that didn't promote readability. I've split out a few files
    mostly centered around particular operations.
    
    This should be a pure refactoring. Almost all changes are just moving things
    between files, with a few documentation changes and converting an unexported
    function to a method (with a receiver). I expect no behavior changes.
    
    Test Plan: Existing builds and tests. The test code was smaller and I didn't refactor it.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D46285
    
    fbshipit-source-id: 53ac2a7
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    ac1136d View commit details
    Browse the repository at this point in the history
  11. base/file: basic s3file metrics logging

    Summary:
    I considered doing more sophisticated things (Cloudwatch, Prometheus push,
    etc.), but I don't think it's clear yet how we want to use these (and how long
    they'll stick around), so simple counting and logging seems like the best
    short-term approach. It'll be easy to revert and replace later, or extend to
    cover more S3 request types.
    
    Test Plan:
    Ran an S3-heavy program and observed logging like
        2020/06/22 23:40:07 s3file metrics: op:stat n:996 r:996/0/0/0 t:0/0/864/132/0/0/0 mib:0 [/min]
        2020/06/22 23:40:07 s3file metrics: op:read n:181692 r:3462/0/0/0 t:172248/5850/2562/1032/0/0/0 mib:10154 [/min]
        2020/06/22 23:40:17 s3file metrics: op:read n:13458 r:0/0/0/0 t:3234/10182/42/0/0/0/0 mib:13458 [/min]
        2020/06/22 23:40:27 s3file metrics: op:read n:13422 r:0/0/0/0 t:2442/10932/42/0/0/0/0 mib:13416 [/min]
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan, jschellenberger
    
    Differential Revision: https://phabricator.grailbio.com/D46329
    
    fbshipit-source-id: f0ed231
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    1760b99 View commit details
    Browse the repository at this point in the history
  12. fragments: allow optional larger field read buffers

    Summary:
    Experiments suggest this greatly reduces S3 request rate for sequential access
    patterns.
    
    Test Plan:
    Read fragments files (which go through recordio magic checking, etc.) using a
    few programs.
    
    New simple unit tests as well as more extensive randomized operation generation
    and comparison to `bytes.Buffer` (as a golden reference).
    
    File reading benchmarks (that are quick and run on SSD, not S3, and thus are
    unaffected by the original issue) are unchanged, which is good.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan, jschellenberger
    
    Differential Revision: https://phabricator.grailbio.com/D46330
    
    fbshipit-source-id: 2acf8f3
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    7005aae View commit details
    Browse the repository at this point in the history
  13. ticket-server: allow multiple email domains from different google acc…

    …ounts to be validated as ticket-server users
    
    Summary:
    Allow the ticket-server to support multiple google domains when performing user verification and blessing.
    Allow the ticket-server to support multiple google domains when performing google group lookups
    Correct incorrect regex that did not escape special characters `.\([`.
    
    FIXES T37864
    
    Test Plan:
    Run local ticket-server
    Perform several calls to create a user, and use tickets
    
    ```
    GB-C02YR4M9LVCG:sandbox.grail aeiser$ grail-access -blesser-google=/@6@wsh@:9002@@35741be6d925abac81c7878ff24e7dfa@s@v23.grail.com@@/blesser/google
    I0618 22:23:21.863538   40060 google.go:67] listening: 127.0.0.1:53322
    Opening "https://accounts.google.com/o/oauth2/v2/auth?access_type=online&client_id=27162366543-edih9cqc3t8p5hn9ord1k1n7h4oajfhm.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A53322&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&state=3f9d3f4f2bec9c70f6c7bd371593e0b1"...
    Successfully applied new blessing:
    Public key: cc:e5:97:7d:a8:f9:19:b1:fe:60:7d:5d:b3:98:29:26
    ​---------------- BlessingStore ----------------
    Default Blessings                v23.grail.com:google:aeiser@contractors.grail.com
    Peer pattern                     Blessings
    ...                              v23.grail.com:google:aeiser@contractors.grail.com
    ​---------------- BlessingRoots ----------------
    Public key                                        Pattern
    98:61:28:77:eb:5f:97:7f:2c:ef:4d:1b:f1:4d:fd:c0   [v23.grail.com]
    Expires on 2020-06-25 22:24:42.691220945 -0700 PDT (in 167h59m59.981234945s)
    ```
    
    ```
    GB-C02YR4M9LVCG:sandbox.grail aeiser$ grail-access -blesser-google=/@6@wsh@:9002@@35741be6d925abac81c7878ff24e7dfa@s@v23.grail.com@@/blesser/google
    I0618 22:24:50.558327   40198 google.go:67] listening: 127.0.0.1:53714
    Opening "https://accounts.google.com/o/oauth2/v2/auth?access_type=online&client_id=27162366543-edih9cqc3t8p5hn9ord1k1n7h4oajfhm.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A53714&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&state=c09ce502d5980d70a84d227579c9b209"...
    ERROR: failed to fetch blessings: grail-access:<rpc.Client>"/@6@wsh@:9002@@35741be6d925abac81c7878ff24e7dfa@s@v23.grail.com@@/blesser/google".BlessGoogle: Error: ID token has a wrong hosted domain: got "sandbox.grail.com", want "grailbio.com,contractors.grail.com"
    ```
    
    ```
    GB-C02YR4M9LVCG:sandbox.grail aeiser$ grail-access -blesser-google=/@6@wsh@:9002@@35741be6d925abac81c7878ff24e7dfa@s@v23.grail.com@@/blesser/google
    I0618 22:24:58.766576   40203 google.go:67] listening: 127.0.0.1:53723
    Opening "https://accounts.google.com/o/oauth2/v2/auth?access_type=online&client_id=27162366543-edih9cqc3t8p5hn9ord1k1n7h4oajfhm.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A53723&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&state=a34a4e69355f5f0a77e20c5d2df46722"...
    Successfully applied new blessing:
    Public key: cc:e5:97:7d:a8:f9:19:b1:fe:60:7d:5d:b3:98:29:26
    ​---------------- BlessingStore ----------------
    Default Blessings                v23.grail.com:google:aeiser@grailbio.com
    Peer pattern                     Blessings
    ...                              v23.grail.com:google:aeiser@grailbio.com
    ​---------------- BlessingRoots ----------------
    Public key                                        Pattern
    98:61:28:77:eb:5f:97:7f:2c:ef:4d:1b:f1:4d:fd:c0   [v23.grail.com]
    Expires on 2020-06-25 22:25:02.026613997 -0700 PDT (in 167h59m59.992090997s)
    ```
    
    Before aeiser@contractors.grail.com added to eng/dev
    ```
    GB-C02YR4M9LVCG:sandbox.grail aeiser$ grail-access -blesser-google=/@6@wsh@:9002@@f085cdc756039daeccdb46a54cb2ac2a@s@v23.grail.com@@/blesser/google
    Successfully applied new blessing:
    Public key: cc:e5:97:7d:a8:f9:19:b1:fe:60:7d:5d:b3:98:29:26
    ​---------------- BlessingStore ----------------
    Default Blessings                v23.grail.com:google:aeiser@contractors.grail.com
    Peer pattern                     Blessings
    ...                              v23.grail.com:google:aeiser@contractors.grail.com
    ​---------------- BlessingRoots ----------------
    Public key                                        Pattern
    98:61:28:77:eb:5f:97:7f:2c:ef:4d:1b:f1:4d:fd:c0   [v23.grail.com]
    Expires on 2020-06-25 22:41:20.033580147 -0700 PDT (in 167h59m59.993922147s)
    
    GB-C02YR4M9LVCG:sandbox.grail aeiser$ grail-aws //@6@wsh@:9002@@f085cdc756039daeccdb46a54cb2ac2a@s@v23.grail.com@@/eng/dev/admin
    no subcommand specified, inferring 'credentials' based on other args
    E0618 22:41:33.777187   40932 conncache.go:319] Failed to resolve (wsh, :9002): lookup : no such host
    ticket-server:"eng/dev/admin".Get: Access denied: ticket-server:"eng/dev/admin".Get: not authorized to call eng/dev/admin.Get: ticket-server:"eng/dev/admin".Get: [v23.grail.com:google:aeiser@contractors.grail.com] does not have Read access (rejected blessings: [])
    ```
    
    After adding to eng/dev
    ```
    GB-C02YR4M9LVCG:sandbox.grail aeiser$ grail-aws  /@6@wsh@:9002@@e10baa5fa1ae90e431e077e2ab7531af@s@v23.grail.com@@/eng/dev/admin
    no subcommand specified, inferring 'credentials' based on other args
    E0618 22:34:08.812232   40729 conncache.go:319] Failed to resolve (wsh, :9002): lookup : no such host
    export AWS_ACCESS_KEY_ID=ASIAZAUXVPWNLVEPKWOU
    export AWS_SECRET_ACCESS_KEY=XXXX
    export AWS_SESSION_TOKEN=YYYY
    ```
    
    Reviewers: #shared_infrastructure, btoledo
    
    Reviewed By: #shared_infrastructure, btoledo
    
    Subscribers: joshnewman, contractor-aeiser, btoledo, smahadevan
    
    Maniphest Tasks: T37864
    
    Differential Revision: https://phabricator.grailbio.com/D46325
    
    fbshipit-source-id: c6a773e
    Alex Eiser authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    e67502a View commit details
    Browse the repository at this point in the history
  14. base/file: DNS resolution metrics

    Summary:
    The [S3 performance guide](http://web.archive.org/web/20200624062712/https://docs.aws.amazon.com/AmazonS3/latest/dev/optimizing-performance-design-patterns.html) recommends using diverse S3 IPs (to distribute load and
    reduce throttling). This revision adds a metric to count unique remote IPs used
    by s3file's underlying HTTP clients. In one example program, I see no diversity:
        2020/06/24 06:35:38 s3file metrics: op:stat n:120 r:120/0/0/0 t:0/0/120/0/0/0/0 mib:0 [/min]
        2020/06/24 06:35:38 s3file metrics: op:read n:10020 r:552/0/0/0 t:9420/48/540/12/0/0/0 mib:309 [/min]
        2020/06/24 06:35:38 s3file metrics: op:dial 94/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0
    Sometimes it's a little better:
        2020/06/24 06:35:10 s3file metrics: op:stat n:120 r:120/0/0/0 t:0/0/84/36/0/0/0 mib:0 [/min]
        2020/06/24 06:35:10 s3file metrics: op:read n:9168 r:552/0/0/0 t:8598/12/372/186/0/0/0 mib:282 [/min]
        2020/06/24 06:35:10 s3file metrics: op:dial 51/23/1/0/0/0/0/0/0/0/0/0/0/0/0/0
    I plan to check on a few more important, often-throttled ones and then look into
    fixing this.
    
    A simple experiment program (resolvetest) suggests that we often get the same
    result for a few seconds at a time, perhaps due to caching (in Go or Ubuntu or
    AWS or elsewhere?), which may be useful if we try to fix this later:
        0.000000:       52.218.193.106
        0.027276:       52.218.193.106
        0.002374:       52.218.193.106
        0.004290:       52.218.193.106
        0.008292:       52.218.193.106
        0.016247:       52.218.193.106
        0.032277:       52.218.193.106
        0.064325:       52.218.193.106
        0.128351:       52.218.193.106
        0.256322:       52.218.193.106
        0.512338:       52.218.193.106
        1.024396:       52.218.193.106
        1.025318:       52.218.193.106
        1.024379:       52.218.192.194
        1.031849:       52.218.192.194
        1.024471:       52.218.246.131
        1.044295:       52.218.246.131
        1.024388:       52.218.246.131
        1.024385:       52.218.246.131
        1.024385:       52.218.216.186
        1.025139:       52.218.180.227
        1.025214:       52.218.180.227
        1.024409:       52.218.180.227
        1.024383:       52.218.180.227
        1.024413:       52.218.180.227
        1.024368:       52.218.246.211
        1.025224:       52.218.248.50
        1.025222:       52.218.222.27
        1.025249:       52.218.222.27
        1.024392:       52.218.176.163
        1.025139:       52.218.193.50
    
    Test Plan:
    Ran programs with the `-s3file.metric_http_addr` flag.
    Ran resolvetest.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T38104
    
    Differential Revision: https://phabricator.grailbio.com/D46444
    
    fbshipit-source-id: 067b1c6
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    dac1b72 View commit details
    Browse the repository at this point in the history
  15. bio/pileup: fixit: LoadFa update

    Summary:
    This updates bio/pileup and everything depending on it to use
    bio/encoding/fasta, now that D46599 has made it painless.
    
    Test Plan:
    Existing tests pass.  end_to_end_model_training_contasource.sh
    ran to completion on my adhoc.
    
    Reviewers: sbagaria, ayip
    
    Reviewed By: sbagaria
    
    Subscribers: escott, cyakym, sbanville, cchang, smahadevan
    
    Maniphest Tasks: T32685
    
    Differential Revision: https://phabricator.grailbio.com/D46681
    
    fbshipit-source-id: ea6bf9e
    Christopher Chang authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    614bee7 View commit details
    Browse the repository at this point in the history
  16. bigslice/sliceflags: move ticket-based AWS configuration to cloud/aws…

    …session
    
    Summary: Move ticket-based AWS configuration to common function in `cloud/awssession`, as discussed in D46367.
    
    Test Plan: Run bigslice-demo example program.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D46792
    
    fbshipit-source-id: a9745c7
    jcharum authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    fa8efdf View commit details
    Browse the repository at this point in the history
  17. base/size: DeepSize() method

    Summary:
    Adding a DeepSize() method which can compute the size of a complex struct.
    Included also is an IntervalSet struct which could use some work.
    
    Test Plan: extensive unit testing
    
    Reviewers: joshnewman, jcharumilind
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T38940
    
    Differential Revision: https://phabricator.grailbio.com/D47011
    
    fbshipit-source-id: ebf03ed
    Jan Schellenberger authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    3eddff7 View commit details
    Browse the repository at this point in the history
  18. s3file: list buckets with all clients rather than any

    Test Plan: Existing tests, and some queries with grail-file and grail-fuse.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T30452
    
    Differential Revision: https://phabricator.grailbio.com/D46790
    
    fbshipit-source-id: 3441fff
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    18b8fd6 View commit details
    Browse the repository at this point in the history
  19. grail-fuse: handle directory markers

    Test Plan:
    I used to see nothing from `ls /mnt/s3/.../dir_with_dir_marker`.
    Now I see the correct contents.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T30452
    
    Differential Revision: https://phabricator.grailbio.com/D47379
    
    fbshipit-source-id: afbb9ae
    josh-newman authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    c4bfcca View commit details
    Browse the repository at this point in the history
  20. grail-ticket: convert raw ticket to JSON only when necessary

    Summary:
    Converting large tickets to JSON is an expensive operation and in some cases, causes grail-ticket to hang.
    
    Only convert raw ticket data to JSON when the output is going to be in JSON format.
    
    Test Plan:
    Ran `grail-ticket tickets/aws-grail-edc-dev/global/secrets/summitRandomizationSchedule` (without the changes),
    grail-ticket hangs.
    
    Ran `bazel run //go/src/github.com/grailbio/base/cmd/grail-ticket -- tickets/aws-grail-edc-dev/global/secrets/summitRandomizationSchedule`
    (with the changes), the ticket is pulled down successfully.
    
    Reviewers: noah, aeiser
    
    Reviewed By: aeiser
    
    Subscribers: dgustafson, smahadevan, bbentson
    
    Maniphest Tasks: T39843
    
    Differential Revision: https://phabricator.grailbio.com/D47898
    
    fbshipit-source-id: dee3c42
    Ani Jonnavithula authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    dc4ab51 View commit details
    Browse the repository at this point in the history
  21. bio/demuxbcl: allow 256+ samples

    Summary:
    The first version of demuxbcl was limited to 255 samples, since it was
    convenient to use the "bytes" package and gunsafe.ExtendBytes() for a
    few operations.  However, since we now know we need to demux larger
    numbers of samples at a time, this revision changes the sampleId type
    to uint16, which raises the limit to 65535 samples.
    
    bytes.IndexByte() was actually moderately important for performance,
    so I've added the analogous simd.IndexU16() function.
    
    Test Plan:
    Existing tests pass, and unit test and benchmark have been added for
    simd.IndexU16().  Reran bio-demux-bcl on the dataset mentioned in
    T34299, and verified results were unchanged.
    
    Reviewers: ayip, ghorrell
    
    Reviewed By: ayip
    
    Subscribers: smahadevan, escott, sramani, nshojaee, cchang
    
    Maniphest Tasks: T39842
    
    Differential Revision: https://phabricator.grailbio.com/D48010
    
    fbshipit-source-id: d47d8ab
    Christopher Chang authored and Alexander Yip committed Aug 17, 2020
    Configuration menu
    Copy the full SHA
    8e5f8ec View commit details
    Browse the repository at this point in the history

Commits on Oct 1, 2020

  1. Remove Go 1.12 from CI (grailbio#23)

    As of grailbio@349e292, we are no longer Go 1.12-compatible. Go 1.12 is 3 versions out of date now, so we are fully dropping support.
    
    This fixes part of the current build failures introduced by the last push from the GRAIL internal repository.
    jcharum authored Oct 1, 2020
    Configuration menu
    Copy the full SHA
    b2189c7 View commit details
    Browse the repository at this point in the history
  2. Build on xenial (grailbio#25)

    When we synced grailbio@4ef097c#diff-8b7b38c62b815a44970c5332bcadd718R64-R72 from our internal repository, we introduced a dependence on `ssh-keygen` support of the `-` argument to read from standard input. The version of `ssh-keygen` shipped on trusty does not support it. Upgrade our build to use xenial. (We may consider upgrading further, but I am trying to make the minimal changes to make our CI build succeed again).
    jcharum authored Oct 1, 2020
    Configuration menu
    Copy the full SHA
    1ee4ef0 View commit details
    Browse the repository at this point in the history

Commits on Oct 8, 2020

  1. Upgrade dependencies to fix build errors with recent versions (grailb…

    …io#22)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    matthewloring and jcharum authored Oct 8, 2020
    Configuration menu
    Copy the full SHA
    39a424c View commit details
    Browse the repository at this point in the history

Commits on Jan 8, 2021

  1. ticket-server: grant v23 identity for kubernetes pods

    Summary:
    Allow ticket-server to grant Kubernetes pods a v23 identity.
    
    Given a request with a `ca.crt`, `namespace`, and service account `token`, query the Kubernetes cluster API server to verify the token. Verify that the request `ca.crt` is in the allow list of clusters.
    
    Request times:
    28 AWS accounts across 3 regions -> 23.89s
    28 AWS accounts across 1 region (closest to what we will run in prod)-> 4.4s
    5 AWS accounts across 3 regions -> 8.93s
    
    Design Doc: https://docs.google.com/document/d/1-MxDlRT5JPucktIzjNfRFFmPjjXNjdmi5xjpjGQ2KU8/edit#
    
    Closes T39592
    
    Test Plan: Verify flow locally by granting a v23 identity from a local ticket-server using a Kubernetes cluster in the dev environment to authenticate the token.
    
    Reviewers: O9 ticket-server, aeiser, O3 third-party, joshnewman, bbentson
    
    Reviewed By: O9 ticket-server, O3 third-party, joshnewman, bbentson
    
    Subscribers: joshnewman, bbentson, aeiser, jcharumilind, pgopal, dnicolaou, pboyapalli
    
    Maniphest Tasks: T39579, T39592
    
    Differential Revision: https://phabricator.grailbio.com/D47646
    
    fbshipit-source-id: 3513e59
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    b2372dc View commit details
    Browse the repository at this point in the history
  2. grail-access: support k8s flag to request v23 identity

    Summary:
    This command will be run from a Kubernetes pod. It will request a v23 identity from the ticket-server using the /blesser/k8s endpoint and pass in caCrt, namespace, and service account token.
    
    Design Doc: https://docs.google.com/document/d/1-MxDlRT5JPuckitIzjNfRFFmPjjXNjdmi5xjpjGQ2KU8/edit#
    
    Closes T39590
    
    Test Plan:
    Verify flow locally.
    
    Grant a v23 identity from a local ticket-server using a Kubernetes cluster in the dev environment to authenticate the token.
    
    Subscribers
    
    Reviewers: #security, aeiser, O9 ticket-server, joshnewman, bbentson
    
    Reviewed By: #security, O9 ticket-server, joshnewman, bbentson
    
    Subscribers: bbentson, joshnewman, smahadevan
    
    Maniphest Tasks: T39590
    
    Differential Revision: https://phabricator.grailbio.com/D47876
    
    fbshipit-source-id: e77e5a8
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    2626aca View commit details
    Browse the repository at this point in the history
  3. base/bitset: SetInterval, ClearInterval

    Summary:
    This adds SetInterval and ClearInterval functions which efficiently
    set/clear a block of bits, along with NewSetBits()/NewClearBits()
    convenience functions.
    
    Test Plan: Unit test added.
    
    Reviewers: ayip
    
    Reviewed By: ayip
    
    Subscribers: cchang, smahadevan
    
    Maniphest Tasks: T20121
    
    Differential Revision: https://phabricator.grailbio.com/D48407
    
    fbshipit-source-id: 7aad6f4
    Christopher Chang authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    0a93b91 View commit details
    Browse the repository at this point in the history
  4. grail-access: remove usage of agentlib

    Summary: agentlib is deprecated in the newest versions of vanadium. This diff will make upgrading our vanadium version easier.
    
    Test Plan: Ran `grail-access` locally and updated unit tests.
    
    Reviewers: #security, aeiser
    
    Reviewed By: #security, aeiser
    
    Subscribers: joshnewman, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D50485
    
    fbshipit-source-id: 8e017ed
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    7f84850 View commit details
    Browse the repository at this point in the history
  5. traverse: update comment to warn about deadlock

    Summary:
    Update the method comment on `Each` to warn developers about a potential
    deadlock state when panics occur in concurrent goroutines.
    
    Ref T43383
    
    Test Plan: Verify that the code still compiles and bazel build passes.
    
    Reviewers: arinehouse, ecarrel
    
    Reviewed By: ecarrel
    
    Subscribers: smahadevan
    
    Tags: #software-only_change_control, #platform-wide
    
    Maniphest Tasks: T43383
    
    Differential Revision: https://phabricator.grailbio.com/D50868
    
    fbshipit-source-id: f8d8ada
    Richard Huang authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    bff8627 View commit details
    Browse the repository at this point in the history
  6. Revert "grail-access: remove usage of agentlib"

    Summary:
    This reverts commit 8e017ede14a0ea4fe00b428eee8fbae20a27306c.
    
    This change is causing issues because we removed the v23agent without upgrading Vanadium. This change will be included in the diff where we upgrade the Vanadium version.
    
    Test Plan: Unit tests.
    
    Reviewers: aeiser
    
    Reviewed By: aeiser
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D50927
    
    fbshipit-source-id: dea4e06
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    f014afa View commit details
    Browse the repository at this point in the history
  7. s3file: custom http transport

    Summary:
    A new alternative to D46489 and D48243. This takes a different approach of
    more explicitly managing transports tuned for S3 access.
    
    Test Plan:
    New unit tests.
    
    Enabled new transport in (manually-run) integration tests, and ran them.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: aeiser, jschellenberger, smahadevan
    
    Maniphest Tasks: T38104
    
    Differential Revision: https://phabricator.grailbio.com/D48772
    
    fbshipit-source-id: 6329221
    josh-newman authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    3ef907c View commit details
    Browse the repository at this point in the history
  8. memsize: bug fix, add compaction to reduce memory usage

    Summary:
    There was a bug where memory usage could be under counted.
    
    Adds compaction to the intervalset.  At certain strategic times, adjacent
    intervals in the interval set will be merged and de-duplicated.
    
    Test Plan: updated unit tests
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: anandi, jcharumilind, smahadevan
    
    Maniphest Tasks: T38940
    
    Differential Revision: https://phabricator.grailbio.com/D51318
    
    fbshipit-source-id: abdd8ac
    Jan Schellenberger authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    d15bf68 View commit details
    Browse the repository at this point in the history
  9. log: refactor into github.com directory

    Summary:
    Open Sourcing the common logging library so it can be used by services in github.com  directory, such as ticket-server.
    
    Closes T43907.
    
    Test Plan: Make sure builds pass.
    
    Reviewers: O50 galleri/communications, O56 Ensemble backend, O15 scrms, #security, treaster, jgalilee, tule
    
    Reviewed By: O50 galleri/communications, O56 Ensemble backend, O15 scrms, #security, jgalilee, tule
    
    Subscribers: aeiser, jcharumilind, dnicolaou, pboyapalli, smahadevan
    
    Maniphest Tasks: T43907
    
    Differential Revision: https://phabricator.grailbio.com/D51322
    
    fbshipit-source-id: d62074e
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    1a3b681 View commit details
    Browse the repository at this point in the history
  10. ticket-server: use common logger and improve logging

    Summary: Switch ticket-server logger from vlog to our common, structured logger. Once we upgrade v.io, we should be able to include `requestID` in each log message that is unique to each server request. This will greatly improve ticket-server logging as it will allow us to corroborate multiple and simultaneous log messages.
    
    Test Plan:
    Instantiate local ticket-server, make requests against it, and verify logs and functionality.
    
    Improved logging messages:
    https://phabricator.grailbio.com/P1133
    
    Reviewers: O9 ticket-server, aeiser
    
    Reviewed By: O9 ticket-server, aeiser
    
    Subscribers: jcharumilind, dnicolaou, pboyapalli, smahadevan
    
    Maniphest Tasks: T43900
    
    Differential Revision: https://phabricator.grailbio.com/D51308
    
    fbshipit-source-id: 289ed44
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    e923305 View commit details
    Browse the repository at this point in the history
  11. common/log: add debug logging and improve godoc documentation

    Summary:
    Add debug level logging, improve godoc documentation. These changes were requested by Fed.
    
    Also add unit test for nil ctx.
    
    Closes T44568
    
    Test Plan: Update unit tests.
    
    Reviewers: fdegiuli, treaster, adharwadkar
    
    Reviewed By: fdegiuli
    
    Subscribers: #security, smahadevan
    
    Maniphest Tasks: T44568
    
    Differential Revision: https://phabricator.grailbio.com/D51994
    
    fbshipit-source-id: 45024c8
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    6b58bbb View commit details
    Browse the repository at this point in the history
  12. classifier/chiron: configure tfwrap from classifier evaluation

    Summary:
    Configure `tfwrap` with a profile specified in the classifier evaluation binary. We previously used configuration from `$HOME/grail/profile`, however this had at least two problems:
    
    # It wasn't captured anywhere for reproducibility.
    # It was a second place to deal with for configuration, in addition to `trainer_params`.
    
    Since D51112, Chiron itself uses a `base/config` profile for configuration. In this revision, add `tfexec` things to that profile default, and now pass it as a command line argument via `tfwrap` for use by `tfexec`. This means that all profile configuration happens in `trainer_params`, and `$HOME/grail/profile` is defunct.
    
    Profiles are only included if you specify `chiron_eval_binary(..., pass_profile = True, ...)`. In practice, you probably want to set this if and only if you are specifying a binary built with `tfexec_binary` as your trainer.
    
    `tfwrap` no longer reads from `$HOME/grail/profile` to prevent accidental inclusion of configuration that prevents reproduction, however you can still invoke it directly with a `--profile your-profile` argument.
    
    Test Plan: Run unit tests. Run with different configurations of the `sexandage` trainer.
    
    Reviewers: O52 chiron infrastructure, joshnewman, soheil
    
    Reviewed By: O52 chiron infrastructure, joshnewman
    
    Subscribers: smahadevan
    
    Tags: #chiron
    
    Maniphest Tasks: T42162, T40897
    
    Differential Revision: https://phabricator.grailbio.com/D51908
    
    fbshipit-source-id: 72662d5
    jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    a7a9158 View commit details
    Browse the repository at this point in the history
  13. grail-ticket: improve long description and update doc.go

    Summary:
    Update the long description of grail-ticket to use `grail-ticket` instead of `grail ticket` and use the `tickets/eng/dev/aws`, which every engineer should have access to. Also re-generate doc.go to update.
    
    Closes T44662
    
    Test Plan: Careful eyes.
    
    Reviewers: #security, aeiser
    
    Reviewed By: #security, aeiser
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T44662
    
    Differential Revision: https://phabricator.grailbio.com/D52004
    
    fbshipit-source-id: ac90ed7
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    cc26545 View commit details
    Browse the repository at this point in the history
  14. log: add no context logger functions

    Summary:
    Create logging functions without a `ctx` to support logging in situations without a context.
    
    Closes T44734
    
    Test Plan: Update unit tests.
    
    Reviewers: fdegiuli, treaster, adharwadkar
    
    Reviewed By: fdegiuli
    
    Subscribers: adharwadkar, smahadevan
    
    Maniphest Tasks: T44734
    
    Differential Revision: https://phabricator.grailbio.com/D52138
    
    fbshipit-source-id: 4daca99
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    d864921 View commit details
    Browse the repository at this point in the history
  15. Changed vlog to common logger

    Summary:
    Changed vlog to common logger
    Where ever the context was not available in "main" like function, context.Background() context was used. In the NoCtx variations of the logger, the context.Background() is used (suggested by @treaster)
    
    Test Plan: This should be printing the same message as original message. No change in functionality is expected.
    
    Reviewers: noah, O56 Ensemble backend, fdegiuli
    
    Reviewed By: O56 Ensemble backend, fdegiuli
    
    Subscribers: noah, treaster, smahadevan, fdegiuli
    
    Differential Revision: https://phabricator.grailbio.com/D51822
    
    fbshipit-source-id: 776f0ce
    Amrit Dharwadkar authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    99ed85d View commit details
    Browse the repository at this point in the history
  16. v.io: update to v0.1.14

    Summary:
    Upgrade from Vanadium v0.1.6 to v0.1.14.
    
    Closes T42157.
    
    Test Plan:
    Verify Vanadium upgraade on local instances of ticket-server (Noah), LIMS (Richard), and Pipeline (Phillip).
    https://docs.google.com/document/d/12ySNMFTUCY4F3rCmp2pJn2LzsgxZgn-JMbmijHycjCU/edit#
    
    Testing done by @rhuang T43601
    
    Reviewers: O9 ticket-server, O17 Instruments Service, O28 Grailbook Infra, O5 pipeline, O34 Pre/Post, O10 LIMS Server, O6 EDC, O3 third-party, O56 Ensemble backend, O57 Patient Service Backend, O50 galleri/communications, aeiser, tule, rhuang, O58 Shipment Service owner, pbohannon, byang, ajonnavithula
    
    Reviewed By: O9 ticket-server, O17 Instruments Service, O28 Grailbook Infra, O5 pipeline, O34 Pre/Post, O10 LIMS Server, O6 EDC, O3 third-party, O56 Ensemble backend, O57 Patient Service Backend, O50 galleri/communications, aeiser, tule, rhuang, O58 Shipment Service owner, pbohannon, byang, ajonnavithula
    
    Subscribers: fdegiuli, aahn, rhuang, krestivo, aeiser, pbohannon, jcharumilind, pgopal, smahadevan, dnicolaou, pboyapalli, #lab_testing
    
    Maniphest Tasks: T42157
    
    Differential Revision: https://phabricator.grailbio.com/D50466
    
    fbshipit-source-id: 404e476
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    ec13350 View commit details
    Browse the repository at this point in the history
  17. revert: v.io: update to v0.1.14

    Summary:
    I do not plan on landing this diff. It is simply here so we have a revert diff ready in case the Vanadium update diff D50466 causes unexpected issues.
    
    Revert "v.io: update to v0.1.14"
    
    This reverts commit e48affa9ec12d8152370e745be8c381acfd7651a.
    
    Reviewers: O9 ticket-server, O17 Instruments Service, O50 galleri/communications!, O28 Grailbook Infra, O58 Shipment Service owner, O5 pipeline, O56 Ensemble backend, O34 Pre/Post, O57 Patient Service Backend, O10 LIMS Server, O6 EDC, O3 third-party, aeiser, rhuang, pbohannon, ajonnavithula, ecarrel
    
    Reviewed By: O9 ticket-server, O17 Instruments Service, O28 Grailbook Infra, O58 Shipment Service owner, O5 pipeline, O56 Ensemble backend, O34 Pre/Post, O57 Patient Service Backend, O10 LIMS Server, O6 EDC, O3 third-party, aeiser, rhuang, pbohannon, ajonnavithula, ecarrel
    
    Subscribers: aeiser, jcharumilind, smahadevan, dnicolaou, pboyapalli, #lab_testing
    
    Differential Revision: https://phabricator.grailbio.com/D52269
    
    fbshipit-source-id: 3d0d90c
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    9470a04 View commit details
    Browse the repository at this point in the history
  18. v.io: update to v0.1.15

    Summary:
    Upgrade from Vanadium to v0.1.15.
    
    This diff is based on D50466. D50466 was reverted by D52269.
    
    D50466 upgraded Vanadium to v0.1.14. There are no significant changes between v0.1.14 and v0.1.15, except the bugfix for an issue we discovered in the Vanadium source code: the `dir.lock` file in the credentials directory is not generated during the runtime factory initialization, even when the read-only flag is not set.
    
    This diff will include the commit that fixes that bug so that the `dir.lock` file is properly created.
    
    ```
    $ git diff D52508 D50466 --name-only
    
    go/src/github.com/grailbio/base/go.mod
    go/src/github.com/grailbio/base/go.sum
    go/src/github.com/grailbio/bigmachine/go.sum
    go/src/github.com/grailbio/bigslice/go.sum
    go/src/github.com/grailbio/bio/go.sum
    go/src/github.com/grailbio/diviner/go.sum
    go/src/github.com/grailbio/doppelmark/go.sum
    go/src/github.com/grailbio/gql/go.sum
    go/src/github.com/grailbio/grit/go.sum
    go/src/github.com/grailbio/hts/go.sum
    go/src/github.com/grailbio/infra/go.sum
    go/src/github.com/grailbio/ml/go.sum
    go/src/github.com/grailbio/reflow/go.sum
    go/src/github.com/grailbio/v23/factories/grail/go.mod
    go/src/github.com/grailbio/v23/factories/grail/go.sum
    go/src/grail.com/bigslice/sliceflags/v23.go
    go/src/grail.com/billing/server/vanadium/vdl/account/account.vdl.go
    go/src/grail.com/go.mod
    go/src/grail.com/go.sum
    go/src/grail.com/pipeline/director/services/release_test.go
    go/src/grail.com/pipeline/director/services/worker_test.go
    go/src/grail.com/pipeline/ifc/ifc.vdl.go
    go/src/vendor/v.io/x/ref/lib/security/util.go
    third-party/go/repositories.bzl
    ```
    
    Full paste of diff D52508 D50466:
    https://phabricator.grailbio.com/P1247
    
    Test Plan:
    There was already significant testing done for D50466 with Noah verifying the ticket-server behavior in staging environment, Richard on LIMS, and Philip on Pipeline.
    Testing done by @rhuang T43601
    
    The additional test for this diff is to verify that old credentials (geneated with old grail-access) is compatible with new grail-ticket. This was verified by Noah.
    
    Closes T42157.
    
    Reviewers: O9 ticket-server, O17 Instruments Service, O50 galleri/communications, O28 Grailbook Infra, O58 Shipment Service owner, O5 pipeline, O56 Ensemble backend, O34 Pre/Post, O57 Patient Service Backend, O10 LIMS Server, O6 EDC, O3 third-party, rhuang, aeiser, jgalilee, pbohannon, fdegiuli, lkong, ajonnavithula
    
    Reviewed By: O9 ticket-server, O17 Instruments Service, O50 galleri/communications, O28 Grailbook Infra, O58 Shipment Service owner, O5 pipeline, O56 Ensemble backend, O34 Pre/Post, O57 Patient Service Backend, O10 LIMS Server, O6 EDC, O3 third-party, rhuang, aeiser, jgalilee, pbohannon, fdegiuli, lkong, ajonnavithula
    
    Subscribers: joshnewman, jcharumilind, smahadevan, dnicolaou, pboyapalli, rhuang, #lab_testing
    
    Maniphest Tasks: T42157
    
    Differential Revision: https://phabricator.grailbio.com/D52508
    
    fbshipit-source-id: a445ca1
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    41f1f6b View commit details
    Browse the repository at this point in the history
  19. log: add v23 request id

    Summary: With the v23 update to v0.1.15, the vcontext should now include a request id per v23 request.
    
    Test Plan: Verified in local instantiation of ticket-server's logs.
    
    Reviewers: fdegiuli, treaster, aeiser
    
    Reviewed By: aeiser
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D52769
    
    fbshipit-source-id: 2952ca9
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    dbbb546 View commit details
    Browse the repository at this point in the history
  20. grail-ticket: add ability to query for all accessible tickets

    Summary:
    Update the `grail-ticket`  to support a flag, `-list`, that lists all the tickets accessible to the user.
    
    To support this on the ticket-server side, a new function, `List()`, was added. `List()` iterates over all tickets and queries Google Groups API to see if the user has access. It then returns a sorted list of accessible tickets.
    
    Example:
    ```
    $ grail-ticket -list tickets
    aws-grail-eng-sandbox/admin/aws
    aws-grail-eng-sandbox/test/aws
    eng/dev/admin
    eng/dev/aws
    eng/go-testing/aws
    eng/go-testing/aws.perm
    security/admin/aws
    security/veeva/sbx-svc-logging-password
    security/veeva/sbx-svc-logging-user
    ti-apps/admin/aws
    ti-apps/ticket-server/aws
    ```
    
    From my local testing, the command takes 55-60s.
    
    Test Plan: Instantiated ticket-server locally and ran `grail-ticket -list` against it.
    
    Reviewers: O9 ticket-server, #security, aeiser
    
    Reviewed By: O9 ticket-server, #security, aeiser
    
    Subscribers: aeiser, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D52062
    
    fbshipit-source-id: 6afaffc
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    efe7f6b View commit details
    Browse the repository at this point in the history
  21. grailbio/base/stringintern: a module for automatic string interning

    Summary:
    Automatically find identical strings and save memory by using the same underlying memory.
    Does not work on unexported fields, which is a fairly big loophole.
    
    For exampleSet, string interning saves 6% of memory as measured by DeepSize()
    
    Test Plan:
    unit tests for string interning method.
    tested on exampleSet showing 6% memory savings
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: afields, sbagaria, kdavydov, jcharumilind, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D52589
    
    fbshipit-source-id: 97679c1
    Jan Schellenberger authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    b64c591 View commit details
    Browse the repository at this point in the history
  22. grail-ticket,ticket-server: fix empty string glob issue

    Summary: Previously, registering the empty string "" endpoint was causing glob to fail. So, we will change the endpoint to be "list" and append "list" to the path.
    
    Test Plan:
    Deployed locally and to staging tickets-testing ticket-server and verified flow with:
    ```
    grail-ticket -list tickets-testing
    ```
    Also verified that the glob functionality still works:
    ```
    namespace glob tickets-testing/...
    ```
    
    Reviewers: O9 ticket-server, bbentson
    
    Reviewed By: O9 ticket-server, bbentson
    
    Subscribers: aeiser, bbentson, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D53226
    
    fbshipit-source-id: 85c3615
    Noah Tseng authored and jcharum committed Jan 8, 2021
    Configuration menu
    Copy the full SHA
    ef0d259 View commit details
    Browse the repository at this point in the history

Commits on Jan 26, 2021

  1. base/tsv: export empty-file-when-header-expected error string

    Summary:
    D53169 introduces a check for this error condition.  I'm exporting the
    error string to make it less likely the check will unexpectedly stop
    working.
    
    Test Plan: Existing tests pass.
    
    Reviewers: osakarya
    
    Reviewed By: osakarya
    
    Subscribers: cchang, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D53533
    
    fbshipit-source-id: cf99570
    Christopher Chang authored and jcharum committed Jan 26, 2021
    Configuration menu
    Copy the full SHA
    f799d14 View commit details
    Browse the repository at this point in the history
  2. log: caller field should only be file name and line

    Summary:
    Change the automatically logged `caller` field from full file path to only file name.
    
    The impetus for this change is that the caller root will be different depending on the system. For example, the tests will pass with `bazel test`, but fail with `go test`. We could possibly configure the full file path to be an option in the future.
    
    Github Issue: grailbio#28
    
    Test Plan: Update unit tests.
    
    Reviewers: fdegiuli, msabherwal
    
    Reviewed By: fdegiuli
    
    Subscribers: jcharumilind, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D53636
    
    fbshipit-source-id: 0a74d6d
    Noah Tseng authored and jcharum committed Jan 26, 2021
    Configuration menu
    Copy the full SHA
    bcc3a55 View commit details
    Browse the repository at this point in the history
  3. log: add logger interface

    Summary:
    This diff refactors the logging system to support an interface. This gives more flexibility to users, specifically the ability to mock the logger.
    
    With this refactor, we now support two logging flows. The first is the current flow with global, structless functions. The second is a flow that requires instantiation of the logger via `NewLogger()`.
    
    Test Plan: Update unit tests and include tests for both flows.
    
    Reviewers: msabherwal, fdegiuli
    
    Reviewed By: msabherwal, fdegiuli
    
    Subscribers: aeiser, jcharumilind, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D53655
    
    fbshipit-source-id: 0a27a40
    Noah Tseng authored and jcharum committed Jan 26, 2021
    Configuration menu
    Copy the full SHA
    90ad874 View commit details
    Browse the repository at this point in the history
  4. bigslice: reduce dump-related logging noise

    Summary:
    Reduce dump-related logging noise by:
    
    * Making the shortened CPU-profile message a `debug` level log, as it's generally not a very big deal.
    * Eliminating the message about missing bigmachine profiles when no machines exist yet.  It's not an error for there to be no machines, so we no longer log about it.
    
    Test Plan: Run `bazel run //go/src/grail.com/cmd/bigslice-demo -- fragments -bigslice-system=ec2:instance=m5.xlarge -bigslice-load-factor=1.0 -bigslice-parallelism=96`, and see quieter logs.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T45889
    
    Differential Revision: https://phabricator.grailbio.com/D53850
    
    fbshipit-source-id: db620b4
    jcharum committed Jan 26, 2021
    Configuration menu
    Copy the full SHA
    d321a53 View commit details
    Browse the repository at this point in the history

Commits on Jan 27, 2021

  1. Fix go.{mod,sum} post-sync with internal repo (grailbio#27)

    After syncing with the GRAIL internal repo, there were build failures due to stale `go.mod` entries.  I have updated them with internal changes to fix those build failures and run `go mod tidy` to eliminate any unused entries.
    
    Unit tests succeed.
    jcharum authored Jan 27, 2021
    Configuration menu
    Copy the full SHA
    33d6a70 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    701cb17 View commit details
    Browse the repository at this point in the history

Commits on Feb 10, 2021

  1. diagnostic/memsize: variable rename to avoid clashing with bytes package

    Summary: Renaming a variable from "bytes" to "numBytes" to avoid any potential confusion
    
    Test Plan: existing unit tests are sufficient.
    
    Reviewers: kdavydov
    
    Reviewed By: kdavydov
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T46101
    
    Differential Revision: https://phabricator.grailbio.com/D53971
    
    fbshipit-source-id: ed29f55
    Jan Schellenberger authored and jcharum committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    98cb01c View commit details
    Browse the repository at this point in the history
  2. bigslice: kill eventlog logs on worker machines

    Summary:
    Kill `eventlog` logs written by workers, e.g.
    ```
    https://ec2-18-237-227-158.us-west-2.compute.amazonaws.com/i-0bd5f973615fde562/: 2021/01/27 22:03:37 eventlog: CloudWatch Logs group/stream: bigslice-event/543000147~unknown@grailbio.com~20210127T220337.087+0000
    ```
    This happens because we logged before the call to `github.com/grailbio/bigmachine.Start`.  This now happens after that call, so it only executes on the driver.
    
    Test Plan: Run the `/cmd/bigslice-demo -- fragments -max-samples=50 -bigslice-system=ec2:instance=m5.xlarge -bigslice-load-factor=1.0 -bigslice-parallelism=8` and see that there are no confusing `eventlog` log messages in the output.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T45889
    
    Differential Revision: https://phabricator.grailbio.com/D54048
    
    fbshipit-source-id: 923fde6
    jcharum committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    a298e9e View commit details
    Browse the repository at this point in the history
  3. s3file: add s3transport.New

    Summary: To allow reusing this package elsewhere.
    
    Test Plan:
    Existing unit and integration tests:
        $ go test . -s3-bucket grail-joshnewman-test -s3-dir s3test
        ok      github.com/grailbio/base/file/s3file    23.392s
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D54414
    
    fbshipit-source-id: 4c59c8c
    josh-newman authored and jcharum committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    ca83164 View commit details
    Browse the repository at this point in the history
  4. grail-aws: open new window with new profile if AWS_ENV set

    Summary: This will open a new window in a new profile in Google Chrome when AWS_ENV is set
    
    Test Plan:
    `bazel build :grail-aws` then
    `AWS_ENV=mrd $(bazel info bazel-bin)/go/src/grail.com/cmd/grail-aws/grail-aws tickets/grail-prod-mrd/admin/aws webconsole`
    
    Reviewers: spolakh, aeiser
    
    Reviewed By: aeiser
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D54579
    
    fbshipit-source-id: 418081e
    jirgon authored and jcharum committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    f53b490 View commit details
    Browse the repository at this point in the history

Commits on Sep 9, 2021

  1. recordio: fix a minor issue in the README

    Summary: Fix header spec.
    
    Test Plan: - NA
    
    Reviewers: pbohannon
    
    Reviewed By: pbohannon
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D54768
    
    fbshipit-source-id: c76e5a5
    kshashidharGB authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    e43f3e9 View commit details
    Browse the repository at this point in the history
  2. reflow/various: Reuse timers as appropriate

    Summary: Re-use a single timer for efficiency in various places.
    
    Test Plan: Unit tests
    
    Reviewers: pboyapalli
    
    Reviewed By: pboyapalli
    
    Subscribers: dnicolaou
    
    Differential Revision: https://phabricator.grailbio.com/D55028
    
    fbshipit-source-id: b55cd37
    swami-m authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    7538fe9 View commit details
    Browse the repository at this point in the history
  3. retry: add BackoffWithTimeout policy

    Summary: Currently, the exponential backoff policy will loop indefinitely. This diff adds an exponential backoff policy that will timeout after the max duration.
    
    Test Plan: Add unit tests for `BackoffWithTimeout` policy.
    
    Reviewers: jhughes
    
    Reviewed By: jhughes
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D55184
    
    fbshipit-source-id: f680d31
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    058a14e View commit details
    Browse the repository at this point in the history
  4. base/tsv: fmt option in struct tag

    Summary:
    This option can provide a formatting directive. One use case is to
    print floating point numbers with a specified precision.
    
    Test Plan: See included testable example.
    
    Reviewers: jcharumilind, cchang
    
    Reviewed By: jcharumilind, cchang
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D55258
    
    fbshipit-source-id: bf058c4
    Siddhartha Bagaria authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    155ece0 View commit details
    Browse the repository at this point in the history
  5. log: add logging config

    Summary:
    Currently, due to output being piped to both stderr and stdout, the logger package duplicates logs when run within a Kubernetes pod. The logger package does not duplicate logs when run within an EC2 instance because only stderr is captured.
    
    This diff will fix the issue of logs being duplicated when run within a Kubernetes pod by adding the ability to configure the output path.
    
    This diff also lays the foundation of customizing the logger. In a separate diff, I will add the ability to set the log level, which currently defaults to `Debug`.
    
    Test Plan: Update unit tests.
    
    Reviewers: fdegiuli
    
    Reviewed By: fdegiuli
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D55332
    
    fbshipit-source-id: c75cb96
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    88105df View commit details
    Browse the repository at this point in the history
  6. recordio: add an estimator for upper bound on space required for payload

    Summary: Applications based on recordio can benefit from knowing an estimate of an upper bound on the space required to store the records for a given payload. We add an estimator to serve this.
    
    Test Plan: Add new unit tests.
    
    Reviewers: smahadevan, tcho
    
    Reviewed By: smahadevan
    
    Subscribers: smahadevan
    
    Maniphest Tasks: T47160
    
    Differential Revision: https://phabricator.grailbio.com/D55219
    
    fbshipit-source-id: 5fd3e9a
    kshashidharGB authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    6e68cd1 View commit details
    Browse the repository at this point in the history
  7. retry: refactor BackoffWithTimeout to reuse code

    Summary: We can refactor BackoffWithTimeout to reuse Backoff and MaxTries.
    
    Test Plan: Unit tests.
    
    Reviewers: smahadevan
    
    Reviewed By: smahadevan
    
    Subscribers: jhughes, ajonnavithula, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D55260
    
    fbshipit-source-id: 7b673c8
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    ebe83c2 View commit details
    Browse the repository at this point in the history
  8. log: add logging level to config

    Summary:
    Add logging level to logger config. This will set the logging level of the logger. We will also change the default logging level from `Debug` to `Info`.
    
    For example, setting the logging level to `Warn` will ignore all `Debug` and `Info` messages.
    
    Test Plan: Add unit test.
    
    Reviewers: fdegiuli
    
    Reviewed By: fdegiuli
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D55383
    
    fbshipit-source-id: 0bd4a5c
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    53ba30a View commit details
    Browse the repository at this point in the history
  9. recordio: Add SkipHeader and KeyTrailer to WriterOpts

    Summary:
    This change adds a `SkipHeader` option that allows for users to create a writer that skips writing a header and begins in the `wStateWritingBody` state. This can be used to continue writing from where a previous writer may have left off.
    This change also adds a `KeyTrailer` option that is needed when the recordio file contains a trailer. Previously the only way to set this was by explicitly adding this as a header.
    
    Test Plan: Unit tests have been added for the normal write then read functionality as well as testing functioning with transformers.
    
    Reviewers: kshashidhar, smahadevan
    
    Reviewed By: kshashidhar, smahadevan
    
    Subscribers: pbohannon
    
    Maniphest Tasks: T47010
    
    Differential Revision: https://phabricator.grailbio.com/D54947
    
    fbshipit-source-id: be5a000
    Terence Cho authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    cd5a1ba View commit details
    Browse the repository at this point in the history
  10. base/diagnostic: convert dump from tar to zip

    Summary: To allow more efficient single-entry reads, like from S3.
    
    Test Plan: Updated existing unit tests. Generated autolog dump outputs with `bigslice-demo wait`, and they were valid files.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: jschellenberger, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D55521
    
    fbshipit-source-id: 3a0a94a
    josh-newman authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    0cc219d View commit details
    Browse the repository at this point in the history
  11. bazel/generated: rule for managing checked-in generated code

    Summary:
    Use new rule to manage generation of fragments code. I think this will be helpful for maintainability (for non-github.com code).
    
    If this works well, future changes can expand it to the rest of the generated fragments code, protobuf stubs (so we don't need to handle those separately in Arcanist), SQL schemas, VDL, cmdline doc.go, etc.
    
    Test Plan: "Accidentally" modified a generated file, got a prompt to regenerate it, and then fixed it.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: noah, smahadevan, sbagaria
    
    Differential Revision: https://phabricator.grailbio.com/D55482
    
    fbshipit-source-id: 7e1908a
    josh-newman authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    45775e3 View commit details
    Browse the repository at this point in the history
  12. patient: CPP-1140 - Added Retry Logic into Patient Service

    Summary:
    Add Retry Logic like lockbox in Patient Service
    
    Jira Task: CPP-1140
    
    Test Plan:
    All existing unit tests pass.
    Added a new unit test.
    
    Reviewers: ajonnavithula, atao, adevarmanai, jhughes, O57 Patient Service Backend
    
    Reviewed By: adevarmanai, O57 Patient Service Backend
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D55841
    
    fbshipit-source-id: cc9a59a
    Bruce Hong Zhang authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    90a3748 View commit details
    Browse the repository at this point in the history
  13. CPP-1566 update lockbox to use new pattern, fix a typo, and add retry…

    … for hash
    
    Summary: Update Lockbox to use new pattern for retry
    
    Test Plan: Same test cases passed, also update hash to retry slower
    
    Reviewers: ajonnavithula, atao, adevarmanai, jhughes, ehu
    
    Reviewed By: adevarmanai
    
    Subscribers: smahadevan, O59 lockbox
    
    Differential Revision: https://phabricator.grailbio.com/D56350
    
    fbshipit-source-id: 7832ef1
    Bruce Hong Zhang authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    00aff6c View commit details
    Browse the repository at this point in the history
  14. common/log: ensure same request ID set in go ctx and gin ctx

    Test Plan: CI totally has our backs, brah
    
    Reviewers: noah, fdegiuli
    
    Reviewed By: noah, fdegiuli
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56340
    
    fbshipit-source-id: 42c6b9d
    Joe Kimmel authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    ba5b4a8 View commit details
    Browse the repository at this point in the history
  15. common/log: support setting log level using env var

    Summary: Enable setting the log level using an environment variable, `LOG_LEVEL`. The supported values will be "debug", "DEBUG", "info", "INFO", "warn", "WARN", "error", and "ERROR". Setting the environment variable LOG_LEVEL will override Config.Level.
    
    Test Plan: Unit test.
    
    Reviewers: O63 logger, jkimmel
    
    Reviewed By: jkimmel
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56405
    
    fbshipit-source-id: 170a37b
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    7ebd4dd View commit details
    Browse the repository at this point in the history
  16. ticket-server: improve logging

    Summary:
    * Change log lines that should be debug level to debug level.
    * Standardize logging across ticket-server requests
    
    Test Plan: Spun up local ticket-server and made requests against it.
    
    Reviewers: O9 ticket-server, aeiser
    
    Reviewed By: O9 ticket-server, aeiser
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56364
    
    fbshipit-source-id: 698e00b
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    d9ad9b5 View commit details
    Browse the repository at this point in the history
  17. ticket-server: add list endpoint logging

    Summary: Add logging to ticket-server list endpoint.
    
    Test Plan:
    Spun up ticket-server locally and sent request to list endpoint.
    ```
    {
      "level": "info",
      "msg": "list request",
      "caller": "list.go:19",
      "ts": "2021-03-18T23:15:21.061095800Z",
      "v23RequestID": "cf80131c-883f-11eb-bde0-0242ac110003",
      "endpoint": "list",
      "blessing": "v23.grail.com:google:ntseng@grailbio.com",
      "ticket": "list"
    }
    ```
    
    Note: the "ticket" k/v pair field name is a little funky because of how we implemented the list functionality.
    
    Reviewers: O9 ticket-server, aeiser
    
    Reviewed By: O9 ticket-server, aeiser
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56359
    
    fbshipit-source-id: 1cd1290
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    47475ed View commit details
    Browse the repository at this point in the history
  18. common/log: set default log level to debug

    Summary:
    Currently, the default log level is `Info`. This is because the Zap library sets the default to `Info` and an empty level corresponds to `Info`. Any instantiation of `Config` will have `Level` as `Info` instead of `Debug`.
    
    This is a messy problem and I think this is the best solution. If you can think of a better one, please let me know!
    
    Test Plan: .
    
    Reviewers: fdegiuli, jkimmel
    
    Reviewed By: jkimmel
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56367
    
    fbshipit-source-id: 3ba967e
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    e59d056 View commit details
    Browse the repository at this point in the history
  19. cloudkey,grail-aws,grail-ticket,ticket-server: add ticket controls an…

    …d rationale flag cli flag
    
    Summary:
    Add additional controls to ticket-server tickets, specifically Rationale, PagerDutyId, and TicketId. This will leverage a new endpoint, GetWithArgs. The commands used to interface with ticket-server, cloudkey, grail-aws, and grail-ticket, have been updated with a flag to set Rationale. More support for other Controls will come in the future.
    
    Design Doc: https://docs.google.com/document/d/1dHroVUa52yJrJZGlb_jdEN8j3HGQttjQEPRFffxdEKk/edit#heading=h.a28np8vdza4
    
    Test Plan: Spun up ticket-server locally and tested fetching tickets with and without a rationale using all three commands.
    
    Reviewers: O9 ticket-server, aeiser
    
    Reviewed By: O9 ticket-server, aeiser
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D54875
    
    fbshipit-source-id: f7a92fd
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    f695f42 View commit details
    Browse the repository at this point in the history
  20. common/log: log.Error*() should return an error

    Summary: Return an `error` with `log.Error*()` for convenience. This change should be backwards compatible and not cause any lint issues. Users can optionally use or ignore the returned `error`.
    
    Test Plan: .
    
    Reviewers: O63 logger, fdegiuli
    
    Reviewed By: O63 logger, fdegiuli
    
    Subscribers: fdegiuli, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56516
    
    fbshipit-source-id: 8015af8
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    9643ee2 View commit details
    Browse the repository at this point in the history
  21. CPP-1697 Fix bug which lets us use variable length outputs for WaitFn

    Summary: Let WaitForFn take in multiple output length
    
    Test Plan: New unit test testing multiple output length
    
    Reviewers: jaliu
    
    Reviewed By: jaliu
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56586
    
    fbshipit-source-id: a44f802
    Bruce Hong Zhang authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    cd1ef08 View commit details
    Browse the repository at this point in the history
  22. common/log: update logging README

    Summary: to include a section about `Error` family of functions returning an `error`.
    
    Test Plan: .
    
    Reviewers: fdegiuli, O63 logger, jkimmel
    
    Reviewed By: jkimmel
    
    Subscribers: jkimmel, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56753
    
    fbshipit-source-id: 29c91f5
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    31cb264 View commit details
    Browse the repository at this point in the history
  23. common/log: improve logger godoc

    Summary: include more details about the returned error (missed comment from previous diff)
    
    Test Plan: .
    
    Reviewers: O63 logger, fdegiuli, jkimmel
    
    Reviewed By: O63 logger, fdegiuli, jkimmel
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56769
    
    fbshipit-source-id: db46756
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    b961f59 View commit details
    Browse the repository at this point in the history
  24. Add Error*AndReturn functions and revert Error* interface change

    Summary:
    This reverts commit 8015af8220d1fb068934a6ad77e53879fc795508.
    
    They will be replaced with a new family of functions, `Error*AndReturn`,
    that return the log message (without keys and values) as a string.
    
    Test Plan: Update unit tests.
    
    Reviewers: O63 logger, O56 Ensemble backend, fdegiuli, jkimmel
    
    Reviewed By: O63 logger, O56 Ensemble backend, fdegiuli
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D56965
    
    fbshipit-source-id: a283619
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    1da05ce View commit details
    Browse the repository at this point in the history
  25. common/middleware : Introduces consensus-driven middleware folders an…

    …d Introduces Debug logs for v23 calls
    
    Summary:
    Middleware approach allows this invoker to wrap existing invokers.
    full V23 input args and results/errors are reported to logs.
    
    This approach allows us to turn on/off highly verbose logging, including of sensitive information,
    by toggling to Debug log-level.  If there comes a day when we still want the option to run in Debug
    in production but exclude these logs we can either add a feature-flag / env var check, or remove
    this component entirely.
    
    This change also shows how the logger is added to the notifier service.
    adding this logger to other services can be done in separate diffs.
    
    [CPP-1695]
    
    Test Plan: Manually tested by deploying notifier to dev and observing the logs
    
    Reviewers: psteed, fdegiuli, O50 galleri/communications, lkong, akshay.subram, noah, nyap, O63 logger
    
    Reviewed By: fdegiuli, O50 galleri/communications, lkong, O63 logger
    
    Subscribers: smahadevan, O59 lockbox, noah, ccoakley
    
    Differential Revision: https://phabricator.grailbio.com/D56577
    
    fbshipit-source-id: 7bc46a9
    Joe Kimmel authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    b3edbfa View commit details
    Browse the repository at this point in the history
  26. retry: MaxTries renamed to MaxRetries to reflect its actual purpose

    Summary: When MaxTries as set to 1, the function was being called twice indicating it was misappropriately named.
    
    Test Plan: Unit tests.
    
    Reviewers: bzhang, fdegiuli, O52 chiron infrastructure, O5 pipeline, O15 scrms, pbohannon, rlowe
    
    Reviewed By: fdegiuli, O52 chiron infrastructure, O5 pipeline, O15 scrms, pbohannon, rlowe
    
    Subscribers: pbohannon, jcharumilind, dnicolaou, pboyapalli, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D57253
    
    fbshipit-source-id: 693ffa7
    Noel Yap authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    d1a9498 View commit details
    Browse the repository at this point in the history
  27. base/iofmt: add LineWriter to call Write with whole lines

    Summary:
    `PrefixWriter` makes separate calls to the underlying writer's `Write` for the prefix and line contents.  This makes it more likely for lines to become interleaved when there are multiple writers to the same underlying writer, e.g. `os.Stdout`.
    
    This adds a `LineWriter` that uses a (unbounded) buffer to only call `Write` with full lines.  This can be composed with a `PrefixWriter` to reduce interleaving.
    
    We can still get interleaving, as the call to `Write` is not atomic, however this is a practical improvement (without coordination like locking).
    
    Test Plan:
    Run this test program and see that there is less (zero) interleaving.
    
    ```
    package main
    
    import (
    	"fmt"
    	"os"
    	"sync"
    
    	"github.com/grailbio/base/iofmt"
    )
    
    func main() {
    	const (
    		Nwriters = 20
    		Nlines   = 100
    	)
    	var wg sync.WaitGroup
    	wg.Add(Nwriters)
    	for i := 0; i < Nwriters; i++ {
    		i := i
    		go func() {
    			defer wg.Done()
    			pfx := fmt.Sprintf("writer-%02d: ", i)
    			w := iofmt.PrefixWriter(iofmt.LineWriter(os.Stdout), pfx)
    			// w := iofmt.PrefixWriter(os.Stdout, pfx) // Interleaves!
    			for j := 0; j < Nlines; j++ {
    				line := fmt.Sprintf("line %03d\n", j)
    				if _, err := w.Write([]byte(line)); err != nil {
    					fmt.Fprintf(os.Stderr, "writer-%02d error: %v\n", i, err)
    					return
    				}
    			}
    		}()
    	}
    	wg.Wait()
    }
    ```
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D57169
    
    fbshipit-source-id: 7091742
    jcharum authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    1141dc7 View commit details
    Browse the repository at this point in the history
  28. [DOPS-1819] Add fatal log levels to github.com/grailbio/base/common/log

    Summary:
    Saw that we were missing Fatal log levels so I thought I would add them.
    
    Not a great way to test as zap calls os.exit under the hood.
    
    https://github.com/uber-go/zap/blob/c23abee72d197be00f17816e336aca5c72c6f26a/logger_test.go#L145-L169
    
    They do some work under the hood to stub out the exit and do some assertions.  Unsure about repeating it here.
    
    Reviewers: O63 logger, noah
    
    Reviewed By: O63 logger, noah
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D57785
    
    fbshipit-source-id: 8b84ae0
    Daniel Borcherding authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    51cc667 View commit details
    Browse the repository at this point in the history
  29. reflow/log: Remove dependency onto this target from non-reflow packages

    Summary:
    Various non-reflow packages seem to depend on `reflow/log`.
    Add `log.Errorf` to `grailbio/base/log` and migrate to it instead.
    
    Test Plan: Unit tests
    
    Reviewers: O17 Instruments Service, byang
    
    Reviewed By: O17 Instruments Service, byang
    
    Differential Revision: https://phabricator.grailbio.com/D58262
    
    fbshipit-source-id: 625bd91
    swami-m authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    a129973 View commit details
    Browse the repository at this point in the history
  30. base/cloud/ec2util: Add a reliable way to get EC2 instance identity d…

    …ocument
    
    Summary:
    Add a utility to retrieve EC2 instance identity document reliably
    and once per process.  This addresses errors like the ones seen in SYSINFRA-172
    in all the places where we make this call.
    
    Test Plan:
    Unit tests.
    
    All bazel tests passed:
    ```
    (21:12:20) INFO: Elapsed time: 2105.840s, Critical Path: 1484.53s
    (21:12:20) INFO: 6318 processes: 1182 remote cache hit, 5136 processwrapper-sandbox.
    (21:12:20) INFO: Build completed successfully, 6138 total actions
    //R/grailbiostat:check                                          (cached) PASSED in 28.8s
    //R/grailbiostat:test                                           (cached) PASSED in 2.4s
    //R/graillookupr:check                                          (cached) PASSED in 24.0s
    //R/graillookupr:test                                           (cached) PASSED in 1.6s
    //R/grailtumorbiologyr:check                                    (cached) PASSED in 31.7s
    ...
    //go/src/grail.com/pipeline/analyse:go_default_test                      PASSED in 8.8s
      Stats over 6 runs: max = 8.8s, min = 6.5s, avg = 7.4s, dev = 0.8s
    //go/src/grail.com/pipeline/labagent:go_default_test                     PASSED in 75.7s
      Stats over 6 runs: max = 75.7s, min = 12.5s, avg = 36.5s, dev = 20.7s
    
    Executed 612 out of 1498 tests: 1498 tests pass.
    (21:12:20) INFO: Build completed successfully, 6138 total actions
    ```
    
    The `bazel` buildkite pipeline is not able to complete despite passing tests and keeps failing,
    possibly due to: https://jira.ti-apps.aws.grail.com/browse/DOPS-1763
    
    Reviewers: ghorrell, joshnewman
    
    Reviewed By: ghorrell, joshnewman
    
    Subscribers: jcharumilind, dnicolaou, pboyapalli
    
    Differential Revision: https://phabricator.grailbio.com/D58036
    
    fbshipit-source-id: 84447e0
    swami-m authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    2f27eb8 View commit details
    Browse the repository at this point in the history
  31. base/s3util: Refactor S3 to S3 object copying code to a common utility

    Summary:
    Move the code in reflow which does direct S3 object transfer (ie, without streaming data).
    
    The new `s3util` package supports the ability to copy objects across buckets in S3
    and handle the copying either as a single call or as a multi-part copy depending
    on the size of the source object (passed by the caller).
    
    The package also has utilities to help interpret AWS S3 errors for appropriate handling.
    
    Test Plan: Unit and integration tests
    
    Reviewers: sbagaria
    
    Reviewed By: sbagaria
    
    Subscribers: pboyapalli, ghorrell, sbanville, dnicolaou
    
    Differential Revision: https://phabricator.grailbio.com/D58750
    
    fbshipit-source-id: 4d90b37
    swami-m authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    509ccf9 View commit details
    Browse the repository at this point in the history
  32. base/simd: FindNaNOrInf

    Summary:
    Data validation is still a bit slower than we'd like.  This adds an
    assembly function which takes advantage of the bitwise representation
    of float64s to check 16 float64s at a time, by looking at just the two
    exponent-containing bytes of each float64.
    
    The combination of the microbenchmark and ValidateMulticlassInputs
    benchmark results suggest that further improvements in this function
    (e.g. AVX-512) won't make much of a difference to the latter.
    
    [BXDS-405]
    
    Test Plan:
    Unit test and microbenchmark added.  Microbenchmark speedup is ~6-8x
    with AVX2.  grail.com/learning tests pass.
    
    ValidateMulticlassInputs before:
    BenchmarkValidateMulticlassInputs/10_10-64  5604034  214 ns/op
    BenchmarkValidateMulticlassInputs/20000_10000-64  3  373117073 ns/op
    after:
    BenchmarkValidateMulticlassInputs/10_10-64  7297417  164 ns/op
    BenchmarkValidateMulticlassInputs/20000_10000-64  8  133477407 ns/op
    
    Reviewers: jschellenberger, kdavydov
    
    Reviewed By: jschellenberger, kdavydov
    
    Subscribers: joshnewman, afields, cchang, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D59653
    
    fbshipit-source-id: 3cda06f
    Christopher Chang authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    6d4fd1a View commit details
    Browse the repository at this point in the history
  33. [SYSINFRA-367,SYSINFRA-185] base/limiter: Add a batch limiter

    Summary:
    Add the ability to apply limits on a "batch" API call which allows the user
    to make individual API calls across multiple goroutines.
    
    This implementation will batch calls together and limit the number of outgoing
    (batch) calls based on the `rate.Limiter` provided by the user.
    
    Note: This refers to a Jira tasks pointing to throttled AWS API calls like `DescribeInstances` and `DescribeSpotInstanceRequests`
    and it is not straightforward to simply batch the calls together.
    
    Test Plan:
    Unit tests.
    
    The log of unit tests show that the (approximate) ordering is maintained:
    ```
    === RUN   TestSubmit
    ​--- PASS: TestSubmit (1.05s)
        batch_test.go:191: batch 0 (after 0s): [0]
        batch_test.go:191: batch 1 (after 101ms): [5 9 1 2 3 4 6 7 8]
        batch_test.go:191: batch 2 (after 100ms): [15 16 18 20 10 11 13 19 12 14 17]
        batch_test.go:191: batch 3 (after 109ms): [21 22 24 25 29 30 31 23 26 27 28]
        batch_test.go:191: batch 4 (after 100ms): [37 39 32 35 36 40 33 34 38]
        batch_test.go:191: batch 5 (after 102ms): [43 44 46 47 50 41 42 45 48 49]
        batch_test.go:191: batch 6 (after 100ms): [51 53 60 61 58 59 52 54 55 56 57]
        batch_test.go:191: batch 7 (after 110ms): [62 65 66 67 68 69 70 71 63 64]
        batch_test.go:191: batch 8 (after 106ms): [75 79 80 72 73 77 78 81 82 74 76]
        batch_test.go:191: batch 9 (after 103ms): [91 93 83 89 90 87 88 92 84 85 86]
        batch_test.go:191: batch 10 (after 100ms): [99 94 95 96 97 98]
    === RUN   TestWithMax5
    ​--- PASS: TestWithMax5 (2.03s)
        batch_test.go:191: batch 0 (after 0s): [0]
        batch_test.go:191: batch 1 (after 100ms): [2 3 4 5 1]
        batch_test.go:191: batch 2 (after 100ms): [9 10 6 7 8]
        batch_test.go:191: batch 3 (after 101ms): [11 12 13 14 15]
        batch_test.go:191: batch 4 (after 100ms): [16 17 18 19 20]
        batch_test.go:191: batch 5 (after 100ms): [21 22 23 24 25]
        batch_test.go:191: batch 6 (after 102ms): [26 27 28 29 30]
        batch_test.go:191: batch 7 (after 100ms): [34 35 31 32 33]
        batch_test.go:191: batch 8 (after 102ms): [36 37 38 39 40]
        batch_test.go:191: batch 9 (after 102ms): [42 43 44 45 41]
        batch_test.go:191: batch 10 (after 102ms): [46 47 48 49 50]
        batch_test.go:191: batch 11 (after 101ms): [53 54 55 51 52]
        batch_test.go:191: batch 12 (after 101ms): [57 58 59 60 56]
        batch_test.go:191: batch 13 (after 101ms): [61 62 63 64 65]
        batch_test.go:191: batch 14 (after 100ms): [66 67 68 69 70]
        batch_test.go:191: batch 15 (after 102ms): [73 74 75 71 72]
        batch_test.go:191: batch 16 (after 101ms): [77 78 79 80 76]
        batch_test.go:191: batch 17 (after 101ms): [82 83 84 85 81]
        batch_test.go:191: batch 18 (after 108ms): [86 87 88 89 90]
        batch_test.go:191: batch 19 (after 106ms): [91 92 93 94 95]
        batch_test.go:191: batch 20 (after 104ms): [96 97 98 99]
    === RUN   TestWithMax8
    ​--- PASS: TestWithMax8 (1.33s)
        batch_test.go:191: batch 0 (after 0s): [0]
        batch_test.go:191: batch 1 (after 103ms): [6 7 8 1 2 3 4 5]
        batch_test.go:191: batch 2 (after 101ms): [15 16 9 10 11 12 13 14]
        batch_test.go:191: batch 3 (after 103ms): [17 18 19 20 21 22 23 24]
        batch_test.go:191: batch 4 (after 107ms): [29 30 31 32 25 26 27 28]
        batch_test.go:191: batch 5 (after 101ms): [36 37 38 39 40 33 34 35]
        batch_test.go:191: batch 6 (after 102ms): [41 42 43 44 45 46 47 48]
        batch_test.go:191: batch 7 (after 104ms): [51 52 53 54 55 56 49 50]
        batch_test.go:191: batch 8 (after 102ms): [62 63 64 57 58 59 60 61]
        batch_test.go:191: batch 9 (after 100ms): [69 70 71 72 65 66 67 68]
        batch_test.go:191: batch 10 (after 101ms): [78 79 80 73 74 75 76 77]
        batch_test.go:191: batch 11 (after 102ms): [82 83 84 85 86 87 88 81]
        batch_test.go:191: batch 12 (after 100ms): [95 96 89 90 91 92 93 94]
        batch_test.go:191: batch 13 (after 100ms): [97 98 99]
    ```
    
    Reviewers: jcharumilind, ghorrell
    
    Reviewed By: ghorrell
    
    Differential Revision: https://phabricator.grailbio.com/D59811
    
    fbshipit-source-id: f06cbc9
    swami-m authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    59ff810 View commit details
    Browse the repository at this point in the history
  34. [SYSINFRA-367,SYSINFRA-185] base/limiter: Prevent panics if there are…

    … no ids to claim
    
    Summary:
    Remove a panic when there are no ids to claim.
    This can happen with a liberal limiter, as one of the goroutines can claim the ID,
    and the other ones won't find anything to claim (since the limiter allowed them to make calls).
    
    @jirgon found this in the nightly tests:
    ```
    2021/06/05 14:04:34 ec2cluster: [i-0600e7eeccbe97b54]: terminating: pending -> shutting-down
    panic: Do(i-0600e7eeccbe97b54): this is a bug - no ids for batch call
    ```
    
    Test Plan:
    Unit tests.
    
    With just the changes to `batch_test.go`, the unit test fails:
    ```
    > go test -run SometimesDedup
    panic: Do(test): this is a bug - no ids for batch call
    ```
    
    With the changes to `batch.go`, the unit tests pass:
    ```
    > go test -race -test.count 10000 -run SometimesDedup
    PASS
    ok  	github.com/grailbio/base/limiter	7.475s
    
    ```
    
    Reviewers: ghorrell
    
    Reviewed By: ghorrell
    
    Subscribers: jirgon
    
    Differential Revision: https://phabricator.grailbio.com/D60074
    
    fbshipit-source-id: d0d9e5f
    swami-m authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    e0a902c View commit details
    Browse the repository at this point in the history
  35. log: add ability to set default fields

    Summary: Add ability to set logger default fields, which is a list of key-value pairs to be included in every log message.
    
    Test Plan: Add unit test.
    
    Reviewers: rhyun
    
    Reviewed By: rhyun
    
    Subscribers: O63 logger, nyap, rhyun, jkimmel, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D59945
    
    fbshipit-source-id: 81c7cea
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    5050078 View commit details
    Browse the repository at this point in the history
  36. grail-fuse: remove the userspace directory cache

    Summary:
    Makes more use of the kernel's filesystem caching by using the kernel's entry
    and attribute cache times during both listing and individual lookup. Removing
    the cache fill and piece-wise invalidation simplifies gfs code. It also may be
    better-behaved in memory usage because the kernel can choose to drop caches
    under memory pressure (though this hasn't been a practical problem so far).
    
    To avoid O(n) separate lookup requests when n entries are returned from readdir,
    we implement readdirplus to return stat information during listing. This
    requires [a small but significant (public API change) patch](hanwen/go-fuse@v2.0.2...josh-newman:v2.0.2-grail.0) to the upstream
    go-fuse library. I've modified go.mod to use a fork for now and we can update
    if/when our changes are landed upstream.
    
    Background:
    
    Previously, gfs populated a cache with directory entries listed from S3. This
    cache was in the "critical path" of both readdir and lookup requests, even
    though the latter may only need one child. For large directories
    (100k+ children) listing could take many minutes, basically blocking usage of
    subdirectories (and also hanging the user's process, since it blocked on the
    file operation and gfs ignored interrupts).
    
    D60071 changed the lookup path on cache miss to directly query S3, allowing the
    user to make progress in huge directories (for example, `cd` directly to a
    known child). However, this introduced potential cache inconsistency issues
    because a lookup followed by a listing may not match (this is allowed, but
    may be confusing).
    
    Rather than try to address the inconsistencies, adding complexity and subtle
    concurrency, this revision changes philosophy a bit to try to make things
    bearably fast reading directly from S3. We can never guarantee consistency with
    S3 itself, and that inconsistency may end up being more confusing for users and
    harder to work around in applications (than latency).
    
    D60112 fixed the interruption problem relatively easily and is included here.
    
    Test Plan:
    Ran existing integration-style tests that set up a FUSE mount and run various
    operations: github.com/grailbio/base/cmd/grail-fuse/gfs.
    
    Also mounted the S3 filesystem on an EC2 instance (Linux 4.15) and manually
    ran and timed various operations (`ls` at root, in huge directories, in small
    children under those huge directories, etc.) and watched the debug logs.
    Listing huge directories seems considerably faster than before (in the first,
    uncached case) presumably because of readdirplus. Outside of huge directories,
    normal UX (`cd` tab-complete, `ls`, `ls -l`, git PS1, etc.) are noticeably
    slower than on local SSD (of course), but mostly take a couple of seconds
    (often < 1) for first operation and very fast (kernel caching) after that.
    It can already work very well for many use cases.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D60203
    
    fbshipit-source-id: 37e6950
    josh-newman authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    42c6f59 View commit details
    Browse the repository at this point in the history
  37. grail-fuse: implement lseek

    Summary: Previously, `grep` detected gfs files as binary, seemingly due to lack of seek support (suggested by `strace`).
    
    Test Plan: Searched an S3 file successfully with `grep`.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D60270
    
    fbshipit-source-id: c3dfa72
    josh-newman authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    9f24874 View commit details
    Browse the repository at this point in the history
  38. base/grail: fix call depth passed to vlog

    Summary:
    Fix off-by-one error in call depth passed to `vlog` log functions.  The existing code caused us to log the file/line one level too far up the stack, i.e. the caller of the caller of the logging function.
    
    Given this program in `main.go`:
    ```lang=go
    package main
    
    import (
    	"github.com/grailbio/base/grail"
    	"github.com/grailbio/base/log"
    )
    
    func main() {
    	grail.Init()
    	log.Print("hello world")
    }
    ```
    
    Output before:
    ```
    I0611 00:51:39.351070  100712 proc.go:203] hello world
    ```
    
    Output after:
    ```
    I0611 00:51:45.433548  101316 main.go:10] hello world
    ```
    
    Test Plan: Run the test program in the summary, and see the correct output.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D60347
    
    fbshipit-source-id: e501624
    jcharum authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    fddb7b9 View commit details
    Browse the repository at this point in the history
  39. ensemble: [CPP-2420] added logging for order.Create(), order.Accessio…

    …n(), and update.Update()
    
    Summary: Added logging and updated existing logs for the Create() and Accession() functions in ensemble/server/service/order/order.go and the Update() function in ensemble/server/service/order/update.go.
    
    Test Plan: All unit tests pass.
    
    Reviewers: fdegiuli, adharwadkar, ssoria, O56 Ensemble backend, achandra, achew, O63 logger
    
    Reviewed By: fdegiuli, O56 Ensemble backend, achew, O63 logger
    
    Subscribers: noah, smahadevan, achew
    
    Differential Revision: https://phabricator.grailbio.com/D59599
    
    fbshipit-source-id: 4d9216f
    Ryan Hyun authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    6b034e4 View commit details
    Browse the repository at this point in the history
  40. base/must: add call depth argument to must.Func

    Summary: Add call depth argument to `must.Func`.  The default implementation passes a depth to `log.Output` that will indicate the caller of the `must.{Nil,Nilf,True,etc.}` function.
    
    Test Plan:
    Run added unit test.
    
    Run this trivial program, and see that the logged message attributes my source file:
    ```lang=go
    package main
    
    import (
    	"github.com/grailbio/base/log"
    	"github.com/grailbio/base/must"
    )
    
    func main() {
    	log.SetFlags(log.LstdFlags | log.Llongfile)
    	must.True(false, "show me my file")
    }
    ```
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D60735
    
    fbshipit-source-id: f1262e6
    jcharum authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    488a57c View commit details
    Browse the repository at this point in the history
  41. s3file/s3transport: check for nil before cleaning up request body

    Summary: Per AWS docs, on the client side body may be nil (for example, for GET).
    
    Test Plan: Perhaps Joe can verify the fix.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: jmarcus, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D60870
    
    fbshipit-source-id: 2a65942
    josh-newman authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    27580ae View commit details
    Browse the repository at this point in the history
  42. [SYSINFRA-478] move spotfeed to grailbio/base

    Summary:
    Move the cloud/spotfeed package to grailbio/base. The spotfeed package
    is used to query for and parse spot feed data files that describe EC2
    spot instance usage over some time period.
    
    Test Plan: Refactor, ensure all unit tests pass.
    
    Reviewers: smahadevan
    
    Reviewed By: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D60885
    
    fbshipit-source-id: 00a8065
    georgehorrell authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    8fa363c View commit details
    Browse the repository at this point in the history
  43. v.io: upgrade v0.1.17

    Summary:
    Upgrade v.io to v0.1.17 to include RPC AWS X-Ray Tracing changes.
    
    After this diff lands, all Vanadium services will be able to have their RPC calls traced with AWS X-Ray. We will run an X-Ray daemon on each Kubernetes node to forward the traces to AWS.
    
    This is an example of how a service would onboard to RPC AWS X-Ray traces: D60760.
    
    Test Plan: Deploy to sandbox Lockbox, Ensemble, and ESignature and verify Galleri test order flow and X-Ray Traces.
    
    Reviewers: O5 pipeline, O50 galleri/communications, O56 Ensemble backend, O10 LIMS Server, O6 EDC, O3 third-party, O9 ticket-server, O28 Grailbook Infra, #security, nyap, rhuang, ecarrel, lkong, mrosen, kshashidhar, bbentson
    
    Reviewed By: O5 pipeline, O50 galleri/communications, O56 Ensemble backend, O10 LIMS Server, O6 EDC, O3 third-party, O9 ticket-server, O28 Grailbook Infra, nyap, rhuang, ecarrel, lkong, mrosen, kshashidhar, bbentson
    
    Subscribers: lkong, nyap, aeiser, joshnewman, jcharumilind, smahadevan, dnicolaou, pboyapalli, #lab_testing
    
    Differential Revision: https://phabricator.grailbio.com/D60278
    
    fbshipit-source-id: ede3db9
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    4092c24 View commit details
    Browse the repository at this point in the history
  44. [SYSINFRA-478] spotfeed: De-dup entries across versions

    Summary:
    Since spot feed data returns costs for multiple `Version`s,
    we simply de-dup across multiple versions for the same hour by using max.
    
    Test Plan: Unit tests.
    
    Reviewers: ghorrell
    
    Reviewed By: ghorrell
    
    Differential Revision: https://phabricator.grailbio.com/D61151
    
    fbshipit-source-id: 1293f65
    swami-m authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    c5908b1 View commit details
    Browse the repository at this point in the history
  45. [SCRMS-349]fix islington poller logging

    Summary: The poller was passed a logger of an incorect type.
    
    Test Plan:
    Added unit tests for new logging method
    Poller logging now works correctly:
    `{"level":"error","msg":"poller mailing-metrics-updater received an error (retry 0): bind failed to execute query: Error 1053: Server shutdown in progress\n","caller":"poller.go:93","ts":"2021-07-21T13:05:06.733193000+01:00"}`
    Previously:
    `{"level":"error","msg":"poller %s received an error (retry %d): %v\n","caller":"poller.go:93","ts":"2021-07-15T11:16:58.393824359Z","tracking-sent-mailing":0}`
    
    Reviewers: O63 logger, tule
    
    Reviewed By: tule
    
    Subscribers: tule, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D62043
    
    fbshipit-source-id: 16c2597
    Paddy Steed authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    09e1632 View commit details
    Browse the repository at this point in the history
  46. traverse: Run worker on local thread when Limit == 1 or n == 1

    Summary:
    [BXDS-649] When T.Each() is called on single thread or with a single work unit,
    run that item locally.  This makes debugging easier and may be marginally faster.
    
    Test Plan: existing unit tests cover this case already
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: kdavydov, jcharumilind, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D62395
    
    fbshipit-source-id: 25a0eb3
    Jan Schellenberger authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    dee63e8 View commit details
    Browse the repository at this point in the history
  47. ticket-server: switch from using rsa-sha to rsa-sha2-256

    Summary:
    With openssh 8.2 rsa-sha is no longer accepted by default.
    Switch the SSH signing alg used to sha-256.
    DOPS-2228
    
    Test Plan:
    Verified via ssh-keygen -L
    Verified by deploying the ticket-server to SBX env, and running grail-ssh against that service.
    The generated cert from the above call included the `(using rsa-sha2-256)` flag
    
    Reviewers: #shared_infrastructure, joshnewman, akshay.subram
    
    Reviewed By: #shared_infrastructure, joshnewman, akshay.subram
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D62507
    
    fbshipit-source-id: a575b4a
    Alex Eiser authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    e2f65be View commit details
    Browse the repository at this point in the history
  48. [BXDS-652] classifier-evaluation: use vlog outputter with base/log

    Summary:
    Use a `github.com/grailbio/base/log.Outputter` that is backed by `vlog`.  This has two effects:
    - Makes log line formats more consistent, as `classifier-evaluator` generally uses `vlog`.
    - Exposes the ability to configure debug logging.  Previously, there was no way to enable `github.com/grailbio/base/log` debug logging.
    
    Test Plan:
    Run a Chiron classifier with debug logging enabled, e.g.:
    ```
    bazel run //python/classifier/chiron/examples/sexandage:classifier-evaluation-chiron-tfexec -- evalTrailer --v=1 ...
    ```
    
    See debug logs.
    
    Reviewers: O52 chiron infrastructure, joshnewman
    
    Reviewed By: O52 chiron infrastructure, joshnewman
    
    Subscribers: soheil, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D62473
    
    fbshipit-source-id: f70fc5f
    jcharum authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    441a684 View commit details
    Browse the repository at this point in the history
  49. base/tsv: support embedded structs

    Summary:
    Embedded structs can help compose different "table" types while reading
    and writing. The current workaround is to copy all the fields into a new
    flattened struct.
    
    Test Plan: Unit tests included for reading and writing.
    
    Reviewers: joshnewman, jcharumilind
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D62961
    
    fbshipit-source-id: a1f6926
    Siddhartha Bagaria authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    c4986aa View commit details
    Browse the repository at this point in the history
  50. [SYSINFRA-574] pipeline/rds: fixes to increase db-reader role ttl

    Summary:
    This diff is a follow up to D62608 and fixes an oversight from that diff: we
    need to update the `max_session_duration` value of `reader_role` in the
    terraform config for the updated TTL to be allowed.
    
    Without this, we were seeing this error:
    ```
    ValidationError: The requested DurationSeconds exceeds the MaxSessionDuration set for this role.
    	status code: 400, request id: 208130ba-469d-4601-b126-f5ded356e83a
    ```
    
    Furthermore, in D62608, I didn't realize that there were separte ticket configs
    for `users` and `engusers`, this diff also updates the configs in `engusers` to
    match what was done in D62608.
    
    Test Plan:
    Ran `bazel run :terraform init && bazel run :terraform plan` in:
    
    $GRAIL/ops/terraform/pipeline/grail-sysinfra-eng/rds/access
    {P2063}
    
    $GRAIL/ops/terraform/pipeline/msk/rds/access
    {P2064}
    
    Reviewers: jirgon, pbohannon, tcho, O9 ticket-server
    
    Reviewed By: jirgon, tcho, O9 ticket-server
    
    Differential Revision: https://phabricator.grailbio.com/D62995
    
    fbshipit-source-id: 79d31b7
    prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    ea4b4f4 View commit details
    Browse the repository at this point in the history
  51. Revert "[SYSINFRA-574] pipeline/rds: fixes to increase db-reader role…

    … ttl"
    
    Summary:
    This reverts commit 79d31b7ce5eaca3291ee9cc9cd993b724caab000.
    
    As noted in [this thread](https://grailbio.slack.com/archives/CAA39NK7Y/p1628541490082300), when D62995 was landed with `arc land`, it somehow included a revert of a lot of previous commits. It seems like some problem occurred during the merge phase of `arc land`, but it didn't display any error messages.
    
    I’ve added the authors of all affected diffs as reviewers to the revert diff.
    
    {F1455817}
    
    Test Plan: N/A
    
    Reviewers: O9 ticket-server, O58 Shipment Service owner, O60 Accounts Service Backend, O61 Portal, apaniagua, amitchell, cdonohoe, smahadevan, chsu, sbagaria, asoni, jirgon, adharwadkar
    
    Reviewed By: O9 ticket-server, O58 Shipment Service owner, O60 Accounts Service Backend, O61 Portal, apaniagua, amitchell, cdonohoe, smahadevan, chsu, sbagaria, asoni, jirgon, adharwadkar
    
    Subscribers: asoni, smahadevan, dnicolaou
    
    Differential Revision: https://phabricator.grailbio.com/D63004
    
    fbshipit-source-id: 347d7f7
    prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    9334ee7 View commit details
    Browse the repository at this point in the history
  52. log: add SetLoggerConfig and SetLoggerLevel

    Summary: Add SetLoggerConfig and SetLoggerLevel to allow users to configure logger settings.
    
    Test Plan: Update unit tests.
    
    Reviewers: O63 logger, gbiddison
    
    Reviewed By: gbiddison
    
    Subscribers: #security, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D63292
    
    fbshipit-source-id: 995a291
    Noah Tseng authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    3abe13f View commit details
    Browse the repository at this point in the history
  53. ticket-server: Add type-safe helpers

    Summary:
    This adds helpers for all of the ticket types exposed by
    `github.com/grailbio/base/security/ticket` plus byte slices and strings
    (which are normally accessed via `GenericTicket`). In addition to taking
    care of casting the `ticket.Ticket` interface to the appropriate type
    (and handling errors when this fails), the API is designed to work with
    a pattern observed in the ticket paths for microservices deployed in
    multiple Kubernetes clusters.
    
    It seems that a common pattern for ticket paths is
    `tickets/aws-grail-eng-$env/$service/$key` where the same $service will
    access one or more tickets which share a prefix that varies by
    environment / cluster name. As it stands, the entire path must be
    specified for each ticket as an environment variable in the Helm charts
    (and is usually passed in as a flag). Instead, it should be possible to
    pass in just the shared prefix `tickets/aws-grail-eng-$env/service` and
    allow the service (or this library) to construct the rest of the key.
    
    Both approaches are handled by the helpers by using a variadic argument for
    the ticket path. This pattern seems to be broken by the new `preprod`
    tickets, however, so perhaps this will not be used in practice.
    
    The new API looks like
    
    ```
    myTicketString, err := ticket.Client.GetString(v23context, "path/to/ticket")
    return myTicketString, err
    ```
    
    instead of
    
    ```
    tsClient := ticket.TicketServiceClient("path/to/ticket")
    tick, err := tsClient.Get(ctx)
    if err != nil {
      return "", err
    }
    generic, ok := tick.(ticket.TicketGenericTicket)
    if !ok {
      return "", fmt.Errorf("uh oh")
    }
    return string(generic.Value.Data), nil
    ```
    
    Test Plan:
      - Unit tests cover type casting and some of the error handling.
      - Integrated into the `accesshope` service and was able to get
        tickets. This will come in a follow up diff if this is accepted.
    
    Reviewers: bbentson, zpallin, noah
    
    Reviewed By: noah
    
    Differential Revision: https://phabricator.grailbio.com/D62369
    
    fbshipit-source-id: 3881f3c
    Kai Wells authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    fcfdee7 View commit details
    Browse the repository at this point in the history
  54. base/spotadvisor: new library to provide AWS Spot Advisor data

    Summary:
    This diff introduces a new `spotadvisor` library which fetches AWS Spot Advisor
    data and provides an interface to interact with the data.
    
    Fix [SYSINFRA-621](https://jira.ti-apps.aws.grail.com/browse/SYSINFRA-621)
    
    Test Plan: Unit tests
    
    Reviewers: smahadevan, ghorrell
    
    Reviewed By: smahadevan, ghorrell
    
    Subscribers: joshnewman, jcharumilind
    
    Differential Revision: https://phabricator.grailbio.com/D63711
    
    fbshipit-source-id: 52ddbfd
    prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    e726e19 View commit details
    Browse the repository at this point in the history
  55. base/file: file.Create with dir path should error

    Summary:
    Currently, when writing to a path on a local filesystem that is an
    existing directory, the implementation fails at the f.Close() step
    trying to rename the tmp file to the given path.
    
    Test Plan: Tested manually with a small program.
    
    Reviewers: jcharumilind, joshnewman
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D63880
    
    fbshipit-source-id: 62c0cb6
    Siddhartha Bagaria authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    f0c1f7a View commit details
    Browse the repository at this point in the history
  56. fix error message for opening namespace and token files

    Summary:
    When running `grail-access` with either `-namespace=unknownfile` or `-token=unknownfile` the error provided referenced "opening ca.crt". This could lead to confusion that the flags are not being correctly parsed.
    
    This change fixes the error messages.
    
    Test Plan: Ran `grail-access` with the above commands and confirmed that the appropriate error message is shown
    
    Reviewers: O68 security, noah
    
    Reviewed By: O68 security, noah
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D63956
    
    fbshipit-source-id: a6a22d8
    rlowe-grail authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    b58bbb9 View commit details
    Browse the repository at this point in the history
  57. base/file: improved documentation for Create

    Summary: Following up on a comment in D63880.
    
    Test Plan: No tests needed.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D63933
    
    fbshipit-source-id: 59e8237
    Siddhartha Bagaria authored and prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    dde5e30 View commit details
    Browse the repository at this point in the history
  58. reflow/tool: add interrupt probabilities to ec2instances tool

    Summary:
    Uses the recently added `base/spotadvisor` library to provide spot instance
    interrupt probabilities in the output of the `reflow ec2instances` tool.
    
    Fix [SYSINFRA-621]
    
    Test Plan:
    Built a reflow binary and ran `reflow ec2instances`:
    ```
    type              mem     cpu ebs_max price interrupt prob cpu features                        flags
    c5n.4xlarge       42.00   16  593.75  0.86  > 20%          {intel_avx,intel_avx2,intel_avx512} {ebs}
    c5n.9xlarge       96.00   36  1187.50 1.94  5-10%          {intel_avx,intel_avx2,intel_avx512} {ebs}
    c5n.large         5.25    2   593.75  0.11  10-15%         {intel_avx,intel_avx2,intel_avx512} {ebs}
    c5n.xlarge        10.50   4   593.75  0.22  O-5%           {intel_avx,intel_avx2,intel_avx512} {ebs}
    cc2.8xlarge       60.50   32  0.00    2.00  N/A            {}                                  {old}
    cr1.8xlarge       244.00  32  0.00    3.50  N/A            {}                                  {old}
    d2.2xlarge        61.00   8   125.00  1.38  > 20%          {intel_avx,intel_avx2}              {ebs}
    d2.4xlarge        122.00  16  250.00  2.76  > 20%          {intel_avx,intel_avx2}              {ebs}
    ...
    ```
    
    Reviewers: smahadevan
    
    Reviewed By: smahadevan
    
    Subscribers: dnicolaou
    
    Differential Revision: https://phabricator.grailbio.com/D63866
    
    fbshipit-source-id: 44739e1
    prb2 committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    66da27c View commit details
    Browse the repository at this point in the history

Commits on Jun 2, 2022

  1. base/spotadvisor: added new logger interface and GetMaxInterruptProba…

    …bility helper
    
    Summary:
    This diff adds a new `SimpleLogger` interface which makes it easier to use
    `SpotAdvisor` with a wide variety of logger implementations. The default
    `log.Logger`, `grailbio/base/log.Logger` and `grailbio/relfow/log.Logger`
    already implement `SimpleLogger`.
    
    Also, a new `GetMaxInterruptProbability` function was added to complement the
    pre-existing `GetInterruptRange`.
    
    Fix [SYSINFRA-621]
    
    Test Plan: Unit tests.
    
    Reviewers: smahadevan, ghorrell
    
    Reviewed By: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D64549
    
    fbshipit-source-id: 82af4b3
    prb2 authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    8449a86 View commit details
    Browse the repository at this point in the history
  2. log: improve error messaging

    Summary: Improve error message for `NewLoggerWithDefaultFields()`. Make it different from the dangling key error message.
    
    Test Plan: Unit tests.
    
    Reviewers: O63 logger, fdegiuli
    
    Reviewed By: O63 logger, fdegiuli
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D64478
    
    fbshipit-source-id: 9f735e1
    Noah Tseng authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    68f6927 View commit details
    Browse the repository at this point in the history
  3. grail-fuse: fix bug in lookup

    Test Plan:
    Before:
        $ go run . /tmp/s3 &
        [1] 6084
    
        $ grail-file ls -R s3://grail-joshnewman-test/test3/
        s3://grail-joshnewman-test/test3/parentd/childd/empty
    
        $ ls /tmp/s3/grail-joshnewman-test/test3/
        ls: cannot access '/tmp/s3/grail-joshnewman-test/test3/': No such file or directory
    
        $ ls /tmp/s3/ >/dev/null; ls /tmp/s3/grail-joshnewman-test/ >/dev/null; ls /tmp/s3/grail-joshnewman-test/test3/
        parentd
    
    The first `ls` fails because s3://grail-joshnewman-test had a variety of other content (besides test3/), so the loop takes the first `break`. The second `ls` series benefits from kernel inode caching (I think); I probably tab-completed through my manual tests (like D60203) so I didn't notice this (broad, serious) bug.
    
    After:
        $ go run . /tmp/s3 &
        [1] 7557
    
        $ ls /tmp/s3/grail-joshnewman-test/test3/
        parentd
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D61247
    
    fbshipit-source-id: 2a58bdc
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    99c16dd View commit details
    Browse the repository at this point in the history
  4. base/ioctx: add context-ful stdlib analogues

    Test Plan: Inspect interfaces for stdlib likeness.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D65820
    
    fbshipit-source-id: 806613a
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    175371a View commit details
    Browse the repository at this point in the history
  5. base/sync: add loadingcache

    Test Plan: New unit tests.
    
    Reviewers: jcharumilind, smahadevan
    
    Reviewed By: jcharumilind, smahadevan
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D65810
    
    fbshipit-source-id: 18a1d6f
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    b6d6aca View commit details
    Browse the repository at this point in the history
  6. base/file: add fsnode

    Test Plan: Some new unit tests.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D65834
    
    fbshipit-source-id: 8e544af
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    df74e52 View commit details
    Browse the repository at this point in the history
  7. base/file: add fsnodefuse

    Test Plan: Only manually using experimental binaries.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D65836
    
    fbshipit-source-id: e9493d6
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    cbad2ce View commit details
    Browse the repository at this point in the history
  8. cmd/biofs: add with initial tidy data source

    Test Plan:
    Ran on Linux, browsed directories, queried sqlite DB.
    
    Ran on macOS, saw error.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D65861
    
    fbshipit-source-id: fa32f0f
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    2e37a7a View commit details
    Browse the repository at this point in the history
  9. base/log: fix comment

    Summary: Typo from D58262, I think.
    
    Test Plan: None.
    
    Reviewers: smahadevan
    
    Reviewed By: smahadevan
    
    Subscribers: byang
    
    Differential Revision: https://phabricator.grailbio.com/D65882
    
    fbshipit-source-id: d48838e
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    9a1d59f View commit details
    Browse the repository at this point in the history
  10. [BENG-41] grail-access: use factory in test

    Summary: Post Go and dependency upgrades, there's an issue when no factory is specified. Apply the change before in a compatible way to minimize upgrade disruptions.
    
    Test Plan: - Run test with Go 1.13 and 1.17 and make sure it passes
    
    Reviewers: dborcherding, anguyen, sdunn, gvitta, bbentson
    
    Reviewed By: bbentson
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66079
    
    fbshipit-source-id: a13c896
    Boran Car authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    3f7469c View commit details
    Browse the repository at this point in the history
  11. base/file: fsnode testing tools

    Summary: First used in D66026.
    
    Test Plan: Ran that revision's tests.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66078
    
    fbshipit-source-id: f119a67
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    53b3d93 View commit details
    Browse the repository at this point in the history
  12. base/file/addfs: per-node transformations

    Summary: Complementing D65999's whole-directory ones.
    
    Test Plan: New unit tests.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66026
    
    fbshipit-source-id: 1235d5f
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    2a979ca View commit details
    Browse the repository at this point in the history
  13. [BENG-34] security/ticket: add CN to SAN

    Summary:
    Newer versions of Go have deprecated and removed CN and advise:
    `x509: certificate relies on legacy Common Name field, use SANs instead`
    so follow that advice and add CN to SAN in generic case.
    
    Reviewers: dborcherding, sdunn, bbentson, anguyen, gvitta, pboyapalli, aeiser, O9 ticket-server, smahadevan
    
    Reviewed By: bbentson, aeiser, O9 ticket-server
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66398
    
    fbshipit-source-id: 6609f98
    Boran Car authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    038b391 View commit details
    Browse the repository at this point in the history
  14. [BENG-40] ec2util: future-proof aws identitiy document verify

    Summary:
    AWS Identity Documents are signed with DSA-with-SHA1 signatures, and DSA is
    removed from x509/crypto as of Go 1.16. This follows an approach done
    by hashicorp/vault#12340, by forking in
    https://github.com/mozilla-services/pkcs7 and applying the DSA fix
    mozilla-services/pkcs7#50.
    
    Test Plan: - Tested Bazel build and go build from within the folder
    
    Reviewers: aeiser, dborcherding, sdunn, anguyen, gvitta, bbentson
    
    Reviewed By: dborcherding, sdunn
    
    Subscribers: jcharumilind, dnicolaou, pboyapalli, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66326
    
    fbshipit-source-id: cafa39b
    Boran Car authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    53676e2 View commit details
    Browse the repository at this point in the history
  15. DOPS-2523 : support cluster a/b for eks clusters using GRAIL custom c…

    …luster a/b logic
    
    Summary:
    I have developed a cluster a/b paradigm that essentially allows us to launch eks clusters in parallel using the same VPC, however the permissions are still treated separately in vanadium, meaning vdlconfigs must reference unique blessings for each cluster.
    
    With this logic provided as well as the tests to support it, I can generate unique blessings for cluster a/b enabled EKS clusters and the existing vdlconfig permissions should be able to remain the same. That is because when there is a cluster with a blessing extension "*:test:service", and we switch to using cluster "*:test-a:service", the blessing will now be written with the extension "*test:service:a". Ultimately, this means a ticket vdlconfig can reference just "*:test:service" and a principal with either of the aforementioned blessing extensions will be able to access the ticket. Which also means that I can launch the new a/b clusters and not have to worry about making a mess with permissions or creating human-error-prone instructions on how to add multiple blessing extensions to your vdlconfigs to provide access for your k8s serviceAccounts...
    
    I have somewhat lazily mocked out the more complicated aws api client portions of the work, which could later be fleshed out if need be, especially if an *urgent* discovery is made that these changes don't work for some reason. I borrowed specifically from existing code and other than moving it around to better mock it is unchanged, except for how the cluster extensions are determined, which has been outsourced to a function conveniently named for that purpose.
    
    I have also borrowed some test logic from grail-access and moved it into a testutil directory inside of ticket-server. This way the tests, which seem entirely relevant to ticketserver, live with the ticketserver. Both grail-access and ticket-server tests can use them from here. I put them in a unique directory to hopefully decrease load time when importing the test utilities. I did not opt to put them in our grailbio/testutil package because it was not clear this would be a good place to add a number of specific v23 dependencies when these utilities probably are intended to be lightweight.
    
    Test Plan:
    The following has already been done, but here were the steps I took:
    
    1. Launch new ticket server "testing" from local branch
    2. Launch a `grail-k8s-access` container in cpp `dev` cluster
    3. Obtain blessings from ticket-server-testing endpoint to guarantee blessings are generated normally
    4. Launch a new `grail-k8s-access` container, this time from cpp `dev-a` cluster
    5. Obtain new blessings and show that they have obtained the cluster a/b blessings format (just tacks on a `:a` to the end of the standard blessings)
    
    Output from test:
    
    ```
    ➜  grail git:(scratch/zpallin/DOPS-2523-refactor-ticket-server-k8s) bazel run //example:kubectl-dev-a -- run -i --tty test-grail-k8s-zpallin --image="434335521375.dkr.ecr.us-west-2.amazonaws.com/grail-ticket:2021-10-21.zpallin-152142.584006e5ee9-dev-dirty-6" --overrides="'{ \"spec\": { \"serviceAccount\": \"example\" }  }'" --rm -- sh
    INFO: Analyzed target //example:kubectl-dev-a (0 packages loaded, 0 targets configured).
    INFO: Found 1 target...
    Target //example:kubectl-dev-a up-to-date:
      bazel-bin/example/kubectl-dev-a
    INFO: Elapsed time: 5.927s, Critical Path: 5.24s
    INFO: 1 process: 1 internal.
    INFO: Build completed successfully, 1 total action
    INFO: Running command line: bazel-bin/example/kubectl-dev-a run -i --tty test-grail-k8s-zpallin '--image=434335521375.dkr.ecr.us-west-2.amazonaws.com/grail-ticket:2021-10-21.zpallin-152142.584006e5ee9-dev-dirty-6' '--overrides='\''{ "spec": { "serviceAccount": INFO: Build completed successfully, 1 total action
    If you don't see a command prompt, try pressing enter.
    / # grail-access -k8s -blesser=/ticket-server-testing.eng.grail.com:8102/blesser/k8s
    2021/10/25 16:17:16 INFO: Couldn't load principal from /.v23. Creating new one...
    Successfully applied new blessing:
    Public key: 98:1f:f9:8e:2b:11:10:55:85:e0:38:14:71:03:0f:8e
    ​---------------- BlessingStore ----------------
    Default Blessings                v23.grail.com:k8s:438588635244:dev:example:a
    Peer pattern                     Blessings
    ...                              v23.grail.com:k8s:438588635244:dev:example:a
    ​---------------- BlessingRoots ----------------
    Public key                                        Pattern
    98:61:28:77:eb:5f:97:7f:2c:ef:4d:1b:f1:4d:fd:c0   [v23.grail.com]
    Expires on 2022-10-25 16:17:16.754883338 +0000 UTC (in 8759h59m51.565344027s)
    ```
    
    Launching a new test ticket-server, for the record, requires building a new ticket server image and then using terraform to create the test cluster instances, networking, and backend permissions.
    
    Reviewers: #devops-tools, noah, O64 Thundercats, O51 Devops-tools, bbentson
    
    Reviewed By: #devops-tools, O64 Thundercats, O51 Devops-tools, bbentson
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66365
    
    fbshipit-source-id: 2fb6b45
    Zach Pallin authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    41f0ab3 View commit details
    Browse the repository at this point in the history
  16. biofs/gfilefs: stop doing a List on parent to handle LOOKUP

    Summary:
    When servicing a LOOKUP for `(inode, name)`, we end up doing a `List` operation on the directory represented by `inode`.  This can be very slow (minutes) if the directory is large, e.g. `s3://grail-clinical-results/`.  Stop doing this `List` and instead `List` the file/directory of the named child directly.
    
    Doing this with no other changes would make servicing READDIRPLUS slow, as `go-fuse` issues interleaving LOOKUP calls as it handles each directory entry returned during iteration, so we'd make O(n) `List` calls.  Modify `fsnodefuse` to reuse the data retrieved in the directory iteration by adding an inode that can later be used by LOOKUPs.
    
    Test Plan: Manual test by using `biofs` and navigating the `gfilefs` directory.  Run added unit tests which verify that no added LOOKUPs are performed.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66480
    
    fbshipit-source-id: b4371a5
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    4596de2 View commit details
    Browse the repository at this point in the history
  17. third-party: upgrade Arrow

    Summary: Upgrade includes the fix for bug [ARROW-7777](https://issues.apache.org/jira/browse/ARROW-7777) which caused panics in D66587.
    
    Test Plan: Tested D66587.
    
    Reviewers: jcharumilind, smahadevan
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan, dnicolaou, pboyapalli
    
    Differential Revision: https://phabricator.grailbio.com/D66588
    
    fbshipit-source-id: 5f82050
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    d538a16 View commit details
    Browse the repository at this point in the history
  18. DOPS-2523 : remove blessing tails from eks cluster blessing extensions

    Summary: Cluster specific tails to the blessing extensions were a good idea, but causing issues with grailbook authentication. They may not be necessary, so we are removing them for now.
    
    Test Plan: Tests passing
    
    Reviewers: #devops-tools, mskinner, pfialho, bbentson
    
    Reviewed By: #devops-tools, bbentson
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66682
    
    fbshipit-source-id: 0839b3c
    Zach Pallin authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    2e98b6d View commit details
    Browse the repository at this point in the history
  19. fsnodefuse: recover panics

    Summary: Also simplifies error interpretation and more robustly identifies cancellation errors.
    
    Test Plan:
    New unit tests (ran manually).
    
    Also tested manually: initiated a slow FUSE operation and cancelled it which used to leave that part of the mount broken (subsequent attempts said not supported). Now, subsequent attempts work.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66781
    
    fbshipit-source-id: 6c7a14f
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    0f057d9 View commit details
    Browse the repository at this point in the history
  20. [BXDS-1054] fsnodefuse: refresh fsnode.T references in inode embedders

    Summary:
    `go-fuse` may (and often does) reuse `*fs.Inode`s.  Calling `(*fs.Inode).NewInode` may return an existing inode with the existing inode's (immutable) operations (`fs.InodeEmbedder`).  This can lead to staleness from a sequence like (pseudocode):
    
    ```
    var p fsnode.Parent = ...
    child := p.Child(name)
    embed := &regInode{n: child}
    childInode := parentInode.NewInode(name, embed)
    
    child2 := p.Child("foo") // Returns a different child, e.b. a different ConstLeaf(...).
    embed2 := &regInode{n: child}
    childInode2 := parentInode.NewInode(name, embed2)
    
    // childInode2 might be the node created in the first NewInode call
    // and have stale behavior, as embed2 is orphaned/lost.
    ```
    
    We fix this by refreshing the `fs.Node` fields held by our embedders.
    
    This fact also makes for a bug in our child inode reuse for READDIRPLUS LOOKUP servicing.  If we always use the existing inode child to service LOOKUP, we may get stale results.  We instead only allow reuse if the child inode is part of an active directory stream, reusing to avoid excessive `(fsnode.Parent).Child` calls.
    
    Test Plan: Pass existing and new unit tests.  Manually traverse biofs, and see no regressions.  Run `bio/biofs/install_and_tour` and see no regressions.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D66746
    
    fbshipit-source-id: dc21234
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    c37618f View commit details
    Browse the repository at this point in the history
  21. base/simd: 1.17 go vet cleanup

    Summary:
    After updating to Go 1.17, "go vet" complained about some
    possible violations of the unsafe.Pointer rules in base/simd and
    bio/biosimd, and brought up a few other minor issues.  This diff makes
    the code "go vet" clean without any change in behavior.
    
    [BENG-11]
    
    Test Plan:
    Existing tests pass, and "go vet" no longer brings up any
    issues in these directories.
    
    Reviewers: joshnewman, dnicolaou
    
    Reviewed By: joshnewman, dnicolaou
    
    Subscribers: cchang, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D67046
    
    fbshipit-source-id: d998bb8
    Christopher Chang authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    462de12 View commit details
    Browse the repository at this point in the history
  22. biofs: fix error-hiding bug

    Summary: This hid the credentials error in D67119.
    
    Test Plan: Run existing tests. Currently `TestReaddirplusConcurrent` is failing on my machine on master and here, but after that's resolved we'll have more confidence this isn't breaking anything.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D67123
    
    fbshipit-source-id: e701d1c
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    38a46f8 View commit details
    Browse the repository at this point in the history
  23. biofs: set blocks so du works [BXDS-1023]

    Summary: I also set block size since it was nearby. I'm seeing Arrow regularly use large reads [BXDS-1045], but I don't really think it's due to this change; I branched off of D67047 and I think that's likely responsible. Either way, we can verify that issue later since it's not the main purpose.
    
    Test Plan: Ran `du` on an S3 directory and saw it work (where it previously said 0).
    
    Reviewers: jcharumilind, sbanville
    
    Reviewed By: jcharumilind, sbanville
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D67125
    
    fbshipit-source-id: 1f75c6b
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    73699fd View commit details
    Browse the repository at this point in the history
  24. [BXDS-1071] grail-fuse: kill DirPlusStream

    Summary:
    We have our own fork of `go-fuse` which adds a `DirPlusStream` interface used to make LOOKUP FUSE operations during READDIRPLUS more performant.  (Without some mitigation, we make O(n) calls to S3 when listing a directory: one for each LOOKUP for which there is one for every directory entry.)
    
    We started the process to upstream it, but the `go-fuse` maintainer pointed out some issues, and we eventually abandoned the change/effort.  See more context in the [[ https://review.gerrithub.io/c/hanwen/go-fuse/+/524431 | code review ]].
    
    Kill our use of this fork/patch to avoid the noted problems, and allow the previously returned dirstream entry/inode to be reused to make LOOKUPs fast.
    
    One of the uses of the patched version was our internal `grail-fuse` tool which has now been superseded by `biofs`.  Kill it too so that we do not have to upgrade it.
    
    Test Plan: Run with debug logging.  Use `ls` and observe that LOOKUP reuses nodes and does not trigger API calls.
    
    Reviewers: smahadevan, joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan, dnicolaou, pboyapalli
    
    Differential Revision: https://phabricator.grailbio.com/D67249
    
    fbshipit-source-id: ac84bf6
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    f4a37dd View commit details
    Browse the repository at this point in the history
  25. github.com/grailbio/base: go vet cleanup

    Summary:
    This revision addresses all "go vet" complaints under
    github.com/grailbio/base, except a pair of unsatisfied standard
    interfaces (Seek() in recordio/internal/chunk.go is expected by go vet
    to satisfy io.Seeker, etc.).  One complaint corresponded to a cosmetic
    bug in traverse.simpleReporter which I had noticed a few years ago.
    
    (I was originally going to just address some subdirectories of base/,
    but so many base/ packages use e.g. sync.Mutex that I concluded it
    was simpler to just address everything here.)
    
    [BXDS-1093]
    
    Test Plan:
    Existing tests pass.  "go vet ./..." under
    github.com/grailbio/base now yields the expected results.
    
    Reviewers: joshnewman, sbagaria
    
    Reviewed By: joshnewman
    
    Subscribers: jcharumilind, cchang, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D67354
    
    fbshipit-source-id: 587b65b
    Christopher Chang authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    83d4255 View commit details
    Browse the repository at this point in the history
  26. base/errors: improve interop with stdlib errors

    Summary: Lets base/errors recognize more stdlib error types and vice versa.
    
    Test Plan:
    New unit tests.
    
    If this generally seems ok, it may be worthwhile to make test coverage more complete.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: jclune, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D65766
    
    fbshipit-source-id: 099c8c7
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    cde7f56 View commit details
    Browse the repository at this point in the history
  27. biofs: upgrade go-fuse to 2.1.0

    Summary:
    Upgrade `go-fuse` to 2.10 which fixes [BXDS-1069] and [BXDS-1095].
    
    The upgrade triggers some changes to `fsnodefuse`.  2.1.0 is more prone to not return an/the existing inode from `(*fs.Inode).NewInode`, which we assumed in our implementation.  We now explicitly look for an existing child inode instead of relying on `NewInode` to return the existing child/inode.
    
    We also update `fsnodefuse.TestReaddirplusConcurrent` to try different numbers of children to more reliably detect page size issues to prevent recurrence of [BXDS-1095].
    
    Test Plan: Run unit tests.  Run tour and see each step succeed.
    
    Reviewers: smahadevan, joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan, dnicolaou, pboyapalli
    
    Differential Revision: https://phabricator.grailbio.com/D67326
    
    fbshipit-source-id: 6444c14
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    62dded6 View commit details
    Browse the repository at this point in the history
  28. base/tsv: allow reading from TSVs with missing columns

    Summary:
    The current code assumes that all struct fields must be populated by the
    TSV, but in practice we may add new fields to a struct definition and
    want to read TSVs written prior to the addition of these fields.
    
    Test Plan: New unit tests have been added.
    
    Reviewers: cchang, joshnewman
    
    Reviewed By: cchang
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D67863
    
    fbshipit-source-id: eade205
    Siddhartha Bagaria authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    72b91bc View commit details
    Browse the repository at this point in the history
  29. chiron/evalframework: kill featurizer construction in init()

    Summary:
    Kill featurizer construction in `init()`, as featurizer construction may do significant work, e.g. read from S3, that should be deferred until needed.  Reading from S3 is especially problematic because it may require credentials that are not set up yet, e.g. Vanadium blessings.  For example, if `bigslice` is used, no blessings will have been transferred by the time `init` runs, so any S3 accesses will use the default client which may not be authorized.
    
    This change triggers an addition to the `github.com/grailbio/base/config.Profile` API.  We want to fail fast if the featurizer instance named in the `chiron_eval_binary` target does not exist, instead of waiting until the trainer is instantiated.  Checking for the name used to require instantiation.  Instead, we add an `InstanceNames` method and use that to fast fail if a nonexistent featurizer instance name is provided.
    
    Test Plan:
    - Run added unit tests.
    - Run integration tests.
      - `bazel test //go/src/grail.com/classifier/chiron/integrationtest/endtoend`
      - `bazel test //go/src/grail.com/classifier/chiron/tfexec/test/integration`
    
    Reviewers: O52 chiron infrastructure, joshnewman
    
    Reviewed By: O52 chiron infrastructure, joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D67716
    
    fbshipit-source-id: bf8ed90
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    30dad88 View commit details
    Browse the repository at this point in the history
  30. base/unsafe: remove ExtendBytes

    Summary:
    The ExtendBytes function only exists because of a misunderstanding: I
    did not realize until a few months ago that s = s[:newLen] was valid
    Go for newLen in [len(s)+1, cap(s)].
    
    Test Plan: Existing tests pass.
    
    Reviewers: joshnewman, jcharumilind
    
    Reviewed By: joshnewman
    
    Subscribers: cchang, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D68270
    
    fbshipit-source-id: 9df1181
    Christopher Chang authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    b28c4f0 View commit details
    Browse the repository at this point in the history
  31. morebufio: ReaderAt

    Summary: For D68138.
    
    Test Plan: New unit tests.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D68223
    
    fbshipit-source-id: fb0dec1
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    6e1b3f8 View commit details
    Browse the repository at this point in the history
  32. fsnodefuse: support kernel readahead with an in-memory buffer [BXDS-1…

    …016] [BXDS-1045]
    
    Summary:
    Alternative to D67047.
    
    Like D67047, this improves read performance through the FUSE mount significantly, likely due to kernel readahead causing some i/o and syscall latency to be interleaved (parallelized and overlapping with the user process, I think). But this doesn't require buffering on local disk which is nice for avoiding disk space issues for some usage patterns.
    
    Test Plan:
    Added D67047's concurrency case to the integration test script.
    
    Updated benchmarks.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D67471
    
    fbshipit-source-id: c31e075
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    cd1a519 View commit details
    Browse the repository at this point in the history
  33. biofs: add unzip support [BXDS-1025]

    Test Plan:
    New unit test (based on in-memory zip file).
    
    Manually tested listing contents of
      /mnt/biofs/s3/grail-build-artifacts/buildkite/entrypoint-grail/179518/bazel/.../testlogs.zip/unzip/
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: jxiang, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D68138
    
    fbshipit-source-id: c1d30bb
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    ce42e81 View commit details
    Browse the repository at this point in the history
  34. addfs: fix erroneous conflict logging [BXDS-1028]

    Summary:
    Fix `addfs` logging of added node name conflicts:
    - Log at `Info` level instead of debug, as it shows that a node is being shadowed and made inaccessible.
    - Only log if there is a conflict instead of logging every added node as a conflict.
    - Replace the logging of the `perNodeImpl` name (which is always `...` in our case) with the name of the `original` node for which adds are being computed, e.g. `classifier.bin`, as that name is more informative.
    
    Test Plan:
    Run `biofs`.  Run:
    ```
    $ ls /mnt/biofs/s3/grail-ccga2-evaluation-runs/v2_9_galleri_training.994/workdir/full_classifier/classifier/.../classifier.bin
    # See that there are no more log messages saying there is a conflict for `regionfrags`.
    ```
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D68605
    
    fbshipit-source-id: 1aa190b
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    bf88b89 View commit details
    Browse the repository at this point in the history
  35. bio/pileup/indel: first working version

    Summary:
    This fills in the remaining pieces (shard-processing and TSV-output
    logic) for the indel-supporting pileup.
    
    (In the meantime, yet another bit of code that was suppressing PerRead
    output for N-supporting reads has been removed.  This finally broke
    the bio-pileup and bio-spamtools tests in the expected manner; those
    test fixtures have been updated.)
    
    [BXDS-942]
    
    Test Plan:
    Unit tests added for full pileup workflow.  Ran this on a 2.3 GB test
    BAM with and without -cols=+dpalt, and with and without
    -per-strand=true, and verified that results looked sane.
    
    Also ran this on
    s3://grail-results/611183/cfDNA1_10_B9_GPSL_25pM_24Plex/bam/dupmarked.merged.bam ;
    this resulted in a cryptic panic due to the presence of irregular
    CIGAR strings (e.g. there are reads where the CIGAR ends in an
    insertion rather than a soft-clip).  If others are likely to try this,
    we should either make bio-pileup crash with a more informative
    error message, or just permit irregular CIGARs.
    
    Reviewers: dnicolaou, ckuo
    
    Reviewed By: dnicolaou, ckuo
    
    Subscribers: sbagaria, escott, cchang, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D68533
    
    fbshipit-source-id: 07d91e1
    Christopher Chang authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    daec4e1 View commit details
    Browse the repository at this point in the history
  36. ensemble: fix auth bug for external user file download

    Summary:
    Fix subtle bug where grailbook user would override accounts auth for download.
    Also make sure that auth errors are logged by the gin router.
    Also also inject the request id into the context earlier, so that it's there when the auth middleware runs.
    Also also also modernize the functions to extract users from context.
    
    [CPP-4357] #done
    
    Test Plan:
    Updated unit tests to reflect reality.
    Deployed to sandbox and successfully downloaded files from provider
    portal.
    
    Reviewers: O56 Ensemble backend, ysalmasi, achandra, achew, O63 logger, O60 Accounts Service Backend, atao
    
    Reviewed By: O56 Ensemble backend, ysalmasi, achandra, O60 Accounts Service Backend, atao
    
    Subscribers: atao, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D68692
    
    fbshipit-source-id: a8094f6
    Federico De Giuli authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    5e70577 View commit details
    Browse the repository at this point in the history
  37. [SYSINFRA-1230] ticket-server: Use region from the instance identity …

    …document to find it
    
    Summary:
    When `ticket-server` is used to bless an EC2 instance, the `region` of that instance
    should be used to find the instance.  Otherwise, we get a `InvalidInstanceID.NotFound` error.
    
    Test Plan: Unit tests.
    
    Reviewers: O9 ticket-server, jirgon
    
    Reviewed By: O9 ticket-server, jirgon
    
    Subscribers: zpallin, bbentson
    
    Differential Revision: https://phabricator.grailbio.com/D69210
    
    fbshipit-source-id: 2995e29
    swami-m authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    21a88c7 View commit details
    Browse the repository at this point in the history
  38. base/traverse: add sequential mode

    Summary:
    traverse did not have a mode that was suitable for streaming
    workflows, where tasks are assigned in numerical order.  This adds a
    simple implementation.
    
    [BXDS-1217]
    
    Test Plan: Unit test has been extended to cover the new mode.
    
    Reviewers: jschellenberger, smahadevan
    
    Reviewed By: smahadevan
    
    Subscribers: dnicolaou, cchang
    
    Differential Revision: https://phabricator.grailbio.com/D69361
    
    fbshipit-source-id: 5d94639
    Christopher Chang authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    eb8bd03 View commit details
    Browse the repository at this point in the history
  39. [SYSINFRA-1216] base/sync: Add support to reset once.Task

    Summary:
    Support the ability to reset a `once.Task` which enables the task
    to be run again, but yet only once.
    
    Test Plan: Unit tests
    
    Reviewers: pboyapalli
    
    Reviewed By: pboyapalli
    
    Subscribers: ghorrell
    
    Differential Revision: https://phabricator.grailbio.com/D69633
    
    fbshipit-source-id: 6e0bb7b
    swami-m authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    ce5a723 View commit details
    Browse the repository at this point in the history
  40. [DOPS-2806] ticket-server/ec2: add us-east-1 to k8s regions list

    Summary:
    This will hopefully unblock pods in the sysdev-east-a cluster from running into:
    ```/ # grail-access -k8s=true -region="us-east-1"
    ERROR: failed to fetch blessings: CA certificate does not match any cluster
    ```
    
    Test Plan:
    Tested with ticket-server-testing server, running this from grail-ticket container shell:
    `/ # grail-access -k8s -region=us-east-1  -blesser=/ticket-server-testing.eng.grail.com:8102/blesser/k8s`
    
    Reviewers: zpallin, bbentson
    
    Reviewed By: zpallin
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D69838
    
    fbshipit-source-id: c6da6f1
    jirgon authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    e74874b View commit details
    Browse the repository at this point in the history
  41. base/sync/multierror: clarify builder name

    Summary: The previous name violated [Effective Go's advice](https://go.dev/doc/effective_go#package-names). It also suggested that users make a mistake and treat the builder object itself as an error which leads to incorrect `nil` comparisons. The new name suggests correct usage, I think.
    
    Test Plan: Existing builds and tests.
    
    Reviewers: jcharumilind, O65 nhs, O5 pipeline, pboyapalli
    
    Reviewed By: jcharumilind, O65 nhs, O5 pipeline, pboyapalli
    
    Subscribers: pboyapalli, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D70344
    
    fbshipit-source-id: 303983e
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    476a016 View commit details
    Browse the repository at this point in the history
  42. base/sync/multierror: stop implementing error

    Summary: D22435 said it would do this, and fixed existing usages, but maybe accidentally left the implementation. This revision fixes a few new usages and completes the removal.
    
    Test Plan:
    Existing builds and tests.
    
    I did a best-effort search for situations where `Add` may be called on `nil` and didn't find any. Hopefully my search plus existing unit tests provide sufficient coverage.
    
    Reviewers: jcharumilind, O65 nhs, O5 pipeline, tule, pboyapalli, jclune
    
    Reviewed By: jcharumilind, O65 nhs, O5 pipeline, tule, pboyapalli, jclune
    
    Subscribers: jclune, pboyapalli, smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D70346
    
    fbshipit-source-id: 2b6303a
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    213c896 View commit details
    Browse the repository at this point in the history
  43. [SYSINFRA-595] reflow/runtime: (part 2) Refactor ec2cluster

    Summary:
    - Reflow "runtime" starts a cluster instead of it being implicitly started
      upon invocation of methods `Allocate` and `Probe`.
    - `ec2cluster.VerifyAndInit()` is now split into two separate steps.
      - `Verify()` which verifies parameters and returns an error if applicable.
      - `Start()` which starts the cluster using a context, upon cancellation of which, the
         cluster will be shutdown.
    - Reflow `tool.Cmd` now has a `CurrentPool()` method which provides access to the current
      underlying pool of the cluster without expansion capabilities.  This is used by all
      other reflow "tool" commands (such as `ps` and `info`) which do not involve a "run".
    - `httputil` is fixed to fetch exec inspect from a "live" alloc/exec.
    
    Test Plan:
    Unit and integration tests.
    See also [[ https://jira.ti-apps.aws.grail.com/browse/SYSINFRA-1333 | SYSINFRA-1333 ]]
    
    Following shows the comparison of `reflow info` output without and with this change.
    Particularly, we can see that the inspect of the exec is now working:
    - Without change
    ```
    > reflow info a5f7df25
    runid    user                                                     start  end    cost    ExecLog SysLog EvalGraph Trace
    a5f7df25 v23.grail.com:ec2:619867110810:adhoc:i-0fa8b5d98f22d3377 4:20PM 4:29PM <0.0373
    
        taskid   flowid   attempt ident                              cost    start  end    taskDur execDur state    mem cpu disk procs  hosttype   uri/resultid                                                                                                                            inspect
        48c996ec 11ab63ed 1       atropos.trimPairedEnd              <0.0368 4:23PM 4:29PM 6m30s   0s      unknown  0B  0.0 0B   []     c5.2xlarge ec2-35-86-225-68.us-west-2.compute.amazonaws.com:9000/0cfe66e3339572fa/48c996ec094772fd69ec6ff1854eaf87c5b74010f98626b2d7dae800b27662c7
    ```
    - With change
    ```
    > /tmp/darwin/amd64/reflowswami info a5f7df25
    runid    user                                                     start  end    cost    RunLog ExecLog SysLog EvalGraph Trace
    a5f7df25 v23.grail.com:ec2:619867110810:adhoc:i-0fa8b5d98f22d3377 4:20PM 4:34PM <0.0628
    
        taskid   flowid   attempt ident                              cost    start  end    taskDur execDur state    mem    cpu disk   procs                 hosttype   uri/resultid                                                                                                                            inspect
        48c996ec 11ab63ed 1       atropos.trimPairedEnd              <0.0623 4:23PM 4:34PM 11m0s   0s      running  4.3GiB 4.3 1.3GiB python3.7(11),gzip(4) c5.2xlarge ec2-35-86-225-68.us-west-2.compute.amazonaws.com:9000/0cfe66e3339572fa/48c996ec094772fd69ec6ff1854eaf87c5b74010f98626b2d7dae800b27662c7
    ```
    
    Reviewers: ghorrell, spolakh
    
    Reviewed By: ghorrell
    
    Subscribers: pboyapalli, dnicolaou
    
    Differential Revision: https://phabricator.grailbio.com/D70639
    
    fbshipit-source-id: 2db209c
    swami-m authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    b31a26f View commit details
    Browse the repository at this point in the history
  44. base/grail: use flag.Parse to simplify flag parsing

    Summary:
    Use `flag.Parse` instead of custom flag parsing code.  As of Go 1.15, `flag.Parse` now exits with code `0` when it sees `-h` or `-help`, which is what the custom flag parsing code was doing to accommodate the previous `flag.Parse` behavior of exiting with code `2`.
    
    See https://go.dev/doc/go1.15#minor_library_changes .
    
    Test Plan: Run unit tests.  See that running `bazel run //go/src/grail.com/cmd/bio-kmer-index:bio-kmer-index -- -h`, a client of `grail.Init`, exits with code `0`.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D70995
    
    fbshipit-source-id: 3673688
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    380c62d View commit details
    Browse the repository at this point in the history
  45. base/file: support bazel-style path join, disable failing macOS test

    Summary:
    This adds support for joining bazel-style paths starting with "//",
    removing the need for custom path-join logic in e.g. bio/swalign.
    
    (It also disables a macOS test that may exhibit inconsistent behavior
    across OS versions, and does not work on my Mac.)
    
    [BXDS-1316]
    
    Test Plan: Unit test added.
    
    Reviewers: sbagaria, sbanville
    
    Reviewed By: sbagaria, sbanville
    
    Subscribers: smahadevan, cchang
    
    Differential Revision: https://phabricator.grailbio.com/D71408
    
    fbshipit-source-id: 14f3095
    Christopher Chang authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    8d5dc8c View commit details
    Browse the repository at this point in the history
  46. bigslice: add logging for "extreme" argument representation truncation

    Test Plan:
    New limitbuf unit test.
    
    Run a bigslice application that triggers this and look for the log message.
    
    Reviewers: jcharumilind
    
    Reviewed By: jcharumilind
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D71459
    
    fbshipit-source-id: 906ef12
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    3cd69d0 View commit details
    Browse the repository at this point in the history
  47. base/s3util: classify InternalError as retryable

    Summary:
    This diff classifies InternalErrors from S3 as retryable, as recommended by AWS.
    This will address the recent issue we've observed where "direct transfer"
    failures in Reflow due to AWS InternalErrors were not being retried.
    
    Jira: [SYSINFRA-1370](https://jira.ti-apps.aws.grail.com/browse/SYSINFRA-1370)
    
    Test Plan: Updated unit tests pass.
    
    Reviewers: smahadevan
    
    Reviewed By: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D71929
    
    fbshipit-source-id: 6471e70
    prb2 authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    e2e4aa8 View commit details
    Browse the repository at this point in the history
  48. Golang: upgrade to 1.18

    Summary:
    The most exciting Go upgrade yet:
    - Generic
    - Fuzzing
    - go.work
    
    More info here https://go.dev/blog/go1.18
    
    There were notably 2 problems in Grail's code base that needed to be solved specifically with this upgrade:
    
    1. Linking against sync.fastrand:
    
    sync.fastrand is a private function in Go standard lib that we have been 'hacking' to get some code depend on it.
    In Go 1.18, sync.fastrand was removed in favor of sync.fastrandn (noted the 'n' at the end).
    See https://cs.opensource.google/go/go/+/ecb2f231fa41b581319505139f8d5ac779763bee for more information.
    
    Refactored with fastmod https://github.com/facebookincubator/fastmod to adopt the new fastrandn instead
    
    ```
    > fastmod 'go:linkname fastrand sync.fastrand' 'go:linkname fastrandn sync.fastrandn' go/src
    > fastmod 'func fastrand\(\) uint32' 'func fastrandn(n uint32) uint32' go/src
    > fastmod 'int\(fastrand\(\)\)%len\(p.local\)' 'int(fastrandn(uint32(len(p.local))))' go/src
    ```
    
    2. gomodsync not able to find sum of transitive dependency
    
    In cmd/gomodsync, we run `go mod download -json` to collect the check sum of packages and add them into `go list` outputs.
    However Go 1.18 `go mod download` would not include transitive deps by default thus caused missing sum for dependencies while running Gazelle lint check.
    
    Refactored to use `go mod download -json all` instead.
    
    Reviewers: gvitta, dborcherding, anguyen, sdunn, bcar, O3 third-party, O45 fragments, joshnewman
    
    Reviewed By: O3 third-party, O45 fragments, joshnewman
    
    Subscribers: smahadevan, joshnewman
    
    Differential Revision: https://phabricator.grailbio.com/D72053
    
    fbshipit-source-id: cb6090e
    useruseless authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    6714100 View commit details
    Browse the repository at this point in the history
  49. fsnodefuse: use own cache for READDIRPLUS caching for LOOKUP

    Summary:
    Use own cache for READDIRPLUS caching for LOOKUP, which makes `TestReaddirplusConcurrent` pass again.
    
    The test currently fails; see output below.
    
    When we traverse directory streams, we add an inode to the directory inode in the Next function so that it may be used by the LOOKUP operation that is interleaved with the traversal when servicing READDIRPLUS operations. We first check if there is an existing child inode, however the test and set is not atomic. This means that two concurrent traversals may each create an inode. This screws up the reference counting used to decide whether a node can be reused by the LOOKUP, as we may orphan one of the inodes, as NewInode does not necessarily return an existing inode if it exists.
    
    The scenario:
    # There are two concurrent `dirStream` traversals of directory inode `d`, `dsA` and `dsB`.
    # `dsA.Next` and `dsB.Next` are called concurrently while traversing the same child node named `foo`. Both use `GetChild` to check for an existing inode. Both see that there is none.
    # `dsA.Next` uses `NewInode` to construct `inodeA` and adds a child, calling `AddChild("foo", inodeA)`. `dsB.Next` uses `NewInode` to construct `inodeB` and adds a child, calling `AddChild("foo", inodeB)`. `inodeB` is different from `inodeA` and replaces `inodeA` as the child named "foo". `inodeA` and `inodeB` each have a reference count of 1.
    # The LOOKUP for the `dsB` traversal is called, and the cached `inodeB` is properly used.
    # `dsB.Next` is called to continue the traversal. The reference count of `inodeB` is decremented, now 0, so it can no longer be used to service LOOKUP.
    # The LOOKUP for the `dsA` traversal is called. `inodeB` is discovered, but with a reference count of 0, we wrongly make the call to `(fsnode.Parent).Child`.
    
    This seems to have started with the move to Ubuntu 20.04.  I do not know why.
    
    Use our own cache for the LOOKUP, for which we eliminate the race condition.  It also eliminates the unusual prior behavior of adding a child on directory traversal.
    
    [BXDS-1666]
    
    Output:
    ```
    ❯ bazel test //go/src/github.com/grailbio/base/file/fsnodefuse:go_default_test --test_filter="^TestReaddirplusConcurrent$"
    ...
    ==================== Test output for //go/src/github.com/grailbio/base/file/fsnodefuse:go_default_test:
    ​--- FAIL: TestReaddirplusConcurrent (1.26s)
        --- FAIL: TestReaddirplusConcurrent/iter01 (0.10s)
            readdirplus_test.go:57: numChildren=419 concurrentReaddirs=90
            readdirplus_test.go:70:
                    Error Trace:    readdirplus_test.go:70
                                                            readdirplus_test.go:105
                                                            readdirplus_test.go:62
                    Error:          Not equal:
                                    expected: 0
                                    actual  : 3
                    Test:           TestReaddirplusConcurrent/iter01
        --- FAIL: TestReaddirplusConcurrent/iter02 (0.04s)
            readdirplus_test.go:57: numChildren=693 concurrentReaddirs=24
            readdirplus_test.go:70:
                    Error Trace:    readdirplus_test.go:70
                                                            readdirplus_test.go:105
                                                            readdirplus_test.go:62
                    Error:          Not equal:
                                    expected: 0
                                    actual  : 1
                    Test:           TestReaddirplusConcurrent/iter02
        --- FAIL: TestReaddirplusConcurrent/iter05 (0.06s)
            readdirplus_test.go:57: numChildren=322 concurrentReaddirs=85
            readdirplus_test.go:70:
                    Error Trace:    readdirplus_test.go:70
                                                            readdirplus_test.go:105
                                                            readdirplus_test.go:62
                    Error:          Not equal:
                                    expected: 0
                                    actual  : 1
                    Test:           TestReaddirplusConcurrent/iter05
        --- FAIL: TestReaddirplusConcurrent/iter06 (0.10s)
            readdirplus_test.go:57: numChildren=975 concurrentReaddirs=52
            readdirplus_test.go:70:
                    Error Trace:    readdirplus_test.go:70
                                                            readdirplus_test.go:105
                                                            readdirplus_test.go:62
                    Error:          Not equal:
                                    expected: 0
                                    actual  : 1
                    Test:           TestReaddirplusConcurrent/iter06
        --- FAIL: TestReaddirplusConcurrent/iter18 (0.02s)
            readdirplus_test.go:57: numChildren=597 concurrentReaddirs=10
            readdirplus_test.go:70:
                    Error Trace:    readdirplus_test.go:70
                                                            readdirplus_test.go:105
                                                            readdirplus_test.go:62
                    Error:          Not equal:
                                    expected: 0
                                    actual  : 1
                    Test:           TestReaddirplusConcurrent/iter18
    FAIL
    ================================================================================
    Target //go/src/github.com/grailbio/base/file/fsnodefuse:go_default_test up-to-date:
      bazel-bin/go/src/github.com/grailbio/base/file/fsnodefuse/go_default_test_/go_default_test
    INFO: Elapsed time: 1.469s, Critical Path: 1.28s
    INFO: 2 processes: 1 internal, 1 local.
    INFO: Build completed, 1 test FAILED, 2 total actions
    //go/src/github.com/grailbio/base/file/fsnodefuse:go_default_test        FAILED in 1.3s
      /mnt/bazel/output-root/jjc/a3e42a5764f3aaeb31dd53943e9d787f/execroot/grail/bazel-out/k8-opt/testlogs/go/src/github.com/grailbio/base/file/fsnodefuse/go_default_test/test.log
    
    INFO: Build completed, 1 test FAILED, 2 total actions
    ```
    
    Test Plan:
    Verify that the `fsnodefuse` package tests succeed.
    ```
    bazel test //go/src/github.com/grailbio/base/file/fsnodefuse:go_default_test
    ```
    
    Manually list multiple directories (with `ls`) in `biofs`, e.g. `ls /mnt/biofs/s3/grail-bigslice/athena-query-result`, and verify that it is not egregiously slow, i.e. a few seconds not many 10s of seconds.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D71922
    
    fbshipit-source-id: 3330f1b
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    6e10fcb View commit details
    Browse the repository at this point in the history
  50. Revert "Golang: upgrade to 1.18"

    Summary:
    This reverts commit cb6090e46d7d674b7b827b9de096aa9d77b8a45a.
    
    From slack:
    
    ```
    ghorrell:
    Hey @SNgoc - we’re seeing increased memory usage on some reflow integration tests [1] which we believe is related to this version bump (see the notes on GC in the version notes for 1.18). Would it be possible to revert the 1.18 version upgrade? These tests passing is a dependency for a release branch cut that we need to make tomorrow. (CC: @olga)
    
    https://buildkite.com/grail/reflow-integration/builds/2371
    ```
    
    Also:
    ```
    Kai Wells
    fwiw upgrading to 1.18 also broke the LIMS database connection because the version of MySQL is too old to support TLS 1.2: https://grailbio.slack.com/archives/CAA39NK7Y/p1647558600777319
    ```
    
    Reviewers: O45 fragments, ghorrell, oignatova, joshnewman, sdunn, kwells, dborcherding
    
    Reviewed By: O45 fragments, ghorrell, joshnewman
    
    Subscribers: smahadevan, joshnewman
    
    Differential Revision: https://phabricator.grailbio.com/D72202
    
    fbshipit-source-id: 1ba1ab6
    Alex Nguyen authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    d0803d3 View commit details
    Browse the repository at this point in the history
  51. fsnodefuse: handle duplicate directory entry names without panic

    Summary:
    Handle duplicate directory entry names without panicking.  We attempt to reuse `go-fuse` inodes (mostly to cache during handling of READDIRPLUS) and were panicking because we would attempt to reuse a file inode as a directory inode.  We now make sure that the modes match before reusing the inode.
    
    Note that this kills the panic but still leaves pretty weird behavior when we have duplicate names, i.e. showing multiple entries with the same name with no way of differentiating them.  That will be addressed in a separate revision.
    
    [BXDS-1452]
    
    Test Plan: Run added unit test.  Run `biofs` and see that listing a "directory" in S3 with a file and directory with the same name, e.g. `ls /mnt/biofs/s3/grail-joshnewman/tmp/dir/`, does not cause any panics.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D71377
    
    fbshipit-source-id: e286f0f
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    8205dd3 View commit details
    Browse the repository at this point in the history
  52. base/errors: map errors.NotSupported to syscall.ENOTSUP

    Summary:
    Map `errors.NotSupported` to `syscall.ENOTSUP` instead of `syscall.ENOSYS`.
    
    The available error kinds in `errors` is less granular than those of `syscall`.  According to [[ https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html | POSIX ]]:
    ```
    [ENOSYS]
        Functionality not supported.
    [ENOTSUP]
        Not supported (may be the same value as [EOPNOTSUPP]).
    ```
    
    My understanding is that in practice `ENOSYS` signals that an entire function(ality) is not supported whereas `ENOTSUP` signals that some configuration of that functionality is not supported, e.g.
    - A file abstraction may not support renaming at all, so requests to rename return `ENOSYS`.
    - A file abstraction supports renaming only if the file is backed by a local regular file, so requests to rename a non-local file return `ENOTSUP`.
    
    `errors` doesn't provide this distinction, so prefer the more granular mapping.  This may end up wrongly suggesting that there exists some configuration of a functionality that may work, but I think the (unlikely?) outcome is that we try operations that we might have known not to try earlier.
    
    Test Plan:
    Run `errors` unit tests.
    Run `fsnode` and `fsnodefuse` unit tests, as these are the main users of this mapping.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D72841
    
    fbshipit-source-id: 3e75a09
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    94e7635 View commit details
    Browse the repository at this point in the history
  53. [SYSINFRA-1501] base/digest: Use buffered writer for computing digests

    Summary:
    Using a buffered writer for computing digests reduces the amount
    of memory used and allocations made while computing digests.
    
    Since digest computation is used widely, we introduce `NewWriterShort`
    for computing digests of relatively short inputs and use it where appropriate.
    
    Performance improvement is mainly due to addition of `WriteString`.
    Various benchmarks show modest CPU improvements but significant memory/alloc reduction (reduced by **90%** in some cases)
    
    Test Plan:
    Unit and Integration tests.
    
    Benchmarking some digest computations (fileset assertions in particular shown below):
    - before
    ```
    BenchmarkDigest
    BenchmarkDigest/writeDigestOld_N100
    BenchmarkDigest/writeDigestOld_N100-8         	    2750	    401574 ns/op	  177809 B/op	    1232 allocs/op
    BenchmarkDigest/writeDigestNew_N100
    BenchmarkDigest/writeDigestNew_N100-8         	    3904	    269149 ns/op	   51968 B/op	    1310 allocs/op
    BenchmarkDigest/writeDigestOld_N1000
    BenchmarkDigest/writeDigestOld_N1000-8        	     183	   6039835 ns/op	 1770788 B/op	   12113 allocs/op
    BenchmarkDigest/writeDigestNew_N1000
    BenchmarkDigest/writeDigestNew_N1000-8        	     352	   3031291 ns/op	  515594 B/op	   13010 allocs/op
    BenchmarkDigest/writeDigestOld_N10000
    BenchmarkDigest/writeDigestOld_N10000-8       	      16	  70172874 ns/op	22929233 B/op	  121179 allocs/op
    BenchmarkDigest/writeDigestNew_N10000
    BenchmarkDigest/writeDigestNew_N10000-8       	      31	  37214169 ns/op	 5153214 B/op	  130010 allocs/op
    BenchmarkDigest/writeDigestOld_N100000
    BenchmarkDigest/writeDigestOld_N100000-8      	       2	 960212048 ns/op	207093356 B/op	 1209659 allocs/op
    BenchmarkDigest/writeDigestNew_N100000
    BenchmarkDigest/writeDigestNew_N100000-8      	       2	 561615654 ns/op	51450236 B/op	 1300010 allocs/op
    PASS
    ```
    - after
    ```
    BenchmarkDigest
    BenchmarkDigest/writeDigestOld_N100
    BenchmarkDigest/writeDigestOld_N100-8         	    3322	    339663 ns/op	  136214 B/op	      34 allocs/op
    BenchmarkDigest/writeDigestNew_N100
    BenchmarkDigest/writeDigestNew_N100-8         	    5930	    191718 ns/op	   10168 B/op	     112 allocs/op
    BenchmarkDigest/writeDigestOld_N1000
    BenchmarkDigest/writeDigestOld_N1000-8        	     294	   4650456 ns/op	 1316342 B/op	     115 allocs/op
    BenchmarkDigest/writeDigestNew_N1000
    BenchmarkDigest/writeDigestNew_N1000-8        	     483	   2245917 ns/op	   61336 B/op	    1012 allocs/op
    BenchmarkDigest/writeDigestOld_N10000
    BenchmarkDigest/writeDigestOld_N10000-8       	      21	  63469161 ns/op	18344572 B/op	    1176 allocs/op
    BenchmarkDigest/writeDigestNew_N10000
    BenchmarkDigest/writeDigestNew_N10000-8       	      43	  27897608 ns/op	  572248 B/op	   10012 allocs/op
    BenchmarkDigest/writeDigestOld_N100000
    BenchmarkDigest/writeDigestOld_N100000-8      	       2	 753470408 ns/op	161193760 B/op	    9590 allocs/op
    BenchmarkDigest/writeDigestNew_N100000
    BenchmarkDigest/writeDigestNew_N100000-8      	       3	 359851338 ns/op	 5607640 B/op	  100012 allocs/op
    PASS
    ```
    
    Reviewers: pboyapalli, ghorrell
    
    Reviewed By: pboyapalli
    
    Subscribers: dnicolaou
    
    Differential Revision: https://phabricator.grailbio.com/D73250
    
    fbshipit-source-id: 39208f6
    swami-m authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    c4860f6 View commit details
    Browse the repository at this point in the history
  54. fsnode: support writes

    Summary:
    Add support for writes in `fsnode` nodes:
    - Parent creation.
    - Leaf creation.
    - Writable leaf files.
    
    ...via these changes:
    - `fsnode.T` has an `Info` method to provide file information instead of embedding `os.FileInfo`.  Because this information can change with writes, the explicit method makes it easy/clear for clients to get a consistent snapshot, e.g. the reported size is what it was at the reported modification time.
    - `(fsnode.Leaf).Open` has been renamed to `OpenFile` and now takes an additional `flag` parameter.  The `flag` parameter is a flag constructed from `os.O_*` flags.  It is named `OpenFile` to be consistent with the spirit of `os.OpenFile`.  Add `fsnode.Open` for the commonly desired read-only file opening.
    - Add three methods to `fsnode.Parent` for writes: `AddChildLeaf`, `AddChildParent`, `RemoveChild`.
    
    [BXDS-1013]
    
    Test Plan:
    Run unit tests.
    Run tour, `./bio/biofs/install_and_tour`, and see all steps succeed.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D72693
    
    fbshipit-source-id: 687399e
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    c931b53 View commit details
    Browse the repository at this point in the history
  55. fsnodefuse: support writes

    Summary:
    Support filesystem write operations, e.g. `Mkdir` and `Create`, with `fsnode` write support.
    
    - Support `Mkdir` with `(fsnode.Parent).AddChildParent`.
    - Support `Create` with `(fsnode.Parent).AddChildLeaf`.
    - Support writable files by adding a `writableHandle` `fs.FileHandle` implementation that wraps a `WritableFile` interface implementors can satisfy to support writes.  The read functionality for `writableHandle` is not optimized, as we assume for now that users will be less worried about read performance when they are writing.  Files supporting read splicing also now support writes.
    
    [BXDS-1013]
    
    Test Plan:
    Run added unit tests.
    Run tour, `./bio/biofs/install_and_tour`, and see all steps succeed.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D72697
    
    fbshipit-source-id: fb5fe2e
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    84e9da6 View commit details
    Browse the repository at this point in the history
  56. s3file: use errors.Canceled to signal canceled operations

    Summary:
    Use `errors.Canceled` to make it easy for callers to detect cancellation.
    
    - Return an `errors.Canceled` error on context cancellation.
    - Classify `awsrequest.CanceledErrorCode` errors as `errors.Canceled`.
    
    [BXDS-1013]
    
    Test Plan: Run added unit tests.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D74658
    
    fbshipit-source-id: 04608dd
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    faa7921 View commit details
    Browse the repository at this point in the history
  57. fsnodefuse: rename defaultHandle to sizingHandle in comments

    Summary: Rename `defaultHandle` to `sizingHandle` in comments.  In D72697, `defaultHandle` was effectively enamed to `sizingHandle`.  However, we did not update some comments.  This revision fixes that oversight.
    
    Test Plan: Run unit tests.
    
    Reviewers: joshnewman
    
    Reviewed By: joshnewman
    
    Subscribers: smahadevan
    
    Differential Revision: https://phabricator.grailbio.com/D74798
    
    fbshipit-source-id: 699e611
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    91150fd View commit details
    Browse the repository at this point in the history
  58. biofs/gfilefs: support writes

    fbshipit-source-id: 078ae02
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    e45753a View commit details
    Browse the repository at this point in the history
  59. base/file: general S3 read performance benchmark

    fbshipit-source-id: e35cb19
    josh-newman authored and jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    ffea0b5 View commit details
    Browse the repository at this point in the history
  60. Implement Lseek so grep works

    fbshipit-source-id: f6c13f4
    jcharum committed Jun 2, 2022
    Configuration menu
    Copy the full SHA
    d6843fe View commit details
    Browse the repository at this point in the history

Commits on Nov 9, 2022

  1. base/eventlog: simplify type name

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/1494
    
    fbshipit-source-id: ce7d957
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    2bc65b3 View commit details
    Browse the repository at this point in the history
  2. base/file/s3file: faster reads of large files with large buffers

    Approved-by: Christopher Chang <cchang@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/184
    
    fbshipit-source-id: 0168782
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    2827013 View commit details
    Browse the repository at this point in the history
  3. base/eventlog: let caller configure timestamps

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/1164
    
    fbshipit-source-id: 08c1d02
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    16558f1 View commit details
    Browse the repository at this point in the history
  4. biofs: add eventing for feature usage

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/1166
    
    fbshipit-source-id: cd7ee3b
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    85e735b View commit details
    Browse the repository at this point in the history
  5. biofs: configure cloudwatch eventer

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/1175
    
    fbshipit-source-id: 7b394bc
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    bf00428 View commit details
    Browse the repository at this point in the history
  6. base/file: enable retries for "read: connection reset" errors (grailb…

    …io/grail!1099)
    
    Approved-by: Christopher Chang <cchang@grailbio.com>
    Approved-by: Swaminathan Mahadevan <smahadevan@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/1099
    
    fbshipit-source-id: 44d13ff
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    95553d9 View commit details
    Browse the repository at this point in the history
  7. biofs/ticketfs: return EACCES on ErrNoAccess from v23 (grailbio/grail…

    …!1861)
    
    Approved-by: Josh N <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/1861
    
    fbshipit-source-id: 5b6dd4a
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    4a9ff16 View commit details
    Browse the repository at this point in the history
  8. Change logger ErrorAndReturn to return error instead of string (gra…

    …ilbio/grail!1491)
    
    Approved-by: Henry Oddy-Propsting <hoddypropsting@grailbio.com>
    Approved-by: Alex Tao <atao@grailbio.com>
    Approved-by: Amrit Dharwadkar <adharwadkar@grailbio.com>
    Approved-by: Jacqui Liu <jaliu@grailbio.com>
    Approved-by: Arden Chew <achew@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/1491
    
    fbshipit-source-id: 6db7015
    Federico De Giuli authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    06230d8 View commit details
    Browse the repository at this point in the history
  9. s3file: fix timeout test (grailbio/grail!2491)

    Approved-by: Josh N <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2491
    
    fbshipit-source-id: b01f0be
    Son Luong Ngoc authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    52b6f2d View commit details
    Browse the repository at this point in the history
  10. s3file: fix compile error (grailbio/grail!2526)

    Approved-by: Gaspare Vitta <gvitta@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2526
    
    fbshipit-source-id: d32e2bf
    Son Luong Ngoc authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    aa09f33 View commit details
    Browse the repository at this point in the history
  11. go: enable compilation on darwin arm64 (grailbio/grail!2483)

    Approved-by: Gaspare Vitta <gvitta@grailbio.com>
    Approved-by: Josh N <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2483
    
    fbshipit-source-id: 319a792
    Son Luong Ngoc authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    d0ed1ac View commit details
    Browse the repository at this point in the history
  12. s3file/s3transport: initialize globals after flags (grailbio/grail!2568)

    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2568
    
    fbshipit-source-id: 715919d
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    cac6051 View commit details
    Browse the repository at this point in the history
  13. s3file/s3transport: add logging for open connections (grailbio/grail!…

    …2574)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2574
    
    fbshipit-source-id: d9d1442
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    632d806 View commit details
    Browse the repository at this point in the history
  14. s3file: retry reads on a new connection (grailbio/grail!2589)

    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2589
    
    fbshipit-source-id: 3411bb3
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    0c05981 View commit details
    Browse the repository at this point in the history
  15. s3file: remove retry limit for reads (grailbio/grail!2673)

    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2673
    
    fbshipit-source-id: 382c40d
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    73a38b4 View commit details
    Browse the repository at this point in the history
  16. biofs/tidyfs: convert aliases into symlinks to full version (grailbio…

    …/grail!2709)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2709
    
    fbshipit-source-id: a5d1c7a
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    06cd6a2 View commit details
    Browse the repository at this point in the history
  17. biofs, base/file: make past S3 versions available (grailbio/grail!858)

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/858
    
    fbshipit-source-id: 4efd445
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    a77388d View commit details
    Browse the repository at this point in the history
  18. biofs/addfs: propagate additions to newly-created children (grailbio/…

    …grail!3175)
    
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3175
    
    fbshipit-source-id: dafffd2
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    f9da24b View commit details
    Browse the repository at this point in the history
  19. base/errors: more flexible version of CloseAndReport (grailbio/grail!…

    …3322)
    
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jan Schellenberger <jschellenberger@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3322
    
    fbshipit-source-id: 4a6baed
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    52b6546 View commit details
    Browse the repository at this point in the history
  20. base: add Open and Create utility functions for compressed files (gra…

    …ilbio/grail!3349)
    
    Approved-by: Siddhartha Bagaria <sbagaria@grailbio.com>
    Approved-by: Josh N <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3349
    
    fbshipit-source-id: c74ca62
    Robert Calef authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    905ebd6 View commit details
    Browse the repository at this point in the history
  21. go: upgrade to 1.18 (grailbio/grail!2433)

    Approved-by: Josh N <joshnewman@grailbio.com>
    Approved-by: Jan Schellenberger <jschellenberger@grailbio.com>
    Approved-by: Gaspare Vitta <gvitta@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/2433
    
    fbshipit-source-id: 70bd212
    Son Luong Ngoc authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    0ff56fa View commit details
    Browse the repository at this point in the history
  22. base/file/s3file: fix race in test (grailbio/grail!3627)

    Approved-by: Christopher Chang <cchang@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3627
    
    fbshipit-source-id: 26f6494
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    6a4dc53 View commit details
    Browse the repository at this point in the history
  23. base/s3file: revert use of chunked read (grailbio/grail!3351)

    Approved-by: Christopher Chang <cchang@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3351
    
    fbshipit-source-id: ff76721
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    3e1870b View commit details
    Browse the repository at this point in the history
  24. base/file/s3file: restore large-read-chunking performance optimizatio…

    …n (grailbio/grail!3840)
    
    Approved-by: Christopher Chang <cchang@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3840
    
    fbshipit-source-id: f952459
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    8b32fbf View commit details
    Browse the repository at this point in the history
  25. base/file/s3file: remove unused parameter (grailbio/grail!3496)

    Approved-by: Elijah Carrel <ecarrel@grailbio.com>
    Approved-by: Christopher Chang <cchang@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3496
    
    fbshipit-source-id: 5771120
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    9655c72 View commit details
    Browse the repository at this point in the history
  26. base/file/s3file: remove unused API (grailbio/grail!3495)

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3495
    
    fbshipit-source-id: c4e6b70
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    68fd2dd View commit details
    Browse the repository at this point in the history
  27. base/file/s3file: use simpler, unauthenticated bucket-region lookup m…

    …ethod (grailbio/grail!3493)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3493
    
    fbshipit-source-id: 9438c37
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    3c28e73 View commit details
    Browse the repository at this point in the history
  28. Fix lint issues in github.com (grailbio/grail!4390)

    Approved-by: Christopher Chang <cchang@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/4390
    
    fbshipit-source-id: af29101
    Suba Srinivasan authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    50c7967 View commit details
    Browse the repository at this point in the history
  29. base/sync/loadingcache: simplify implementation (grailbio/grail!3513)

    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3513
    
    fbshipit-source-id: a7eece7
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    dc99560 View commit details
    Browse the repository at this point in the history
  30. fsnodefuse: eagerly read children for dirStream for better error repo…

    …rting (grailbio/grail!4408)
    
    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/4408
    
    fbshipit-source-id: ad45a0c
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    1850c53 View commit details
    Browse the repository at this point in the history
  31. base/file/s3file: refactor internal APIs for testing (grailbio/grail!…

    …3491)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3491
    
    fbshipit-source-id: c64f0da
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    7ff5b7d View commit details
    Browse the repository at this point in the history
  32. base/file/s3file: make S3 bucket-region matching an internal concern …

    …(grailbio/grail!3490)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Elijah Carrel <ecarrel@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3490
    
    fbshipit-source-id: e81b377
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    43a2bf2 View commit details
    Browse the repository at this point in the history
  33. base/file/s3file: garbage collection for internal client cache (grail…

    …bio/grail!4689)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/4689
    
    fbshipit-source-id: cf68ee1
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    ac9c2ca View commit details
    Browse the repository at this point in the history
  34. base/file/s3file: extract helper for managing internal chunk reader (…

    …grailbio/grail!5101)
    
    Approved-by: Christopher Chang <cchang@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5101
    
    fbshipit-source-id: 112ab8b
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    f3af1ec View commit details
    Browse the repository at this point in the history
  35. grail-access: add expiry-caveat flag for use in testing (grailbio/gra…

    …il!3430)
    
    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/3430
    
    fbshipit-source-id: e0ee2e4
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    58fdc4f View commit details
    Browse the repository at this point in the history
  36. s3file: fix data races (grailbio/grail!5469)

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5469
    
    fbshipit-source-id: 5c2f1ef
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    e6c12f5 View commit details
    Browse the repository at this point in the history
  37. base/file/s3file: implement ReaderAt (grailbio/grail!5100)

    Approved-by: Christopher Chang <cchang@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5100
    
    fbshipit-source-id: 1523c50
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    56b6801 View commit details
    Browse the repository at this point in the history
  38. base/config: sort param names in pretty-print output (grailbio/grail!…

    …5644)
    
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5644
    
    fbshipit-source-id: 3714730
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    a950aa8 View commit details
    Browse the repository at this point in the history
  39. cmd/grail-file: parallelized copies from S3 to local disk (grailbio/g…

    …rail!5098)
    
    Co-authored-by: Christopher Chang <cchang@grailbio.com>
    Approved-by: Christopher Chang <cchang@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5098
    
    fbshipit-source-id: e1fc1ed
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    76b5baa View commit details
    Browse the repository at this point in the history
  40. base/config: add -profileinline flag (grailbio/grail!5722)

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5722
    
    fbshipit-source-id: 2f01886
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    cf3334a View commit details
    Browse the repository at this point in the history
  41. base/config: permit assigning floats from integers (grailbio/grail!5866)

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5866
    
    fbshipit-source-id: 3f4a796
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    529e4a4 View commit details
    Browse the repository at this point in the history
  42. base/config: Refine handling of nil instances (grailbio/grail!5897)

    Co-authored-by: Josh Newman <joshnewman@grailbio.com>
    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5897
    
    fbshipit-source-id: f19b211
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    1c92e6a View commit details
    Browse the repository at this point in the history
  43. base/config: Allow parsing of empty input (grailbio/grail!5899)

    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5899
    
    fbshipit-source-id: dd3719a
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    6ff1a35 View commit details
    Browse the repository at this point in the history
  44. base/config: use generics to capture constructor return type (grailbi…

    …o/grail!5794)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5794
    
    fbshipit-source-id: 6c686eb
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    93a5c6e View commit details
    Browse the repository at this point in the history
  45. base/config: implement Set for floats (grailbio/grail!6163)

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/6163
    
    fbshipit-source-id: 4c25ea9
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    7a9d8cb View commit details
    Browse the repository at this point in the history
  46. base/config: support for multi-line documentation (grailbio/grail!5967)

    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5967
    
    fbshipit-source-id: a19dae1
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    84d9506 View commit details
    Browse the repository at this point in the history
  47. base/config: support negative numbers in profiles (grailbio/grail!6167)

    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/6167
    
    fbshipit-source-id: 07a34a9
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    1d81886 View commit details
    Browse the repository at this point in the history
  48. base/config: Make not-assignable error less confusing (grailbio/grail…

    …!5927)
    
    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5927
    
    fbshipit-source-id: c40a2d7
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    18741af View commit details
    Browse the repository at this point in the history
  49. base/config: print raw string literals to improve readability (grailb…

    …io/grail!6060)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/6060
    
    fbshipit-source-id: b741254
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    7895f73 View commit details
    Browse the repository at this point in the history
  50. base/config: add list of known implementations to docs (grailbio/grai…

    …l!5795)
    
    Co-authored-by: Jaran Charumilind <jcharumilind@grailbio.com>
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/5795
    
    fbshipit-source-id: 15d07a8
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    a58e317 View commit details
    Browse the repository at this point in the history
  51. biofs/tidyfs: Make v23 access errors present as EACCES (grailbio/grai…

    …l!6345)
    
    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/6345
    
    fbshipit-source-id: eab9877
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    f66bbc0 View commit details
    Browse the repository at this point in the history
  52. base/config: reduce noise in implementation listing (grailbio/grail!6…

    …408)
    
    Approved-by: Jaran Charumilind <jcharumilind@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/6408
    
    fbshipit-source-id: 89dee01
    josh-newman authored and jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    c7edf8b View commit details
    Browse the repository at this point in the history
  53. base/config: Test override of instance made with Default (grailbio/gr…

    …ail!6567)
    
    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/6567
    
    fbshipit-source-id: 445a39e
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    97725e3 View commit details
    Browse the repository at this point in the history
  54. grail-access: Add flag to bless remote machines with local default bl…

    …essings (grailbio/grail!6716)
    
    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/6716
    
    fbshipit-source-id: 79670c1
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    76f209e View commit details
    Browse the repository at this point in the history
  55. base/file: Terminate chunk reading at EOF (grailbio/grail!7791)

    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/7791
    
    fbshipit-source-id: 5a1ec56
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    4052235 View commit details
    Browse the repository at this point in the history
  56. grail-access: Use remote executable from grail-bin-public (grailbio/g…

    …rail!7904)
    
    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/7904
    
    fbshipit-source-id: ba2a4b6
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    dc88f7b View commit details
    Browse the repository at this point in the history
  57. grail-access: Support XDG_DATA_HOME (grailbio/grail!7906)

    Approved-by: Josh Newman <joshnewman@grailbio.com>
    
    GitLab URL: https://gitlab.com/grailbio/grail/-/merge_requests/7906
    
    fbshipit-source-id: f9915ad
    jcharum committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    ff9cd15 View commit details
    Browse the repository at this point in the history
  58. Configuration menu
    Copy the full SHA
    bfd041a View commit details
    Browse the repository at this point in the history

Commits on Apr 14, 2023

  1. Configuration menu
    Copy the full SHA
    89ef211 View commit details
    Browse the repository at this point in the history