Project

General

Profile

Demande #3255

Créer un dépôt public pour la version Chapril

Added by Christian P. Momon about 1 year ago. Updated 4 months ago.

Status:
Fermé
Priority:
Normale
Start date:
08/06/2018
Due date:
% Done:

0%


Description

Le Chapril héberge un service Framadate dont le code est modifié :
- personnalisation (pied de page des notifications courriels…) ;
- ajout de fonctionnalités (purge automatique pour les CGU…).

Actuellement, les modifications sont faites dans des branches git localement. Celles-ci ne sont pas accessibles par l'extérieur autrement que via root@.

Donc il faudrait un dépôt public où mettre les branches Chapril.


Related issues

Blocked by Admins - Demande #3269: Passer la base de données de Agir en Charset utf8mb4 + Format Barracuda Fermé 08/15/2018

History

#1 Updated by Christian P. Momon about 1 year ago

  • Project changed from Chapril to date.chapril.org
  • Subject changed from Framadate – Créer un dépôt public pour la version Chapril to Créer un dépôt public pour la version Chapril

#2 Updated by Christian P. Momon about 1 year ago

  • Status changed from Nouveau to En cours de traitement
  • Assignee set to Christian P. Momon

#3 Updated by Christian P. Momon about 1 year ago

Création du dépôt : fait.

Par contre, l'indexation par Redmine plante sur le commit suivant : https://framagit.org/framasoft/framadate/commit/c1ea6ae2a8c246c567c004afa2357ded2a5e0a36

Il contient des caractères graphiques : 🍾 🎉

L'erreur :

(April) root@agir:/usr/share/redmine# ./bin/rails runner "Repository.fetch_changesets" -e production
/usr/lib/ruby/vendor_ruby/mysql2/client.rb:120:in `_query': Mysql2::Error: Incorrect string value: '\xF0\x9F\x8D\xBE \xF0...' for column 'comments' at row 1: INSERT INTO `changesets` 
(`repository_id`, `revision`, `scmid`, `committer`, `commit_date`, `committed_on`, `comments`) 
VALUES 
(21, 'c1ea6ae2a8c246c567c004afa2357ded2a5e0a36', 'c1ea6ae2a8c246c567c004afa2357ded2a5e0a36', 'Thomas Citharel <tcit@tcit.fr>', '2018-04-18', '2018-04-18 12:46:01',
 'Implement saving polls in localstorage and finding them\n\nAlso, this brings VueJS and MomentJS in Framadate, 🍾 🎉\n\nSigned-off-by: Thomas Citharel <tcit@tcit.fr>'
) (ActiveRecord::StatementInvalid)
        from /usr/lib/ruby/vendor_ruby/mysql2/client.rb:120:in `block in query'
[…]

#4 Updated by Vincent-Xavier JUMEL about 1 year ago

Certainement lié à [[https://www.redmine.org/issues/5793]] Je n'ai pas le temps d'investiguer davantage.

#5 Updated by Christian P. Momon about 1 year ago

C'est confirmé, c'est bien ça. RH a recommandé la commande suivante :


MariaDB [redmine]> show create table changesets;

| changesets | CREATE TABLE `changesets` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `repository_id` int(11) NOT NULL,
  `revision` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `committer` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `committed_on` datetime NOT NULL,
  `comments` longtext COLLATE utf8_unicode_ci,
  `commit_date` date DEFAULT NULL,
  `scmid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `changesets_repos_rev` (`repository_id`,`revision`),
  KEY `index_changesets_on_user_id` (`user_id`),
  KEY `index_changesets_on_repository_id` (`repository_id`),
  KEY `index_changesets_on_committed_on` (`committed_on`),
  KEY `changesets_repos_scmid` (`repository_id`,`scmid`)
) ENGINE=InnoDB AUTO_INCREMENT=7186 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC |

Donc, même si tout est bien configuré en utf8mb4 (Ruby, Redmine, la base, etc.), chaque table peut avoir son propre encoding et là c'est UTF8. Donc pas le bon pour les emoji…

#6 Updated by Romain H. about 1 year ago

  • Blocked by Demande #3269: Passer la base de données de Agir en Charset utf8mb4 + Format Barracuda added

#7 Updated by Christian P. Momon about 1 year ago

Un autre lien plein d'explications : http://blog.andriylesyuk.com/4-byte-utf-8-problem-in-redmine-and-how-to-fix-it/

Donc il semble que la solution passe par 2 étapes :

1) Barracuda

Nous sommes en Antelope :


MariaDB [redmine]> show variables like 'innodb_file_format';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| innodb_file_format | Antelope |
+--------------------+----------+
1 row in set (0.00 sec)

Or, le lien dit : « But, these row formats are incompatible with the older MySQL table file format, which is called Antelope and which you are probably using (if you experience the UTF-8 problem and/or the column size issue). So, the solution is to also migrate your database tables to the new Barracuda file format ».

Donc, il faudrait passer à :


innodb_file_format    = Barracuda

2) convertir les tables en utf8mb4 :


ALTER TABLE <table> ROW_FORMAT=DYNAMIC, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Cette commande génère l'erreur suivante si l'étape 1) n'est pas faite :

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

Est-il possible de faire l'étape 1 sans détruire la base ?

#8 Updated by Christian P. Momon about 1 year ago

Pour information, problème voisin déjà rencontré : #2378.

#9 Updated by Edouard Dausque 12 months ago

  • Target version set to Mise en production Chapril

#10 Updated by Christian P. Momon 11 months ago

  • Status changed from En cours de traitement to Résolu

Suite au traitement du ticket #3269, le problème est résolu.

#11 Updated by Christian P. Momon 11 months ago

Mise à jour de la page des services du chapril : https://www.chapril.org/services.html et suppression du tgz temporaire.

#12 Updated by Didier Clermonté 4 months ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF