Uploaded image for project: 'Couchbase .NET client library'
  1. Couchbase .NET client library
  2. NCBC-111

Hangs after threads are aborted

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Fix
    • Major
    • 1.2.7
    • 1.1.6
    • library
    • None

    Description

      In our production system thread occasionally get aborted to prevent long-running tasks from using resources when the user is no longer interested in the results. We are seeing these kinds of errors in the log:

      ERROR Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl - Could not init pool.
      and
      ERROR Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl - Failed to reset an acquired socket.

      Also, we are seeing hangs in MessageStreamListener.cs, line 400:
      while ((line = reader.ReadLine()) != null)

      This will occasionally hang indefinitely waiting for data to come in to the stream when there is no more data coming in.
      I have created a reproduction application that creates a bunch of threads in an "abortable" thread pool (which just allows you to abort the threads, instead of being a black box). Starting the application will print a "." for every thread started, a "!" for every thread stopped and an "x" for every thread aborted. The thread itself just does a simple set/get. It typically hangs after about 15-20 seconds, on this ReadLine statement.

      You can find the repro attached to this ticket.

      This happens with Couchbase server 1.8.1 and the latest client code from Github.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            saakshi.manocha Saakshi Manocha
            roy.jacobs roy.jacobs
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty