I am using Azure's In-Role caching for our web role cluster.
I need to use separate dataCacheClients
so to have different and explicitly set transport property configurations (maxBufferPoolSize
and maxBufferSize
).
The problem is that each dataCacheClient
is always set with the same maxBufferPoolSize
and maxBufferSize
values. They are all set to the values from the dataCacheFactory
which I instantiate first.
<dataCacheClients>
<dataCacheClient name="DataCache1">
<autoDiscover isEnabled="true" identifier="MyRoleName" />
<transportProperties maxBufferPoolSize="6400000" maxBufferSize="256" />
</dataCacheClient>
<dataCacheClient name="DataCache2">
<autoDiscover isEnabled="true" identifier="MyRoleName" />
<transportProperties maxBufferPoolSize="0" maxBufferSize="10485760" />
</dataCacheClient>
<dataCacheClient name="DataCache3">
<autoDiscover isEnabled="true" identifier="MyRoleName" />
<transportProperties maxBufferPoolSize="3276800" maxBufferSize="32768" />
</dataCacheClient>
</dataCacheClients>
Each concrete DataCache
object is instantiated from separate DataCacheFactory
instances (contained inside static 'managers'). I have also tried reverting to creating the cache clients programmatically, but to no avail.
So, here is an exception being thrown due to MaxBufferSize being too small at 256.
When debugging the factory, you can clearly see that the MaxBufferSize is not 256:
I am starting to pull my hair out, so I've come up with the two ideas:
My suspicion is that the StartPort
and DiscoveryPort
in each data clients' AutoDiscoveryProperties
are the same across all (22233 as StartPort
and 24233 as DiscoveryPort
), which makes me believe that they could be pulling from the same factory (and thus using the same settings).
In addition, the DataCacheServerEndpoint
for each client is also the same, at 20004. Perhaps they need to be different?
I am using Microsoft.WindowsAzure.Caching 2.4.0.0 and Azure SDK 2.4.
Can anyone help point me in the right direction?