Octopus will not start after upgrading to 2019.5.4 from 2019.4.1

Seems to be caused by a new disk space check but we store our configuration on a network drive and it doesn’t seem to like it.

Downgraded back to 2019.4.1 to now and seems to be happy but we cannot upgrade further until this issue is resolved. Thanks!

If you need any more logs just let me know :slight_smile:

Here is the full exception on startup.

System.ArgumentException: Object must be a root directory ("C:\") or a drive letter ("C").
   at System.IO.DriveInfo..ctor(String driveName)
   at Octopus.Shared.Util.OctopusPhysicalFileSystem.EnsureDiskHasEnoughFreeSpace(String directoryPath, Int64 requiredSpaceInBytes)
   at Octopus.Shared.Configuration.XmlFileKeyValueStore.OpenForWriting()
   at Octopus.Shared.Configuration.XmlKeyValueStore.SaveSettings(IDictionary`2 settingsToSave)
   at Octopus.Shared.Configuration.DictionaryKeyValueStore.Save()
   at Octopus.Core.Initialization.BuiltIn.ConfigurationInitializer.Initialize(IRelationalStore store)
   at Nevermore.StoreInitializer.Initialize()
   at Octopus.Server.OctopusServerEngine.Start()
   at Octopus.Server.Commands.RunCommand.Start()
   at Octopus.Shared.Startup.AbstractCommand.Start(String[] commandLineArguments, ICommandRuntime commandRuntime, OptionSet commonOptions)
   at Octopus.Shared.Startup.WindowsServiceHost.<>c__DisplayClass1_0.<Run>b__0()
   at Octopus.Shared.Startup.WindowsServiceAdapter.RunService()
2019-05-21 13:47:44.1290   5520      7 FATAL  Unhandled AppDomain exception occurred: Object must be a root directory ("C:\") or a drive letter ("C").
System.ArgumentException
   at System.IO.DriveInfo..ctor(String driveName)
   at Octopus.Shared.Util.OctopusPhysicalFileSystem.EnsureDiskHasEnoughFreeSpace(String directoryPath, Int64 requiredSpaceInBytes)
   at Octopus.Shared.Configuration.XmlFileKeyValueStore.OpenForWriting()
   at Octopus.Shared.Configuration.XmlKeyValueStore.SaveSettings(IDictionary`2 settingsToSave)
   at Octopus.Shared.Configuration.DictionaryKeyValueStore.Save()
   at Octopus.Core.Initialization.BuiltIn.ConfigurationInitializer.Initialize(IRelationalStore store)
   at Nevermore.StoreInitializer.Initialize()
   at Octopus.Server.OctopusServerEngine.Start()
   at Octopus.Server.Commands.RunCommand.Start()
   at Octopus.Shared.Startup.AbstractCommand.Start(String[] commandLineArguments, ICommandRuntime commandRuntime, OptionSet commonOptions)
   at Octopus.Shared.Startup.WindowsServiceHost.<>c__DisplayClass1_0.<Run>b__0()
   at Octopus.Shared.Startup.WindowsServiceAdapter.RunService()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
System.ArgumentException: Object must be a root directory ("C:\") or a drive letter ("C").
   at System.IO.DriveInfo..ctor(String driveName)
   at Octopus.Shared.Util.OctopusPhysicalFileSystem.EnsureDiskHasEnoughFreeSpace(String directoryPath, Int64 requiredSpaceInBytes)
   at Octopus.Shared.Configuration.XmlFileKeyValueStore.OpenForWriting()
   at Octopus.Shared.Configuration.XmlKeyValueStore.SaveSettings(IDictionary`2 settingsToSave)
   at Octopus.Shared.Configuration.DictionaryKeyValueStore.Save()
   at Octopus.Core.Initialization.BuiltIn.ConfigurationInitializer.Initialize(IRelationalStore store)
   at Nevermore.StoreInitializer.Initialize()
   at Octopus.Server.OctopusServerEngine.Start()
   at Octopus.Server.Commands.RunCommand.Start()
   at Octopus.Shared.Startup.AbstractCommand.Start(String[] commandLineArguments, ICommandRuntime commandRuntime, OptionSet commonOptions)
   at Octopus.Shared.Startup.WindowsServiceHost.<>c__DisplayClass1_0.<Run>b__0()
   at Octopus.Shared.Startup.WindowsServiceAdapter.RunService()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Hi Matt,

Thanks for getting in touch and I’m sorry to hear you hit this issue with your upgrade.

I’ve tracked down the change that caused the issue and have raised a GitHub issue to have a fix shipped for this as soon as possible.

In the meantime, if you map the network drive where your config file lives and update the value of the ConfigurationFilePath entry under HTML\SOFTWARE\Octopus\OctopusServer\<InstanceName> in the registry to point to the mapped drive it should fix this error.

My sincere apologies for the inconvenience caused by this error.

Thank you and best regards,
Henrik

Hey, that’s ok - unless we see any more weirdness I’ll stick on our downgraded version for now, just let me know when a fix is released for it and we’ll upgrade then :slight_smile:

Can confirm that the latest 2019.5.8 release fixes the problem and Octopus has started up correctly again using the UNC path. Only note I would add is that the release notes is worded as if it’s a new feature when it is actually a bug fix as it is a regression :slight_smile:

Hi Matt,

Great to hear your initial issue has been resolve, and thank you for letting me know!

Cheers,
Henrik

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.