1

After painfully trying to get my virtual environment up and running with Appfabric Caching (1.1), I am able to run 2 nodes into 1 cache cluster. Both show system up which is good. Before, it was not and was a pain.

So I am now creating a demo app. The app is being developed on the host computer which can connect to the virtual environment (using VMware and they are all in a domain except the host).

I can put things in the cache and I can see the cache statistics which reflects what I have put in the cache. But when getting - it fails! It just times out and no idea why or where to go:

? u.Email
"36277@bloggs.com"
? CacheManager.Instance.Cache.GetCacheItem(u.Email)
'CacheManager.Instance.Cache.GetCacheItem(u.Email)' threw an exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException'
    base {System.Exception}: {"ErrorCode<ERRCA0018>:SubStatus<ES0001>:The request timed out.. Additional Information : The client was trying to communicate with the server : net.tcp://AppFabricTwo.appfabric.demo.com:22233"}
    ErrorCode: 18
    HelpLink: "http://go.microsoft.com/fwlink/?LinkId=164049"
    Message: "ErrorCode<ERRCA0018>:SubStatus<ES0001>:The request timed out.. Additional Information : The client was trying to communicate with the server : net.tcp://AppFabricTwo.appfabric.demo.com:22233"
    SubStatus: -1
    TrackingId: {00000000-0000-0000-0000-000000000000}

I have AppFabricOne and AppFabricTwo. I can communicate between them no problems and I can ping and access these 2 from the HOST computer itself (which is hosting the VM's)

Any ideas why this would be and what to do? Windows firewalls on the VM computers are all disabled and these are joined to a domain (And using SQL).

My code:

Adding:

Random r = new Random();
int idChosen = r.Next(1, 99999);
User u = new User { LastName = "Bloggs", FirstName = "Joe", CellPhone = "(555) 555-5555", DOB = DateTime.Today.AddYears(-30), UserID = idChosen, Email = idChosen.ToString() + "@bloggs.com" };
DataCacheItemVersion item = CacheManager.Instance.Cache.Put(u.Email, u, this.txtRegion.Text);

Retrieving:

CacheManager.Instance.Cache.GetCacheItem(u.Email)

yes, I have also tried GetRegionItem but that still gives me the same error as GetCacheItem.

Ahmed ilyas
  • 5,722
  • 8
  • 44
  • 72

1 Answers1

0

Are you using the same DataCacheFactory object for getting the cache items as the one you are using to put items in the cache ? The fact that PUT works and GET doesn't makes me think that they are different datacachefactory objects somehow.

also are you able to ping to FQDN AppFabricTwo.appfabric.demo from your client machine and is it resolving to correct IP address I.e. Same as appfabrictwo ? Also check telnet to port 22233 is working from your client (if put works this should work anyways though

Puneet Gupta
  • 2,237
  • 13
  • 17
  • thanks for your reply. yes, I am using the same DataCacheFactory object for getting the items. I am indeed able to ping to FQDN on AppFabricTwo and AppFabricOne. – Ahmed ilyas Jan 17 '14 at 12:01
  • I just noticed that you are putting the item in a specific region but during the Get call I don't see the region included. What happens if you put the item without specifying the region and then just do a get, does that work ? – Puneet Gupta Jan 18 '14 at 11:07
  • Well I did try the GetRegionItem too and I still had the same problem. It works fine on a single workstation but I want to use a cluster of machine in a domain to do this and be able to access it. – Ahmed ilyas Jan 18 '14 at 11:38
  • What I am really asking you to do is make call to PUT without specifying any region and then just a GET, does that work ? Even if you have two nodes, PUT should work and you should not have a need to specify the region name – Puneet Gupta Jan 18 '14 at 11:52