none
The communication object, System.ServiceModel.Channels.ClientFramingDuplexSessionChannel, cannot be used for communication because it has been Aborted.

    Question

  • I am getting the dreaded and useless ErrorCode<ERRCA0017>:SubStatus<ES0006> error intermittently.  The inner exception differs on occasion from:

    The communication object, System.ServiceModel.Channels.ClientFramingDuplexSessionChannel, cannot be used for communication because it has been Aborted. 

    to

    The communication object, System.ServiceModel.Channels.ClientFramingDuplexSessionChannel, cannot be used for communication because it is in the Faulted state.

    I have setup several environment with AppFabric and have never run into these.  Of course the environment that I am seeing these issues was not setup by me.  

    Anyone have an idea as to what causes AppFabric to spit out these error messages?  Is there a magic fix?

    Any help is greatly appreciated.

    Thanks

    Tuesday, May 29, 2012 7:36 PM

Answers

  • Well the magic fix appears to be setting the MaxBufferSize and MaxPoolBufferSize at both the client and the server.  The defaults out the box are set way too low.  A dictionary with 52000 entries of <Guid,Decimal> push over the default limit easily.  Lesson learn't on this one:  Test with small, medium, large and extra large data sets as your cached objects will push over this default easily.

    Cheers...

    Off to the next hurdle...

     
    Friday, June 08, 2012 1:01 AM

All replies

  • Do you have any repro steps, traces etc that you can provide?

    BTW, which version of Appfabric cache are you using?

    Monday, June 04, 2012 4:47 AM
  • AppFabric 1.1

    I have only one environment that I can reproduce this issue.  

    The issue appears when calling cache get.

    Minimized stack traces to follow:

    T CacheGet(System.String, Microsoft.ApplicationServer.Caching.DataCacheItemVersion ByRef, System.String, Boolean)

    Inner Exception

    ---------------

    Type : System.ServiceModel.CommunicationObjectFaultedException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

    Message : The communication object, System.ServiceModel.Channels.ClientFramingDuplexSessionChannel, cannot be used for communication because it is in the Faulted state.

    Source : System.ServiceModel

    Help link : 

    Data : System.Collections.ListDictionaryInternal

    TargetSite : Void ThrowIfDisposedOrNotOpen()

    Stack Trace :    at System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrNotOpen()

      at System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSend(Message message, TimeSpan timeout)

      at System.ServiceModel.Channels.OutputChannel.Send(Message message, TimeSpan timeout)

      at Microsoft.ApplicationServer.Caching.CacheResolverChannel.Send(Message message, TimeSpan timeout)

      at Microsoft.ApplicationServer.Caching.WcfClientChannel.SendOnChannel(EndpointID endpoint, TimeSpan& timeout, WaitCallback callback, Object state, Boolean async, IDuplexSessionChannel channel, Message message)

    Second issue:

    StackTrace:    at Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody)

       at Microsoft.ApplicationServer.Caching.DataCache.InternalGet(String key, DataCacheItemVersion& version, String region, IMonitoringListener listener)

       at Microsoft.ApplicationServer.Caching.DataCache.<>c__DisplayClass59.<Get>b__56()

       at Microsoft.ApplicationServer.Caching.MonitoringListenerFactory.EmptyListener.Microsoft.ApplicationServer.Caching.IMonitoringListener.Listen[TResult](Func`1 innerDelegate)

       at Microsoft.ApplicationServer.Caching.DataCache.Get(String key, DataCacheItemVersion& version, String region)

       at Changepoint.CommonServices.CPCache.MemCache`1.Get(DataCache cache, String key, DataCacheItemVersion& version, String region, Boolean decompress)

    Inner Exception: System.ServiceModel.CommunicationObjectAbortedException: The communication object, System.ServiceModel.Channels.ClientFramingDuplexSessionChannel, cannot be used for communication because it has been Aborted.

       at System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrNotOpen()

       at System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSend(Message message, TimeSpan timeout)

       at System.ServiceModel.Channels.OutputChannel.Send(Message message, TimeSpan timeout)

       at Microsoft.ApplicationServer.Caching.CacheResolverChannel.Send(Message message, TimeSpan timeout)

       at Microsoft.ApplicationServer.Caching.WcfClientChannel.SendOnChannel(EndpointID endpoint, TimeSpan& timeout, WaitCallback callback, Object state, Boolean async, IDuplexSessionChannel channel, Message message)

    Monday, June 04, 2012 7:14 PM
  • Are you getting this exception on every call of "get" or only occasionaly ? Typically this exception means network issue, and occurs in your case when it is trying to send message to cache server.

    You say you see only in one setup, are you running same app on every set-up or app being run in this set up is different from others ? If network is heavily used in this set-up, then you might have to look at your network capacity.


    MSFT

    Wednesday, June 06, 2012 10:09 AM
  • Well the magic fix appears to be setting the MaxBufferSize and MaxPoolBufferSize at both the client and the server.  The defaults out the box are set way too low.  A dictionary with 52000 entries of <Guid,Decimal> push over the default limit easily.  Lesson learn't on this one:  Test with small, medium, large and extra large data sets as your cached objects will push over this default easily.

    Cheers...

    Off to the next hurdle...

     
    Friday, June 08, 2012 1:01 AM