Updating to 2.0.4.5 from 2.0.3.3 from web interface didn't work

On both a Windows 7 and a macOS machine, both using Chrome 70 and Duplicati 2.0.3.3, updating using the web interface (About->Check for Updates->Download, then Activate) downloaded the update, removed the Tray Icon, and stopped the server, but even after waiting for many minutes, the update never installed.

I was only able to update to the 2.0.4.5 beta by downloading the installer on each machine and installing over again.

So you waited at the “reconnecting” countdown popup and it never reconnected or were you able to reconnect but it was still running the old version?

In my experience, if the GUI has a password then it never automatically reconnects (or prompts for a password) but works fine if I refresh (F5) my browser window. Did your 2.0.3.3 have a GUI password?

Yes, I waited at the “reconnecting” countdown popup, which just kept counting down, resetting, counting down, etc. It never reconnected, and I don’t think the updated server ever even got installed to connect to. The files in the installation folder were all still dated with the old version timestamp.

I am not using a GUI password.

If it’s safe to downgrade back to 2.0.3.3 from 2.0.4.5, I can try to duplicate the issue, if there is anything specific suggested for me to capture/look for.

Thanks for offering, but per this How-To post, it’s not save to downgrade any lower than 2.0.3.12. :frowning:

This is what was supposed to happen. That’s the base version. It stays fixed until an actual install, but there should be an updates folder somewhere that got a subfolder with new version See the Downgrading article. When Duplicati starts, it starts with the base version which immediately looks for the best update to run with.

I’m still willing to duplicate the issue if needed to troubleshoot. I can backup my local database and create an entirely new backup for testing.

I certainly wouldn’t want to get in your way of testing things. :slight_smile:

Where you running as a service or just the tray icon?

Actually, now that I think about it - do you see anything in the global log (Main menu About -> Show log) that looks like it might be from around the time of the update?

Just running the Tray Icon (but configured to run as administrator on the Windows machine). The global log doesn’t have any recent entries.

There was nothing on the Windows machine. But on my macOS one, there are two errors that are right about
at the time of the upgrade. The first is:

System.InvalidOperationException
 at (wrapper managed-to-native) System.Reflection.Emit.DynamicMethod.create_dynamic_method(System.Reflection.Emit.DynamicMethod)
 at System.Reflection.Emit.DynamicMethod.CreateDynMethod () [0x000ad] in <71f4e3d7d65e42b0a699d02e59766d3c>:0
 at System.Reflection.Emit.DynamicMethod.CreateDelegate (System.Type delegateType) [0x00023] in <71f4e3d7d65e42b0a699d02e59766d3c>:0
 at Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory.CreateParameterizedConstructor (System.Reflection.MethodBase method) [0x0003e] in <dc86da7fc46c487ba6c7ab826da479cc>:0
 at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract (System.Type objectType) [0x00152] in <dc86da7fc46c487ba6c7ab826da479cc>:0
 at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract (System.Type objectType) [0x00100] in <dc86da7fc46c487ba6c7ab826da479cc>:0
 at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract (System.Type type) [0x00029] in <dc86da7fc46c487ba6c7ab826da479cc>:0
 at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.GetContractSafe (System.Object value) [0x00016] in <dc86da7fc46c487ba6c7ab826da479cc>:0
 at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize (Newtonsoft.Json.JsonWriter jsonWriter, System.Object value, System.Type objectType) [0x00028] in <dc86da7fc46c487ba6c7ab826da479cc>:0
 at Newtonsoft.Json.JsonSerializer.SerializeInternal (Newtonsoft.Json.JsonWriter jsonWriter, System.Object value, System.Type objectType) [0x00253] in <dc86da7fc46c487ba6c7ab826da479cc>:0
 at Newtonsoft.Json.JsonSerializer.Serialize (Newtonsoft.Json.JsonWriter jsonWriter, System.Object value) [0x00000] in <dc86da7fc46c487ba6c7ab826da479cc>:0
 at Duplicati.Server.Serialization.Serializer.SerializeJson (System.IO.TextWriter sw, System.Object o, System.Boolean preventDispose) [0x00025] in <927cdc67f183479e9840f9c0240f3e7c>:0
 at Duplicati.Server.WebServer.BodyWriter.WriteJsonObject (System.Object o) [0x00040] in <670b0e4a9ae144208688fcb192d20146>:0
 at (wrapper remoting-invoke-with-check) Duplicati.Server.WebServer.BodyWriter.WriteJsonObject(object)
 at Duplicati.Server.WebServer.RESTHandler.DoProcess (Duplicati.Server.WebServer.RESTMethods.RequestInfo info, System.String method, System.String module, System.String key) [0x0039a] in <670b0e4a9ae144208688fcb192d20146>:100:

And the second is:

