Is there a tricky bug in the implementation of the profiles in the Joplin Android app?

Daeraxa recommended me in the Discord #main channel to raise my issue here in the forum.

I am in the process of switching from a NextCloud appliance to a managed NextCloud at a provider where I already have another Joplin profile in operation.

I can switch between both profiles from my Windows clients without any problems.

When I have copied the approx. 2.4GBytes (zipped) of my main profile via nextcloud sync to the planned target directory in the new environment of the hosted NextCloud, I can change the URL, ID and password on both the Windows client and the Linux client and the clients connect to the new environment and start synchronising.

After that, when I change the URL, identifier and password in my Joplin 2.12.3 main profile on my Android 12, I get an error message saying that the credentials are not correct. However, I have changed these access data identically via copy-paste, as I did with the Joplin on Windows and the one on Linux.

The crazy thing is that I had already successfully tested the connection once in a new empty profile in the Android app with this data - at that time I had not yet documented in detail which steps I had carried out when and in which order.

As I could not find an answer to this 25/08/2023 problem, I brought forward my investment in a new Android 13 smartphone. This Android 13 is now also running a Joplin 2.12.3 . So now I have two migrations to keep an eye on at the same time: Migration of my Joplin instance to a new NextCloud and migration or parallel operation of an Android 12 and an Android 13.

This way I can test accessing my Joplin directories in my new hosted NextCloud with the new Android 13 smartphone without compromising my productive profile in my Android 12 smartphone on my still productive on premise NextCloud on my small NextBox.

First, on the new Android 13 smartphone with newly installed Joplin, I successfully connected the new target environment of my future productive instance - i.e. exactly the target environment that could not be connected either as changed Hauals second profile from my Android 12 smartphone because of allegedly incorrect access data.

After that, I wanted to connect the second profile that runs successfully on my Android 12 with the new environment also as a second profile on my new Android 13. When I tried this, I again got the error message that my access data was allegedly wrong - which I had again entered identically via copy-paste.

Since then I have suspected that there is some kind of previously undiscovered error in the implementation of the profiles function in the Joplin Android App 2.12.3.

Did you manage to get it working since then? It's hard to tell if there's an issue without being able to replicate it.

There hasn't been any other reports of issues with the multi-profile support, and I use it myself with two different Joplin Cloud accounts on desktop and Android without any issues.

Unfortunately not.
Two profiles on my Android 11 run fine.
The problem started when I wanted to change the NextCloud instance for my main profile on my Android 11.

And you are sure that all parameters, url, username and password are correct? If so, could you provide the log to show what happens when you run the connection test?

Yes, I am sure because I work from the same passwordsafe data. I suggest that I don't try such tests with my main profile, but that I create a new test user in my hosted NextCloud and try to connect them first as another profile in my Windows App, then copy the Passwordsafe with the new data to my new Android 13 and with the so copied user data try to create a third Joplin profile and connect it.
Would that be ok?

Yes I think that would be a good test, but please provide the log. What I want to check in particular is that it's using the correct webdav url (that, for example, profile 2 is not incorrectly using the url of profile 1)

I will carry out this test tomorrow at the earliest and provide the logs.
I guess I have to document logs in Android with a long screenshot, right?

I assume you need "SHOW ALL" and not just "ERRORS ONLY".

Keyword webdav url:
My main profile uses a NextCloud on a small NextBox appliance. For this, I had selected "Nextcloud" as the synchronisation target in the Android app.

In my hosted NextCloud I take the WebDAV - base string, extend it with the path to the subdirectory and use that in the apps with synchronisation target "WebDAV".

What is the difference between the setting
Synchronisation target = Nextcloud and
Synchronisation target = WebDAV ?
Can this be part of the problem in this case?

One more question please:
Do I understand correctly that the Linux app does not currently support profiles?

First intermediate result:

In order to be able to deliver a description that is as precise as possible, I have planned my procedures once again in micro steps in writing as instructions for action.

This time I could not reproduce the error described.

With these instructions, I have tried to solve one of the two problems I described. I succeeded.

I suspect that there was an error somewhere in my copy-paste procedures.
Perhaps because I had previously copied the URL via WhatsApp and this time quite consistently via KeePass Passwortsafe. My experience with it so far has been that it's absolutely equivalent, but who knows?

I will try again to copy the data of my productive profile from my NextBox to my hosted NextCloud. Maybe it will work this time if I follow my new instructions exactly.

For my Adroid 13 with synchronisation target = WebDAV, I am quite confident.

What still worries me is that my main profile on my Android 11 has sync target = Nextcloud. Can I really just change that when I switch to the migrated data in the hosted environment?

Therefore my question again

