12th of December, 2016
Important for Structure 2.x users! If you currently use Structure 2.11.2 or an earlier version, it is very important that you read Structure 3.0 Release Notes before upgrading.
Structure 3.4 is a major update in the Structure 3 series. It contains several new features:
Upgrade is recommended to all users.
Changes in Detail
Quick transformations, also known as "quick filters", are predefined transformations that may be configured by the structure owner and then quickly turned on, separately or in combination.
Previously, Structure had only two predefined quick transformations – Unresolved and Assigned to me. Now it is possible to define your own quick transformations and share them with the team.
Documentation: Quick Transformations
Integration with Portfolio for JIRA
We have added support for Parent Link field in Portfolio for JIRA.
Now, when you have Portfolio installed, you get two new generators:
Both generators support updates, so you can change the Parent Link field by dragging and dropping issues.
This feature allows you to recreate in Structure the hierarchy you have in Portfolio and then build on top of it.
Issue Details Layout on Project Page
Good news for those of you who prefer to use Project tab with Structure, rather than Structure Board – we have added "Grid + Details" layout to those available on the project page.
See Viewing Issue Details for documentation about this layout.
Grouping by Text Field
We have added a special generator that lets you group by a text attribute. A common example is grouping by the value of a custom text field.
To use this grouper, select Automation | +, then Group, and find Text Attribute... in the drop-down list. In the dialog that follows, select the desired attribute.
There are a few performance improvements in this version:
We are finally releasing our stable API for Structure 3 series.
With the introduction of the new architecture earlier this year we had to make breaking changes to the API and took some time to work out the kinks and make it stable. Structure 3.4 ships with Structure API 16.0.0, which can be used in your custom plugins or from integration scripts.
We have documented the most important parts of the API but the documentation work still continues. You can expect that API coverage will increase with every new version.
Documentation: Structure Developer's Guide
Notable Fixes and Improvements
The following other issues have been addressed in Structure 3.4:
There are also other bug fixes and improvements.
Structure 3.4 and all extensions support JIRA versions from 7.0 to 7.2. All editions of JIRA (JIRA Core, JIRA Software, JIRA Service Desk) are supported. JIRA Data Center is supported.
Structure.Pages Upgrade Required
Please note that if you're using Structure.Pages, you will need to upgrade it to version 1.2.0.
See Structure.Pages 1.2 Release Notes for more information about updates in Structure.Pages.
Structure.Testy Upgrade Required
Please note that if you're using Structure.Testy, you will need to upgrade it to version 2.2.0.
Structure.Testy 2.2 includes new high-level API that makes it easier to integrate your scripts with Testy and update test statuses programmatically.
Installation and Upgrade
If your JIRA server does not have Structure yet, the installation is simple:
Upgrade procedure from versions 3.x.x is simple:
Enterprise Deployment Notes
Structure 3.4 is a fairly serious update. A lot of code underwent refactoring, performance optimization and testing.
The following changes are quite important for the large-scale instances.
New implementation of RowManager component
We have rewritten the component that is central to the Structure's operation. The component's role is to store temporary rows as they are generated by Automation engine. The previous version was using "MapDB" library and offloading the stored values to disk. This turned out to be unreliable in some circumstances and under a heavy load.
The new version is much simpler and efficient, however, it does store this information in memory. The amount of data stored is not overly large, but current implementation never removes data from memory once it is stored. Therefore, on an active enough and large enough instance, this component may eventually grow to take a lot of memory resources or even cause an OutOfMemoryError.
Therefore, JIRA administrators on large instances are advised to keep an eye on the amount of Heap memory consumed by JIRA's Java process, and if it reaches what you'd consider to be a high threshold, you can clean up the memory taken by Structure with a simple operation: disable Structure plugin and then enable it back.
We are continuing our work on improving this component. Our next versions will contain improvements for this aspect.
Indexing on Data Center
We have identified a problem that can possibly manifest on JIRA Data Center cluster, when a node wants to recover indexes (from a downloaded index zip from another node), but it happens to be running a Structure synchronizer. As synchronizers used to take read lock on reindexing, they prevented full-stop reindex and index recovery from happening at the same time with synchronization. But on large instances a single synchronization job may execute for a long time – and this caused "Wait attempt timed out" error on the reindexing node.
The new locking mechanism, which is added in Structure 3.4, does not take read lock for more than a fragment of a second. While still ensuring that Structure's synchronizers and generators would execute based only on consistent query results, it allows JIRA full reindex or index recovery to happen at any time.
Improved Start-up Sequence
We have changed the way Structure plugin starts. Since we only support JIRA 7.0 or later with this version, we were to use some of the improvements Atlassian team prepared in JIRA 7 to increase reliability of the start sequence.
The related problem that happened to our customers in the past was that the plugin wouldn't start – it would wait for Active Objects component (provided by JIRA) to become available, but fail after 60 seconds of waiting. Usually, another attempt to manually start Structure would succeed.
With the new start-up sequence, the probability of such behavior should be less. Unfortunately, it's hard to tell precisely, because there's a dependency on JIRA subsystem. However, the plugin start-up has become much more predictable and repeatable.
Most of the performance improvements mentioned in the Release Notes above are quite important for large-scale instances.
Testing on Staging Environment
The following checks are suggested for Structure 3.4 on a staging environment with production data.