Octopus.Server fails to start after upgrade from 2.0.13.1100 to 2.1.2.1190

After upgrade Octopus server crashes from unhandled exception. Reinstalling the service does not resolve the issue. Here is the exception recorded in Windows Event Log:

@@@

  • EventData

    2014-02-13 04:25:56.3337 ERROR An exception was thrown while invoking the constructor ‘Void .ctor(Octopus.Platform.Diagnostics.ILog, Pipefish.Transport.SecureTcp.MessageExchange.Server.SecureTcpServerDistributor, Octopus.Server.Communications.CertificateLookupCache, Octopus.Platform.Deployment.Configuration.ITcpServerCommunicationsConfiguration, System.Collections.Generic.IEnumerable1[Pipefish.Transport.SecureTcp.Routing.IRouteModule], Raven.Client.IDocumentStore)' on type 'TcpServerDistributionChannel'. ---> Could not load type 'Pipefish.Transport.SecureTcp.ClientCertificateValidation' from assembly 'Pipefish.Transport.SecureTcp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. (See inner exception for details.) Autofac.Core.DependencyResolutionException: An exception was thrown while invoking the constructor 'Void .ctor(Octopus.Platform.Diagnostics.ILog, Pipefish.Transport.SecureTcp.MessageExchange.Server.SecureTcpServerDistributor, Octopus.Server.Communications.CertificateLookupCache, Octopus.Platform.Deployment.Configuration.ITcpServerCommunicationsConfiguration, System.Collections.Generic.IEnumerable1[Pipefish.Transport.SecureTcp.Routing.IRouteModule], Raven.Client.IDocumentStore)’ on type ‘TcpServerDistributionChannel’. —> Could not load type ‘Pipefish.Transport.SecureTcp.ClientCertificateValidation’ from assembly ‘Pipefish.Transport.SecureTcp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’. (See inner exception for details.) —> System.TypeLoadException: Could not load type ‘Pipefish.Transport.SecureTcp.ClientCertificateValidation’ from assembly ‘Pipefish.Transport.SecureTcp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’. at Octopus.Server.Communications.TcpServer.TcpServerDistributionChannel.CreateServer() at Octopus.Server.Communications.TcpServer.TcpServerDistributionChannel…ctor(ILog log, SecureTcpServerDistributor distributor, CertificateLookupCache certificateCache, ITcpServerCommunicationsConfiguration serverConfiguration, IEnumerable1 routes, IDocumentStore store) in c:\TeamCity\buildAgent\work\1116bd9da9e239fd\source\Octopus.Server\Communications\TcpServer\TcpServerDistributionChannel.cs:line 49 at lambda_method(Closure , Object[] ) at Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() --- End of inner exception stack trace --- at Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() at Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context, IEnumerable1 parameters) at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable1 parameters) at Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id, Func1 creator) at Autofac.Core.Resolving.InstanceLookup.Execute() at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable1 parameters) at System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() at System.Linq.Buffer1..ctor(IEnumerable1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source) at Autofac.Features.Collections.CollectionRegistrationSource.<>c__DisplayClass4.<RegistrationsFor>b__0(IComponentContext c, IEnumerable1 p) at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable1 parameters) at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable1 parameters) at Autofac.Core.Resolving.InstanceLookup.Execute() at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable1 parameters) at Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration registration, IEnumerable1 parameters) at Autofac.Features.LazyDependencies.LazyRegistrationSource.<>c__DisplayClass51.<>c__DisplayClass7.<CreateLazyRegistration>b__4() at System.Lazy1.CreateValue() at System.Lazy`1.LazyInitValue() at Octopus.Server.Communications.DistributionStarter.Start() in c:\TeamCity\buildAgent\work\1116bd9da9e239fd\source\Octopus.Server\Communications\DistributionStarter.cs:line 30 at Octopus.Server.OctopusServerEngine.Start() in c:\TeamCity\buildAgent\work\1116bd9da9e239fd\source\Octopus.Server\OctopusServerEngine.cs:line 55 at Octopus.Server.Commands.RunCommand.Start() in c:\TeamCity\buildAgent\work\1116bd9da9e239fd\source\Octopus.Server\Commands\RunCommand.cs:line 21 at Octopus.Shared.Startup.WindowsServiceHost.<>c__DisplayClass2.b__0() in c:\TeamCity\buildAgent\work\1116bd9da9e239fd\source\Octopus.Shared\Startup\WindowsServiceHost.cs:line 19 at Octopus.Shared.Startup.WindowsServiceAdapter.RunService() in c:\TeamCity\buildAgent\work\1116bd9da9e239fd\source\Octopus.Shared\Startup\WindowsServiceAdapter.cs:line 44

@@@

Got the same error here. Reinstallation of the service didn’t solve it.

help please :wink:

Thanks, we’ll try to get to the bottom of this. Could you:

  1. Stop the Octopus service
  2. Uninstall Octopus (don’t worry, it won’t delete any data, just the program files)
  3. Install 2.1.2 again

I wonder if a file was locked and that’s why it’s trying to load an old assembly.

Failing that, it’s safe to uninstall 2.1.2 and install 2.0.13 again.

Paul

Hi,
thanks! That did solve it.
I noticed that the older version 2.0.13 was as well still installed. Maybe thats not right?

However after following your steps above everything works fine now.

Regards,
Christian

Oh, is it correct that Octopus 2.1.x does not try to update its tentacles?

Same thing. The older version was still installed and running. Uninstalled both, then reinstalled 2.1.2 and it works.

Thanks all - I think we’ve tracked this down to a change in installation scope from per-user to per-machine in the Octopus 2.1 MSI.

Regards,
Nick

Tried to upgrade from 2.0 to 2.1 but fails.
I read the upgrade notes, uninstalled 2.0, still fails.

I don’t have any of those registry keys to there is nothing to delete.
I have rebooted the server.

I have tried reinstalling 2.0 (works) and uninstall + install again. Same issue.

I also have 1.6 installed in parallel on this server if that could affect anythig.

Hi Per,

Can you try again with the latest release (2.1.3)? http://octopusdeploy.com/downloads

When you say it fails, what error are you getting?

Paul

Hey Paul,

it was the Octopus.2.1.3.1223 I tried.
Sorry for not mentioning that.

The “error” is the standard warning that I have to uninstall 2.0 before installing 2.1

Hi Per,

So you have already uninstalled 2.0, but the error about 2.0 being installed still appears? And those registry keys definitely don’t exist? It’s hard to think why you’d still get that error then.

Would you have time to do a screen sharing session with me to try and figure this out? My Skype is paulstovell but let me know if another technology is preferable.

Paul

Thanks for the offer Paul.

I managed to workaround by installing the 64bit version of 2.1.
I previously had 32bit 2.0 installed.
There doesn’t seem to be a check in place when changing bitness.

When having 2.0 installed, there are no registry keys in the location.
After installing 2.1 the “InstallLocation” is added.

Thanks for the update Per!