What is the difference between the setting
Synchronisation target = Nextcloud and
Synchronisation target = WebDAV ?

It is the same so you can choose one or the other

1 Like

I guess I rejoiced too soon ...

In my confidence that it should work now,
I changed the file path in the WebDAV URL in my app on Android 13. It was on the working test subdirectory /Joplin2 and I changed it in the app to the productive subdirectory /Joplin by just deleting the "2" at the end.

Sad result:
The error occurred again.

Error. Please check that URL, username, password,
etc. are correct and that the sync target is
accessible. The reported error was:
WebDAV directory not found: 
... /Joplin

The doubly strange thing about this error is that it won't let me go back:
When I added the 2 at the end of the WebDAV URL, I also got the error message. For the identical setting that had worked before.

Error. Please check that URL, username, password,
etc. are correct and that the sync target is
accessible. The reported error was:
WebDAV directory not found: 
... /Joplin2

There are entries in the logs that I cannot interpret myself. The long screenshot is temporarily available at:

I derived this txt from the jpg with Microsoft Power Toys. No guarantee that there are not any errors in it aka the tool made mistakes when transscribing.

Synchronizer•
. "There was some errors:"
Synchronizer•
. "Error: MKCOL
I Parent does not (Exception
(409): . O"
«d:error xmlns xmlns :s="http://sabredav.org/ns">
: except ion>Sabre ic s : except ion>
node does not exist</s:message>
Code: 409
Error: MKCOL locks/: Parent node does not exist (Exception
(409): . O"
cd:error xmlns xmlns :s="http.•
«s : except ion>Sabre lic s : except ion>
node does not
</d'.error»
at construct (native)
at Wrapper (address at Index-android.bundle:l : 1988478)
at construct (native)
at _ createSuperlnternal (address at
index . android. bundle: 1 : 1987554)
at call (native)
at JoplinError (address at
index . android.bundle: 1 : 1987932)
at newError (address at index.android.bund1e:1:2213376)
at ?anon_O_ (address at index.android.bundle: 1 : 2213035)
at next (native)
at asyncGeneratorStep (address at
index . android. 1 : 2164842)
at _next (address at index.android.bund1e:1:2165112)
at tryCallOne ( / root/react-native/ReactAndroid/
hermes -engine/ . cxx/M InS1 zeRel / Spl x2e66/ arm64-v8a/ lib/
Interna IBytecode/ InternalBytecode. j s : 53 : 16)
at anonymous ('root/react-nat1ve/ReactAndroid/
hermes -engrne/ . cxx/M zeRel / Sp 1 x2e66 /arm64-v8a/ lib/
Interna IBytecode/ Interna IBytecode. j s: 139 : 27 )
at apply (native)
at anonymous (address at Index. android.bundle: 1 :217787)
at _ callTimer (address at
index : 216736)
at _callReactNativeMicrotasksPass (address at
index . android. bundle: 1 : 216900)
at callReactNativeM1crotasks (address at
index . android. bundle:l : 218875)
callReactNativeMicrotasks (address at
at
Index . android. bundle: 1 : 120174)
at anonymous (address at index.android.bundle: 1: 119267)
at _guard (address at index . android.bundle:l: 120015)
at flushedQueue (address at
index . android. bundle: 1 : 119178)
at invokeCallbackAndReturnF1ushedQueue (address at
index . android . ) "

If it says this it's either that the credentials (url, username or password) you entered really are incorrect, or that there's an issue on the server which prevents access to this folder. This is not something that the app can fix, it can only report the server error message.

Not sure about the MKCOL error, but you'd want to fix this URL issue first anyway

That was to be feared.
I will try to get the hoster's experts here on this pre-clearance.
Many thanks for your support so far, @laurent :handshake:t3:

In the meantime, can you please answer this question for me as well?

It supports them

A self-healing problem?
Just stupidly tried /Joplin2 again to reproduce the error. The error was gone and it worked again.
Errors that sometimes occur and sometimes don't, without me being able to understand the reason, don't please me at all.

Now running back and forth between Laurent and the hosting experts with the problem ... will be a challenge.

And what if it's a bug in the Android?
I haven't had this problem with the Windows app, if I remember correctly (my head is spinning ...).

Well, one step at a time. Let's see what the hoster's experts have to say ...

Can you please help me find the menu item?
I have Joplin 2.7.1 5 (prhocd, linux) and even under
Tools > Options > Synchronisation > Show Advanced Setting
I can't find a menu item where I can create a new profile.

All the options are actually under File => Profile

1 Like

Unfortunately, there is no "profile" submenu on my Joplin 2.7.1 5 (prhocd, linux) client.