Commits on Sep 22, 2015
  1. Bumping to 1.2.9

    ferd committed Sep 22, 2015
  2. Merge pull request #6 from ferd/fix-time-deprec

    ferd committed Sep 22, 2015
    Move now() usage to make_ref()
  3. Move now() usage to make_ref()

    ferd committed Sep 22, 2015
    The purpose of 'now()' was to uniquely mark message -- there should be
    no downside to instead using make_ref(), making it fully compatible
    backwards and forwards as a fix.
Commits on Aug 5, 2015
  1. Merge pull request #4 from massemanet/master

    ferd committed Aug 5, 2015
    make tests work
Commits on Aug 4, 2015
  1. typo

    mats cronqvist committed Aug 4, 2015
  2. renamed the tagged tuple type -> tagged_tuple()

    mats cronqvist committed Aug 4, 2015
  3. rewrote lb status to not use ets:foldl

    mats cronqvist committed Aug 4, 2015
  4. add some comments

    mats cronqvist committed Aug 4, 2015
  5. documented lb_status as an API function

    mats cronqvist committed Aug 4, 2015
  6. corrected type, prettified

    mats cronqvist committed Aug 4, 2015
  7. cosmetic; indent

    mats cronqvist committed Aug 4, 2015
  8. cosmetic; change from leading to trailing commas

    mats cronqvist committed Aug 4, 2015
  9. speed up plt build

    mats cronqvist committed Aug 4, 2015
  10. move to application:ensure_all_started/1

    mats cronqvist committed Aug 4, 2015
  11. replace calls to lhttpc_manager from tests with new func lhttpc:lb_st…

    mats cronqvist committed Aug 4, 2015
  12. fix bad type specs, update comments, remove some dead code

    mats cronqvist committed Aug 4, 2015
Commits on Jun 18, 2014
  1. Merge pull request #3 from knutin/master

    ferd committed Jun 18, 2014
    Encoding for OTP 17
  2. Encoding for OTP 17.

    knutin committed Jun 18, 2014
Commits on Feb 28, 2014
  1. Merge pull request #2 from anha0825/master

    ferd committed Feb 28, 2014
    Fix for option type
Commits on Oct 24, 2012
  1. fixing doc

    ferd committed Oct 24, 2012
    Adding the ReqId to requests broke documentation building.
    This fixes it.
Commits on Jul 9, 2012
  1. Merge branch 'feature/port_leak_fix2' of in…

    ferd committed Jul 9, 2012
    …to socket-leak
Commits on Jul 7, 2012
  1. Attempt to fix port leak, also fixed clean up of sockets.

    Yoshihiro Tanaka committed Jul 7, 2012
    There is a possibility of port leak when processes are killed using exit/2 BIF when they are connecting/closing sockets, executing in prim_inet module.
    Also fixed the format of remaining free sockets in terminate/2.
Commits on Jul 6, 2012
  1. Attempt at fixing a possible process leak

    ferd committed Jul 6, 2012
    Yoshihiro Tanaka found that when lhttpc:request closes a worker
    due to a timeout, it's possible that it happens after the port
    is unlinked in prim_inet:close, but before it is properly closed.
    This results in orphaned sockets/ports being left hanging in the
    This fix attempts to wrap lhttpc_sock:close commands around a safe
    build that should resolve it.
    A potential fix would have been to have the manager monitor the
    sockets itself, but this wouldn't have worked if the socket is new
    and the manager has never seen it before, hence the current fix.
Commits on Apr 28, 2012
Commits on Nov 25, 2011
  1. Changing mechanism of the load balancer

    ferd committed Nov 25, 2011
    Whenever a server would listen to TCP connections but never accept
    them, the lhttpc application would leak a ton of processes until
    the virtual machine is taken down.
    This was due to the way setting up connections was being done
    within the load balancer. This would lead to many milliseconds of
    delay for each socket connection attempt, and an eventual queue
    build-up would happen in the load balancer.
    Because requests freely spawn processes, this ended up having
    too many requests that the LB cannot deal with.
    This fix changes the structure around so that each client is
    responsible of setting their own socket and connection, enabling
    the load balancer to easily deny connections to newer processes
    when older ones are still stuck. Setting a good request timeout
    can then insure that slow requests won't starve the system.
Commits on Nov 21, 2011
  1. Adding control flow on connections refused

    ferd committed Nov 21, 2011
    When many connections were being refused, the load balancer
    would impose no good control flow mecanism on incoming requests.
    After a while, demand can overtake the process and grow the
    message queue until the VM goes out of memory.
    This patch adds a counter of refused connections (happens when
    the server is down); if too many connections are refusd in a row
    (as many as the possible sockets), some of the requests will be
    blocked and will return {error, offline}.
    Whenever a successful request is made, the counter is dropped.
    The patch also contains a few minute optimizations for record
    assignment, gaining minimal amounts of speed.
Commits on Nov 17, 2011
  1. Changing the lhttpc load balancer to use ETS

    ferd committed Nov 17, 2011
    The current implementation uses a dict and a queue for common
    socket operations when load-balancing. Over heavy load, the process
    gets to be very slow. Plus, it set itself as a high priority process,
    unbalancing the whole VM.
    This switches the dict to an ETS table, and the queue to a stack
    (list) in order to reduce operations. Moreover, the process will
    go back to a normal priority to make sure it doesn't mess up with
    the schedulers and timers too much.
Commits on Nov 15, 2011
  1. Oops

    lpgauth committed Nov 15, 2011
Commits on Jul 22, 2011
  1. Fix bug / tests

    lpgauth committed Jul 22, 2011