Error during synchronization in personal spaces
Description
Long technical description
The links on JIRA issues are named "Remote Issue Links" (RIL). RILs have a type and a globalID, which, in the case of Requirement Yogi, is in the form:
They contain this data because event handlers (which manage the synchronization with Confluence when a RIL is added/deleted) only contain the globalID. As you can notice, the globalID is formatted like the part of a URL after the ?, therefore we use libraries to marshall/unmarshall this string.
The problem when moving an issue is that the spaceKey for a personal space starts with a tilde followed by the username, e.g. ~admin. Because the tilde in URLs isn't specified by a standard, but sometimes used by webservers (Apache, I'm looking at you) to denominate "a personal directory", then some libraries (namely, Apache) encode this character as %7E. It causes problems where a globalID is expected to contain %7E.
Long story short
The synchronization used to fail when an issue was linked to a requirement from a personal space,
The synchronization now succeeds.
No data may be deleted or wrongly updated when the synchronization fails.
Is there any harm when the sync fails or when a RIL is invalid?
No:
The master data for links is what is visible in JIRA. Requirement Yogi has no control over what JIRA displays.
Invalid data in JIRA cannot delete data in Confluence.
The worst that can happen is that Confluence is not aware of a link.
This could be recovered by going to the JIRA issue and synchronizing it. Synchronization always affects all RILs on a JIRA issue.
If the synchronization fails, then deleting-and-recreating the link will always update the situation. This is what the synchronization does automatically.
RILs will be deleted in the following situations:
When the requirement in Confluence was deleted (removed from its original page) and the JIRA issue is synchronized. That means the link persists on the JIRA issue until a user clicks "Synchronize" in JIRA.
When it is immediately recreated because its globalID has changed. This happens when the issue was moved, or when the requirement's space key has changed, causing the globalID to change. The globalID being immutable, the old RIL must be destroyed and a new RIL created.
Environment
Confluence 5.8.6
Chrome 48.0.2564.103 m
Windows 10
Observations
1. When trying to sync I get error
2. After removing link to requirement in JIRA I still see the issue in the list of linked issues in confluence
Activity
Ok then 1.4.6 is for you - it was published on the Atlassian Marketplace so you can upgrade from UPM.
Adrien, hi! Sorry for late answer. We actually use Jira v7.1.7#71011-sha1:2526d7c .
Do you have JIRA 6.4.x? If that's correct, I've built
, which clears the list of errors when it synchronizes.
Hi Tigran,
The error message remains in the cache although the synchronization is successful. I'm not sure that's the only reason for this message, but I'll deliver a version to you tomorrow and we'll see whether it works better.
Thank you,
Adrien
Adrien, hi! We didn't change base URLs.
I tried to reproduce the issue. Here what I observe.
I have this:
1. links
2. reqs
3. issue without req link
Here are steps and results after that:
1. Add REQ-001 as a link to issue TP-1
2. Press Ok
3. Press sync in issue screen
4. Press + to add another req as a link
5. Add new req as a link
6. Press syncronize
7. Press OK
8. Press syncronize in issue screen
9. Press + again
here is the text:
10. Press Syncronize
11. Press OK
12. Press sync in issue screen
Steps 9-12 can be repeated again.