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

Show:
Adrien Ragot (Old account)
June 18, 2016, 1:39 PM

Ok then 1.4.6 is for you - it was published on the Atlassian Marketplace so you can upgrade from UPM.

TigranS
June 17, 2016, 7:29 PM

Adrien, hi! Sorry for late answer. We actually use Jira v7.1.7#71011-sha1:2526d7c .

Adrien Ragot (Old account)
June 8, 2016, 10:46 AM

Do you have JIRA 6.4.x? If that's correct, I've built

, which clears the list of errors when it synchronizes.

Adrien Ragot (Old account)
June 7, 2016, 11:11 PM

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

TigranS
June 7, 2016, 11:15 AM

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.

Resolved

Assignee

Unassigned

Reporter

TigranS

Labels

None

Participants

None

Components

Fix versions

Affects versions

Priority