Jira 8.12 EAP 02 is out

EAP releases provide a snapshot of our work-in-progress and give you an opportunity to test and fix your apps before the final release. Now, with this EAP, you can start testing Jira 8.12.

The main features of this release is the MySQL 8 support, improvements to the Audit log, and AUI upgrade to version 9. Have a look at the details here . Feel free to download the EAP from this page .
If you’re using maven.atlassian.com , make sure to download 8.12.0-m0003.

Should you have any comments, just post them below.

Happy testing,

The Jira team

3 Likes

@mmichalak I just tested the official Docker Image together with dockerized MySQL and I get a collation warning from troubleshooting tools.

Images used:

  • mysql:8.0.21
  • atlassian/jira-software:8.12.0-EAP02-jdk11

SQL to create initial DB:

mysql -h $DB_HOST -u root -padmin -e "CREATE DATABASE jira CHARACTER SET utf8mb4 COLLATE utf8mb4_bin"
mysql -h $DB_HOST -u root -padmin -e "CREATE USER 'jira'@'%' IDENTIFIED BY 'jira'"
mysql -h $DB_HOST -u root -padmin -e "GRANT ALL PRIVILEGES on jira.* TO jira@'%' WITH GRANT OPTION"
mysql -h $DB_HOST -u root -padmin -e "FLUSH PRIVILEGES"

This is the dbconfig generated by the installer:

<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>mysql8</database-type>
  <jdbc-datasource>
    <url>jdbc:mysql://address=(protocol=tcp)(host=jira-software-8-12-jdk11-with-mysql8-0-db)(port=3306)/jira?sessionVariables=default_storage_engine=InnoDB</url>
    <driver-class>com.mysql.cj.jdbc.Driver</driver-class>
    <username>jira</username>
    <password>jira</password>
    <pool-min-size>20</pool-min-size>
    <pool-max-size>20</pool-max-size>
    <pool-max-wait>30000</pool-max-wait>
    <validation-query>select 1</validation-query>
    <min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis>
    <time-between-eviction-runs-millis>300000</time-between-eviction-runs-millis>
    <pool-max-idle>20</pool-max-idle>
    <pool-remove-abandoned>true</pool-remove-abandoned>
    <pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
    <pool-test-on-borrow>false</pool-test-on-borrow>
    <pool-test-while-idle>true</pool-test-while-idle>
    <validation-query-timeout>3</validation-query-timeout>
  </jdbc-datasource>
</jira-database-config>

And I used this JDBC driver:

  • mysql-connector-java-8.0.15.jar

When I dump the database the create table statements look like this:

DROP TABLE IF EXISTS `AO_0A5972_NOTIFICATION_SETTING`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `AO_0A5972_NOTIFICATION_SETTING` (
  `ID` bigint NOT NULL AUTO_INCREMENT,
  `KEY` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `TYPE` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `USER_KEY` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `VALUE` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `index_ao_0a5972_not187736835` (`USER_KEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

Can you tell me what I am doing wrong? Thanks a lot :slight_smile:

This doc How to Fix the Collation and Character Set of a MySQL Database manually | Atlassian Support | Atlassian Documentation

Tells me to use utf8mb4 with Jira 8.* but something seems wrong.

Hi @clouless,
EAP unfortunately does not contain latest version of troubleshooting plugin. It will be released in a few days.
If you followed Connecting Jira applications to MySQL 5.7 | Administering Jira applications Data Center and Server 9.5 | Atlassian Documentation page it should work fine.

1 Like

Hi, ok good to know.
But I suggest to really update that guide for MySQL 8, since some options are not supported anymore by MySQL 8. What I found out was:

(1) GRANT does not implicitly create a user anymore, you need to do CREATE USER + GRANT PRIVILEGES (see above)
(2) Use the MySQL 8.x JDBC driver
(3) I think innodb_file_format=Barracuda and/or some other options are also not supported by MySQL Server 8

But ok I will ignore the troubleshooting thingy. My automated tests run through perfectly, so besides that all seems fine :slight_smile:

We have prepared a separate document for MySQL 8.0.

1 Like

Hi, @mmichalak, I see potential problems for vendors due to in CSS styles of Jira header (we already have such).
Nav element with .aui-header class has z-index: 4 and it’s stacking context is root html. In the same time <div id="content"> does not create stacking context, so any element inside <div id="content"> whose parent stacking context is root html with absolute/relative/fixed position and z-index >= 4 will be above navigation dropdowns.
We suggest to set position: relative and z-indexes to <header id="header"> and <div id="content"> so that any children of them be independent of each other.

Hi @GlebPlakhotnik,
I see your point; so far we didn’t put a stacking context on #content, because there’re some cases of legitimate elements inside #content overlapping the app header and we haven’t found issues in the UI without it.

In general, regular UI elements (ie. not modals, flags, etc.) follows the following z-index values:
app header (4) > sidebar (3) > sticky headers (2) > some components / elements on a page (1) > the rest

To my understanding many extensions of the UI don’t need to deal with z-index at all. In case of more sophisticated logic / bigger piece of the UI one can put its own stacking context in order to isolate that part from the rest of the application.

Could you share examples / your use cases that are affected?

Best,
Jira Team

Hi @mrzymski, thank you for the explanation. We don’t have big problems) so it’s no need to dive deeper.

Hi, @mrzymski. I see a bug with wiki editor.

Hi @GlebPlakhotnik, thanks for reporting.
The fix is already in place, it’ll be present in AUI 9.0.2 and Jira 8.12 final version.
Briefly speaking, there was a bug in the logic of data-aui-alignment-container attribute (Dropdowns - AUI Documentation).
Now, a dropdown menu is correctly aligned, to the left in this case.

Best,
Jira Team

1 Like