Skip to content
Commits on May 12, 2015
  1. Merge pull request #126 from StoneCypher/master

    removes doubled repl prompt
    committed May 12, 2015
  2. @StoneCypher

    removes doubled repl prompt

    StoneCypher committed May 12, 2015
Commits on May 11, 2015
  1. Merge pull request #125 from marcelog/marcelog_max_attempts_config

    Add max_attempts option
    committed May 11, 2015
Commits on May 7, 2015
  1. @marcelog

    adding max_attempts option

    marcelog committed May 7, 2015
Commits on Dec 11, 2014
  1. @benjaminplee

    Fixed extraction of Pid for iteration with new key

    Missed in original work.
    benjaminplee committed Dec 11, 2014
Commits on Nov 21, 2014
  1. @benjaminplee

    Made test server less chatty while shutting down

    Connections warned of badargs to ets:delete
    when shutting the server down with open connections;
    created noise while reviewing test results.
    benjaminplee committed Nov 21, 2014
  2. @benjaminplee

    Fixed bug with connection req completion

    Algorithm change had bug where ets:select return
    value was incorrectly assumed to be the object key
    and not the entire object causing the following
    delete attempt based on a matchspec and the key to fail.
    
    This meant that ets was not updated to reflect the completed
    requests on each connection and causing exaustion of pipelines
    event though connections were idle.  Functional test added which
    demonstrated the problem.
    benjaminplee committed Nov 21, 2014
Commits on Nov 20, 2014
  1. @benjaminplee

    Updated contributes/authors

    benjaminplee committed Nov 20, 2014
  2. @benjaminplee
  3. @benjaminplee
  4. @benjaminplee

    Fixed matchspec miss and added retry logic w/ ets

    In prior commit, missed switch of matchspec to work
    with deletes, fixed here.
    
    Added retry logic for race conditions around lb and
    conn both trying to update same record at the same time.
    If more than max is experienced, just let it go, things
    will probably be ok.
    benjaminplee committed Nov 20, 2014
  5. @benjaminplee

    Whitespace cleanup

    benjaminplee committed Nov 20, 2014
  6. @benjaminplee
  7. @benjaminplee

    Filled in more functional tests

    Added additional functional tests ensuring that
    the pipelines empty and added some robustness
    around the test server.
    benjaminplee committed Nov 20, 2014
  8. @benjaminplee

    Changed pipeline algo to smallest pipeline first

    Big commit. Switched algorithm to one which will favor
    the connection with the smallest pipeline first
    (deciding ties by timestamp of last finished request,
    and then by pid as ultimate tie breaker).
    
    Note: this also drastically changes the internal
    representation of the connection in ets and is dependent
    on specific order of operations when changing key values
    to limit risk of race conditions between loadbalancer
    and a given connection.
    
    Also removed connection reporting of start of request
    as this was no longer necessary since the load balancer
    tees up the entry into ets with a 1.
    benjaminplee committed Nov 19, 2014
Commits on Nov 19, 2014
  1. @benjaminplee

    Encapsulated the iteration of connections and msgs

    Use of foldl for iteration is not hidden as implementation
    detail.  Also hid details of how to message conn to set
    tracing within API.
    benjaminplee committed Nov 19, 2014
  2. @benjaminplee

    Removed speculative sizing and enforced common max

    Difference between speculative and "real" size was no
    longer material to the algorithm.  Used macro to enforce
    consistent usage of ceiling for pipeline.
    benjaminplee committed Nov 19, 2014
  3. @benjaminplee

    Encapsulated remaining interactions with conn ets

    Created better abstractions on current ets table layout
    to communicate what we want to accomplish, not how.
    benjaminplee committed Nov 19, 2014
  4. @benjaminplee

    Connection now has whole responsibility of cleanup

    HTTP connection process now manages both scenarios
    requiring cleaning up of the load balancer's ets table;
    instead of this being owned by both the conn and lb.
    benjaminplee committed Nov 19, 2014
  5. @benjaminplee

    Encapsulated conn ets table use in ibrowse_lb

    Moved all interactions with ets table tracking
    connections to API functions on ibrowse_lb,
    to reduce knowledge of ets table and its structure.
    
    Also fixed "bug" where ceiling for pipelining
    threshold was different than the set value for increment;
    made them the same.
    benjaminplee committed Nov 19, 2014
  6. @benjaminplee

    Removed unnecessary pipeline size from con state

    Tracking size in http connection process state
    was unnecessary as it wasn't queried for logic
    or obvious reporting and ets table should have
    right (within 1) value already.
    benjaminplee committed Nov 19, 2014
  7. @benjaminplee

    Replaced local size in state with ets lookup

    Got rid of duplicated information in order to
    reduce complexity and change points for upcoming
    algorithm changes.
    benjaminplee committed Nov 19, 2014
  8. @benjaminplee

    Removed unneccessary safe_fixtable for ordered set

    Via ets man page:
    Note that for tables of the ordered_set type, safe_fixtable/2 is not
    necessary as calls to first/1 and next/2 will always succeed
    benjaminplee committed Nov 19, 2014
  9. @benjaminplee

    General cleanup of spacing and order

    Preparing to rework the pipelining algorithm
    benjaminplee committed Nov 19, 2014
  10. @benjaminplee

    Removed unneeded initial table creation

    Verified that all code paths using saved table
    identifier from state are guarded either by a
    check for undefined or a call to maybe_create_ets,
    so the table should always be there when it
    is needed without creating before real use.
    benjaminplee committed Nov 19, 2014
Commits on Nov 18, 2014
  1. @benjaminplee

    Updated local rebar to fix problem with eunit

    Prior version was "2". New functional tests suite
    was not being picked up by local rebar, but was
    execute with my local which is version "2.5.2"
    which targets the same version of Erlang/OTP
    as iBrowse (R16).
    benjaminplee committed Nov 18, 2014
  2. @benjaminplee

    Aliased remaining production ets table names

    For consistency, added macro aliases for remaining
    ets table names to be found all in one place.
    benjaminplee committed Nov 18, 2014
  3. @benjaminplee

    Made ets table names clearer by usage

    Reuse of ibrowse_lb for named table holding
    load balancers and for name of unnamed table
    holding connections was confusing.
    benjaminplee committed Nov 18, 2014
  4. @benjaminplee

    Created broken test demonstrating imbalanced load

    In preparation for work to ensure that request
    load is balanced across connections, created failing
    functional test to demonstrate current behavior.
    benjaminplee committed Nov 18, 2014
  5. @benjaminplee

    Add new endpoint to test_server for slow responses

    New endpoint will never send back a response and can
    be used for verifying timeouts and long running processes.
    benjaminplee committed Nov 18, 2014
  6. @benjaminplee

    Created base for functional tests

    New eunit based test harness for functional
    tests that require a running test server in
    order to run.
    benjaminplee committed Nov 18, 2014
  7. @benjaminplee
  8. @benjaminplee

    Fixed test server stop message handling

    Moved receive of stop message to listening process
    instead of connection and modified listener to come
    up for air every once in a while to process.
    benjaminplee committed Nov 18, 2014
Commits on Aug 19, 2014
  1. Merge pull request #120 from divolgin/fix

    Fix failing requests when ibrowse_lb process does not stop gracefully.
    committed Aug 19, 2014
  2. @divolgin

    When host/port process dies, ets table is not cleaned up, which break…

    …s all subsequent connections to this host/port.
    divolgin committed Aug 19, 2014
Something went wrong with that request. Please try again.