Mono.Data.Sqlite.SqliteException (0x80004005): SQLite error cannot rollback - no transaction is active
 at Mono.Data.Sqlite.SQLite3.Reset (Mono.Data.Sqlite.SqliteStatement stmt) [0x00084] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at Mono.Data.Sqlite.SQLite3.Step (Mono.Data.Sqlite.SqliteStatement stmt) [0x0003d] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at Mono.Data.Sqlite.SqliteDataReader.NextResult () [0x00104] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at Mono.Data.Sqlite.SqliteDataReader..ctor (Mono.Data.Sqlite.SqliteCommand cmd, System.Data.CommandBehavior behave) [0x0004e] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at (wrapper remoting-invoke-with-check) Mono.Data.Sqlite.SqliteDataReader..ctor(Mono.Data.Sqlite.SqliteCommand,System.Data.CommandBehavior)
 at Mono.Data.Sqlite.SqliteCommand.ExecuteReader (System.Data.CommandBehavior behavior) [0x00006] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at Mono.Data.Sqlite.SqliteCommand.ExecuteNonQuery () [0x00000] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at Mono.Data.Sqlite.SqliteTransaction.IssueRollback (Mono.Data.Sqlite.SqliteConnection cnn) [0x00012] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at Mono.Data.Sqlite.SqliteTransaction.Rollback () [0x00008] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at Mono.Data.Sqlite.SqliteTransaction.Dispose (System.Boolean disposing) [0x00018] in <629d4ba869fc4ed198a4bd8134e9b36d>:0
 at System.Data.Common.DbTransaction.Dispose () [0x00000] in <eeb8653eff2a42ceb0a878cb863f64b2>:0
 at Duplicati.Server.Database.Connection.SetSettings (System.Collections.Generic.IEnumerable`1[T] values, System.Int64 id, System.Data.IDbTransaction transaction) [0x00070] in <670b0e4a9ae144208688fcb192d20146>:0
 at Duplicati.Server.Database.ServerSettings.SaveSettings () [0x00030] in <670b0e4a9ae144208688fcb192d20146>:0
 at Duplicati.Server.Database.ServerSettings.set_UnackedWarning (System.Boolean value) [0x00039] in <670b0e4a9ae144208688fcb192d20146>:0
 at Duplicati.Server.Database.Connection.DismissNotification (System.Int64 id) [0x000aa] in <670b0e4a9ae144208688fcb192d20146>:0
 at Duplicati.Server.WebServer.RESTMethods.Notification.DELETE (System.String key, Duplicati.Server.WebServer.RESTMethods.RequestInfo info) [0x00058] in <670b0e4a9ae144208688fcb192d20146>:0
 at Duplicati.Server.WebServer.RESTHandler.DoProcess (Duplicati.Server.WebServer.RESTMethods.RequestInfo info, System.String method, System.String module, System.String key) [0x00292] in <670b0e4a9ae144208688fcb192d20146>:0

Interesting - I’ve not run into that one before. I’m going to ping @kenkendk and @Pectojin as they have more experience with upgrading and database stuff than I do.

(By the way, I edited your post by adding “~~~” before and after the messages - along with carriage returns - to make them easier to read.)

Watching TrayIcon with Sysinternals Process Monitor, I see that 2.0.3.3 Activate (whether done by the small text link or the popup button) causes the child TrayIcon to return 0. I think that’s wrong – it should return 126 to ask the parent TrayIcon to repeat its search-and-launch, which should find the 2.0.4.5 update and start a new child. Instead, exit 0 is just a normal exit signal, which leaves no TrayIcon. I haven’t seen this behavior in awhile, and I wonder if maybe something was fixed after 2.0.3.3? I attached my debugger to the child, and saw it return a 126 internally, but seemingly lose it on its way out. I’d previously had trouble seeing where it got lost, and I did again.
EDIT: 2.0.3.13 also does exit 0. I don’t use TrayIcon much (generally on WindowsService + Server), so maybe it doesn’t work for TrayIcon. WindowsService Server activate restarts the old one. Must manually restart service…

Sounds like this may be an issue limited to this upgrade path? (In which case it’s not really fixable / worth fixing).

I have not seen this before. It happens inside the JSON library. I think the SQLite error is caused by the JSON error stopping the call before the transaction is started.

This happened to me as well.

FYI, at least this piece of what you describe is what I experience every single time I upgrade versions on my work PC. It just means that I need to manually re-launch Duplicati, and after I do so, it works fine.

I can confirm this is what happened on my upgrade from 2.0.3.3. Here is my set up:

  • This is a Windows install
  • I have Duplicati installed as a service running as an administrative user. It was converted to service from standard install as the admin user, and all files are in their original location.
  • I have a GUI password
  • I am using Chrome on the local machine

What happens when I click install then activate on the GUI pop-up:

It says downloading then the reconnecting pop-up comes up and stays. I refresh the page, and it asks for login. After I login, click on about and it says I am running 2.0.3.3 , 2.0.4.5 has been installed, click to activate. If I click to activate, I have to login again and it still says running 2.0.3.3.

Solution:
click log out. Restart Windows service. Log back in and on about page it says running 2.0.4.5.

Also, I’d recommend you try doing a hard-refresh in your browser (CTRL+F5) before taking the more drastic action of logging out and back in. Often after an update the cached info on-screen will still reflect the previous version, even through a “normal” refresh.

1 Like

The log out may not be necessary, I just do it before the service restart because I’ve been doing this stuff waay too long and it just feels like I should. :grin:

For thoroughness though, I’d be curious to see whether a hard refresh fixes this issue for you in the future before even doing the service restart. I do a vanilla install so mine might work slightly differently from yours of course.

1 Like

That makes sense. I will try that with the next update. Thanks!

1 Like