Skip to content

Instantly share code, notes, and snippets.

@reclosedev
Created March 15, 2014 14:35
Show Gist options
  • Save reclosedev/9568230 to your computer and use it in GitHub Desktop.
Save reclosedev/9568230 to your computer and use it in GitHub Desktop.

Revisions

  1. reclosedev created this gist Mar 15, 2014.
    43 changes: 43 additions & 0 deletions cassandra_leaks.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    import resource

    from cassandra.cluster import Cluster


    def create_and_shutdown():
    cluster = Cluster()
    session = cluster.connect()
    session.shutdown()
    cluster.shutdown()


    def create_once(cache={}):
    session = cache.get("session")
    if not session:
    cluster = Cluster()
    session = cluster.connect()
    cache["session"] = session
    print session.execute("SELECT cluster_name FROM system.local")[0]


    def get_mem_usage():
    usage = resource.getrusage(resource.RUSAGE_SELF)
    return usage.ru_maxrss


    def main():
    start_mem = get_mem_usage()
    last_mem = start_mem

    for i in xrange(10000000):
    # this one doesn't leak
    #create_once()
    # and this does
    create_and_shutdown()

    new_mem = get_mem_usage()
    print("%-5s diff cur: %-5s diff start: %-5s total: %-5s" %
    (i, new_mem - last_mem, new_mem - start_mem, new_mem))
    last_mem = new_mem


    main()