6
votes

I have a test installation of AppFabric 1.1 x64 (Hosting + Cache) on a single machine (domain-registered, Windows 7 Enterprise). Installation and configuration went flawlessly (cluster with just 1 machine, configuration stored in SQL), I'm running everything locally (including SQL Server 2008 R2). Problem occurs when I want to start "AppFabric Caching Service" - it crashes after few seconds and following entries appear in Administrative Events (in Event Viewer):

Faulting application name: DistributedCacheService.exe, version: 1.0.4632.0, time stamp: 0x4eafeccf
Faulting module name: KERNELBASE.dll, version: 6.1.7601.17651, time stamp: 0x4e21213c
Exception code: 0xe0434352
Fault offset: 0x000000000000cacd
Faulting process id: 0x1928
Faulting application start time: 0x01ccb8c5266c0fd5
Faulting application path: C:\Program Files\AppFabric 1.1 for Windows Server\DistributedCacheService.exe
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Report Id: 6457890a-24b8-11e1-b051-70f1a19c8456

and

Application: DistributedCacheService.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.UriFormatException
Stack:
   at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartServiceCallback(System.Object)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

and

AppFabric Caching service crashed with exception {System.UriFormatException: Invalid URI: The hostname could not be parsed.
   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
   at Microsoft.ApplicationServer.Caching.ServiceConfigurationManager.InitializeThisHostData()
   at Microsoft.ApplicationServer.Caching.ServiceConfigurationManager.InitializeDataFromGlobalConfig()
   at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartService(Boolean deleteTKT)
   at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartServiceCallback(Object context)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()}. Check debug log for more information

Here's the output from basic PowerShell commands:

Get-CacheHost

HostName : CachePort Service Name            Service Status Version Info
-------------------- ------------            -------------- ------------
MW7GM0B50ROMDQ:22233 AppFabricCachingService DOWN           3 [3,3][1,3]

Get-CacheHostConfig

cmdlet Get-CacheHostConfig at command pipeline position 1
Supply values for the following parameters:
HostName: MW7GM0B50ROMDQ
CachePort: 22233

HostName        : MW7GM0B50ROMDQ
ClusterPort     : 22234
CachePort       : 22233
ArbitrationPort : 22235
ReplicationPort : 22236
Size            : 3994 MB
ServiceName     : AppFabricCachingService
HighWatermark   : 99%
LowWatermark    : 90%
IsLeadHost      : True

Caching Service is set up to be running as Network Service.

Do you have any clue what may be wrong? I've seen "Invalid URI: The hostname could not be parsed." message, but name in configuration seems to be perfectly ok (even if it looks odd, it's a proper name of my computer). Any help would be appreciated.

P.S. I had AppFabric 1.0 before and it seemed to work fine. I've uninstalled it before installing AppFabric 1.1.

2

2 Answers

4
votes

I've managed to find out what was the reason.

In my Windows host file I had several entries for loopback IP: localhost, {machine name} and {machine name FQDN}. When I removed all but {machine name FQDN}, configuration wizard was able to set up a proper configuration.

This was the easy way, but I learned that later...

My first (and more painful) way to fix the problem was to remove Caching Service configuration manually and re-create it from scratch using PowerShell cmdlets:

Import-Module ApplicationServer
Import-Module DistributedCacheAdministration
Import-Module DistributedCacheConfiguration
New-CacheCluster ...
Register-CacheHost ...
Add-CacheHost ...
Add-CacheAdmin ...
etc.

Service starts proplerly, but sadly, when I verify setup with Get-CacheHost, I receive:

HostName : CachePort                       Service Name            Service Status Version Info
--------------------                       ------------            -------------- ------------
MW7GM0B50ROMDQ.<domain part>:22233         AppFabricCachingService UP             0 [0,0][0,0]

If you look at version number, you'd see that it's most likely improper. Unfortunately, when I try to update this info manually (‘Update-CacheHostAllowedVersions’), I get odd looking ‘access-denied’ errors:

Update-CacheHostAllowedVersions : ErrorCode<ERRCAdmin026>:SubStatus<ES0001>:Remote registry access failed on host MW7GM0B50ROMDQ.<domain part>. Check if the required permissions are available and the host is not down.

I have to make some more tests to find out if it's really a problem or just annoyance.

1
votes

I've faced a similar/same issue but fixing of HOST didn't help. Core of my problem was my server has long (8+ chars) name. It was trimmed when the Cache was configured.

First useful hint was Get-CacheHost output where the name was incorrect. Then solution was easy:

  1. Export-CacheClusterConfig -Path <path>\config.xml
  2. Edit file and fix your hostname
  3. Import-CacheClusterConfig -Path <path>\config.xml
  4. Start-CacheCluster