Skip to content

Commit 3b603e4

Browse files
authored
Merge pull request #53 from rok4/feature/network-timeout
Configuration d'un timeout pour les lecture S3 et SWIFT
2 parents 3ca7ffa + 549c738 commit 3b603e4

File tree

10 files changed

+201
-134
lines changed

10 files changed

+201
-134
lines changed

.github/workflows/build-and-release.yaml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,25 @@ jobs:
1717
- name: Checkout project
1818
uses: actions/checkout@v3
1919

20+
- name: Get latest release info
21+
id: query_release_info
22+
uses: release-flow/keep-a-changelog-action@v2
23+
with:
24+
command: query
25+
version: latest
26+
27+
- name: Write release notes
28+
run: |
29+
echo "echo {{ steps.query-release-info.outputs.release-notes }} >notes.txt"
30+
2031
- name: Create Release
2132
id: create_release
2233
uses: ncipollo/release-action@v1
2334
with:
2435
token: ${{ secrets.GITHUB_TOKEN }}
2536
tag: ${{ github.ref_name }}
2637
name: Release ${{ github.ref_name }}
27-
generateReleaseNotes: true
38+
bodyFile: notes.txt
2839
draft: false
2940
prerelease: false
3041

CHANGELOG.md

Lines changed: 102 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,189 +1,167 @@
1-
## 2.0.5
1+
# Changelog
22

3-
### [Fixed]
3+
Tous les changements sont consignés dans ce fichier.
44

5-
* `LibtiffImage` : Gestion des tiff jpeg de photometrie YCbCr avec les tiffs palettes dans le _getline (élargissement du test)
5+
Le format est basé sur [Keep a Changelog](https://keepachangelog.com/) et ce projet respecte le [Semantic Versioning](https://semver.org/).
66

7-
## 2.0.4
7+
## [Unreleased]
88

9-
### [Fixed]
9+
### Added
1010

11-
* `Merge` : correction du nombre de méthode
11+
- `S3Context` et `SwiftContext` : possibilité de définir un timeout via la variable d'environnement `ROK4_NETWORK_TIMEOUT` (valeur à fournir en seconde)
1212

13-
## 2.0.3
13+
### Changed
1414

15-
### [Added]
15+
- Refonte du CHANGELOG au format [Keep a Changelog](https://keepachangelog.com/)
1616

17-
* `TiffHeader` : la valeur de nodata est ajoutée dans le header des Geotiff
17+
## [2.0.5] - 2025-07-23
1818

19-
### [Fixed]
19+
### Fixed
2020

21-
* `Style` : gestion d'une valeur par défaut pour la demande de nodata, en entrée et en sortie
21+
- `LibtiffImage` : Gestion des tiff jpeg de photometrie YCbCr avec les tiffs palettes dans le _getline (élargissement du test)
22+
- `Merge` : correction du nombre de méthode
2223

23-
## 2.0.2
24+
## [2.0.3] - 2025-04-08
2425

25-
### [Fixed]
26+
### Added
2627

27-
* `TiffDeflateEncoder` : l'encodage du résultat final n'est pas en deflate (seule la donnée dans le tiff l'est, et non le résultat complet)
28-
* `S3Context` : on retourne bien false lorsqu'une erreur est rencontrée lors du flush (close_to_write)
28+
- `TiffHeader` : la valeur de nodata est ajoutée dans le header des Geotiff
2929

30+
### Fixed
3031

31-
## 2.0.1
32+
- `Style` : gestion d'une valeur par défaut pour la demande de nodata, en entrée et en sortie
3233

33-
### [Added]
34+
## [2.0.2] - 2025-02-17
3435

35-
* `Keyword` : ajout d'un exporteur JSON (API Tiles)
36-
* `TileMatrixLimits` : ajout d'un exporteur JSON (API Tiles)
36+
### Fixed
3737

38-
## 2.0.0
38+
- `TiffDeflateEncoder` : l'encodage du résultat final n'est pas en deflate (seule la donnée dans le tiff l'est, et non le résultat complet)
39+
- `S3Context` : on retourne bien false lorsqu'une erreur est rencontrée lors du flush (close_to_write)
3940

40-
### [Added]
41+
## [2.0.1] - 2024-10-01
4142

42-
* Internalisation de la lib json
43-
* Ajout d'exporteur XML (via la lib boost) pour les entités Style, BoundingBox, Keyword, LegendURL, TileMatrixLimit et Style
44-
* Création d'un annuaire pour les CRS pour éviter les créations en double
43+
### Added
4544

46-
### [Changed]
45+
- `Keyword` : ajout d'un exporteur JSON (API Tiles)
46+
- `TileMatrixLimits` : ajout d'un exporteur JSON (API Tiles)
47+
- Internalisation de la lib json
48+
- Ajout d'exporteur XML (via la lib boost) pour les entités Style, BoundingBox, Keyword, LegendURL, TileMatrixLimit et Style
49+
- Création d'un annuaire pour les CRS pour éviter les créations en double
4750

48-
* Passage complet en snake case
49-
* Le format de canal contient le nombre de bits d'encodage
50-
* Renommage StyledImage -> PaletteImage
51-
* Renommage lzwEncoder -> LzwCompressor
52-
* Renommage lzwDecoder -> LzwUncompressor
53-
* Renommage pkbEncoder -> PkbCompressor
54-
* Renommage pkbDecoder -> PkbUncompressor
51+
### Changed
5552

56-
### [Deprecated]
53+
- Passage complet en snake case
54+
- Le format de canal contient le nombre de bits d'encodage
55+
- Renommage StyledImage -> PaletteImage
56+
- Renommage lzwEncoder -> LzwCompressor
57+
- Renommage lzwDecoder -> LzwUncompressor
58+
- Renommage pkbEncoder -> PkbCompressor
59+
- Renommage pkbDecoder -> PkbUncompressor
5760

58-
Liste de fonctionnalités dépréciées.
61+
### Removed
5962

60-
### [Removed]
63+
- Suppression de la notion 'inspire' dans la gestion des styles
64+
- Suppression de la classe ConvertedChannelsImage
65+
- Suppression de la gestion de la compilation avec la librairie Kakadu
66+
- Suppression des factory pour les classes filles de Image
67+
- Suppression de la fonctionnalité de crop dans Rok4Image
6168

62-
* Suppression de la notion 'inspire' dans la gestion des styles
63-
* Suppression de la classe ConvertedChannelsImage
64-
* Suppression de la gestion de la compilation avec la librairie Kakadu
65-
* Suppression des factory pour les classes filles de Image
66-
* Suppression de la fonctionnalité de crop dans Rok4Image
69+
### Fixed
6770

68-
### [Fixed]
71+
- Correction du nettoyage des annuaires de TMS et styles
6972

70-
* Correction du nettoyage des annuaires de TMS et styles
73+
## [1.4.0] - 2024-03-21
7174

75+
### Added
7276

73-
## 1.4.0
74-
75-
### [Added]
76-
77-
* Stockage objet (S3, Swift et Ceph)
78-
* Possibilité de définir un nombre de tentatives pour les lectures (1 par défaut) : variable d'environnement `ROK4_OBJECT_READ_ATTEMPTS`
79-
* Possibilité de définir un nombre de tentatives pour les écritures (1 par défaut) : variable d'environnement `ROK4_OBJECT_WRITE_ATTEMPTS`
77+
- Stockage objet (S3, Swift et Ceph)
78+
* Possibilité de définir un nombre de tentatives pour les lectures (1 par défaut) : variable d'environnement `ROK4_OBJECT_READ_ATTEMPTS`
79+
* Possibilité de définir un nombre de tentatives pour les écritures (1 par défaut) : variable d'environnement `ROK4_OBJECT_WRITE_ATTEMPTS`
8080
* Possibilité de définir un temps d'attente, en secondes, entre les tentatives (5 par défaut) : variable d'environnement `ROK4_OBJECT_ATTEMPTS_WAIT`
8181

82-
## 1.3.1
83-
84-
### [Fixed]
85-
86-
* `S3Context` : pour éviter des conflits dans une utilisation multithreadée, la sortie de la fonction HMAC (openssl) est dédiée.
82+
## [1.3.1] - 2024-03-14
8783

88-
## 1.3.0
84+
### Added
8985

90-
### [Added]
91-
92-
* Gestion du multi cluster S3 :
86+
- Gestion du multi cluster S3 :
9387
* nom du cluster = hôte du cluster avec le port (pas de protocole)
9488
* Pour préciser le cluster auquel on s'adresse, le nom du bucket aura la forme `<nom du bucker>@<nom du cluster>`
9589
* Les variables d'environnement `ROK4_S3_URL`, `ROK4_S3_KEY` et `ROK4_S3_SECRETKEY` peuvent contenir une liste de valeurs séparées par des virgules
9690
* **Dans** les descripteurs de pyramide et leur liste ou les objets symboliques, on peut ne pas préciser le nom du cluster : on sait alors qu'on travaille sur le même cluster que celui de l'objet d'origine
9791

98-
### [Fixed]
99-
100-
* Attribute : dans les valeurs des attributs, on échappe les éventuelles back quotes
101-
102-
## 1.2.4
103-
104-
### [Fixed]
105-
106-
* `Cache` : les modifications dans le cache quand il n'est pas par thread (index des dalles, TMS et styles) se font en exclusion mutuelle (mutex lock et unlock)
107-
108-
## 1.2.3
109-
110-
### [Fixed]
111-
112-
* `Level` : Ajout de pixels de marge lors de la reprojection des données d'un niveau de pyramide
113-
114-
## 1.2.2
115-
116-
### [Fixed]
117-
118-
* `LibopenjpegImage` : la lecture des images JPEG 2000 tuilées recharge l'image à la lecture de chaque tuile
119-
120-
## 1.2.1
92+
### Fixed
12193

122-
### [Fixed]
94+
- `S3Context` : pour éviter des conflits dans une utilisation multithreadée, la sortie de la fonction HMAC (openssl) est dédiée.
95+
- Attribute : dans les valeurs des attributs, on échappe les éventuelles back quotes
12396

124-
* `LegendURL` : la fonction de copie d'une instance recopie bien le format et le href
125-
* `LibtiffImage` : correction du calcul de nombre de tuile dans la largeur lors de la lecture d'une image dont la largeur est un multiple de la taille de la tuile
126-
* `BoundingBox` : lorsque l'on met en phase une bbox, les 4 bords doivent être traités indépendemment les uns des autres (avec un calcul de phase pour chacun)
97+
## [1.2.4] - 2023-12-06
12798

128-
### [Changed]
99+
### Changed
129100

130-
* La variable d'environnement `ROK4_TMS_NO_CACHE` permet de désactiver le cache de chargement des TMS
131-
* La variable d'environnement `ROK4_STYLES_NO_CACHE` permet de désactiver le cache de chargement des styles
101+
- La variable d'environnement `ROK4_TMS_NO_CACHE` permet de désactiver le cache de chargement des TMS
102+
- La variable d'environnement `ROK4_STYLES_NO_CACHE` permet de désactiver le cache de chargement des styles
132103

133-
## 1.1.2
104+
### Fixed
134105

135-
### [Changed]
106+
- `Cache` : les modifications dans le cache quand il n'est pas par thread (index des dalles, TMS et styles) se font en exclusion mutuelle (mutex lock et unlock)
107+
- `Level` : Ajout de pixels de marge lors de la reprojection des données d'un niveau de pyramide
108+
- `LibopenjpegImage` : la lecture des images JPEG 2000 tuilées recharge l'image à la lecture de chaque tuile
109+
- `LegendURL` : la fonction de copie d'une instance recopie bien le format et le href
110+
- `LibtiffImage` : correction du calcul de nombre de tuile dans la largeur lors de la lecture d'une image dont la largeur est un multiple de la taille de la tuile
111+
- `BoundingBox` : lorsque l'on met en phase une bbox, les 4 bords doivent être traités indépendemment les uns des autres (avec un calcul de phase pour chacun)
136112

137-
* Le test d'existence d'un objet ou d'un fichier n'est plus une lecture de 1 octet mais une implémentation spécifique à chaque type
138-
* Les TMS et les styles sont cherchés sur le stockage avec et sans extension JSON
113+
## [1.1.2] - 2023-09-14
139114

140-
### [Fixed]
115+
### Added
141116

142-
* Table
143-
* Correction d'une typo dans l'écriture du metadata.json : filedsCount -> fieldsCount
144-
* Style
145-
* La valeur de nodata en sortie d'un style est la première valeur de la palette (et non la couleur pour la valeur 0)
146-
147-
## 1.1.1
148-
149-
### [Fixed]
150-
151-
* LibopenjpegImage
152-
* Fixe sur la lecture des images à tuile unique suite au zonage
153-
154-
## 1.1.0
155-
156-
### [Added]
157-
158-
* LibtiffImage
117+
- LibtiffImage
159118
* Capacité à lire des images tuilées
160119
* Capacité à lire des images avec palette
161120

162-
### [Changed]
121+
### Changed
163122

164-
* LibopenjpegImage
123+
- Le test d'existence d'un objet ou d'un fichier n'est plus une lecture de 1 octet mais une implémentation spécifique à chaque type
124+
- Les TMS et les styles sont cherchés sur le stockage avec et sans extension JSON
125+
- LibopenjpegImage
165126
* Lecture des images à tuile unique par paquet de 256 lignes
166127
* Lecture des images tuilées par tuile
167128

129+
### Fixed
168130

169-
## 1.0.3
131+
- Table
132+
* Correction d'une typo dans l'écriture du metadata.json : filedsCount -> fieldsCount
133+
- Style
134+
* La valeur de nodata en sortie d'un style est la première valeur de la palette (et non la couleur pour la valeur 0)
135+
- LibopenjpegImage
136+
* Fixe sur la lecture des images à tuile unique suite au zonage
137+
138+
## [1.0.3] - 2023-03-14
170139

171140
Les librairies sont gérées de manière indépendantes, conditionnées pour être installées en tant que dépendance dynamique. Le projet a son propre site, avec toutes les versions et leur documentation.
172141

173-
### [Added]
142+
### Added
174143

175-
* Librairie, partie `utils` :
144+
- Librairie, partie `utils` :
176145
* Styles et TMS sont chargés dans un annuaire, qui connait le dossier de stockage des fichiers / objets les définissant
177146
* Les pyramide sont chargées depuis leur descripteur, fichier ou objet
178-
* Librairie, partie `storage` : gère un annuaire de contextes de stockages, fichier, Swift, S3 ou Ceph
179-
* Librairie, partie `image` : permet la lecture et le calcul ligne par ligne
180-
* Librairie, partie `datasource` : permet la lecture en une fois d'un buffer de donnée
181-
* Librairie, partie `datasource` : permet la lecture par morceau d'un buffer de donnée
182-
* Librairie, partie `processors` : gère plusieurs noyaux d'interpolation et la conversion de pixel
183-
184-
* Intégration continue :
147+
- Librairie, partie `storage` : gère un annuaire de contextes de stockages, fichier, Swift, S3 ou Ceph
148+
- Librairie, partie `image` : permet la lecture et le calcul ligne par ligne
149+
- Librairie, partie `datasource` : permet la lecture en une fois d'un buffer de donnée
150+
- Librairie, partie `datasource` : permet la lecture par morceau d'un buffer de donnée
151+
- Librairie, partie `processors` : gère plusieurs noyaux d'interpolation et la conversion de pixel
152+
- Intégration continue :
185153
* Compilation du fichier librok4.so et conditionnement dans des paquets debian avec les headers, avec et sans la prise en charge du stockage ceph
186154
* Jeu des tests unitaires
187155
* Compilation de la documentation et publication sur la branche gh-pages
188-
189-
* Ajout du mode DEBUG à la compilation
156+
- Ajout du mode DEBUG à la compilation
157+
158+
[Unreleased]: https://github.com/rok4/core-cpp/compare/v2.0.5...HEAD
159+
[2.0.5]: https://github.com/rok4/core-cpp/compare/v2.0.3...v2.0.5
160+
[2.0.3]: https://github.com/rok4/core-cpp/compare/v2.0.2...v2.0.3
161+
[2.0.2]: https://github.com/rok4/core-cpp/compare/v2.0.1...v2.0.2
162+
[2.0.1]: https://github.com/rok4/core-cpp/compare/v1.4.0...v2.0.1
163+
[1.4.0]: https://github.com/rok4/core-cpp/compare/v1.3.1...v1.4.0
164+
[1.3.1]: https://github.com/rok4/core-cpp/compare/v1.2.4...v1.3.1
165+
[1.2.4]: https://github.com/rok4/core-cpp/compare/v1.1.2...v1.2.4
166+
[1.1.2]: https://github.com/rok4/core-cpp/compare/v1.0.3...v1.1.2
167+
[1.0.3]: https://github.com/rok4/core-cpp/releases/tag/v1.0.3

CONTRIBUTING.md

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,30 @@ Merci d'envisager de contribuer à ce projet !
44

55
## Pull request
66

7-
Le titre de la PR est utilisé pour constituer automatiquement les notes de release. Vous pouvez préciser en commentaire de votre PR des détails qui seront ajoutés dans le fichier `CHANGELOG.md` par les mainteneurs du projet.
8-
9-
Le formalisme du changelog est le suivant, en markdown :
7+
Complétez le fichier `CHANGELOG.md`, dans la partie `[Unreleased]`, en précisant les modifications fonctionnelles apportées. Celles ci seront utilisées pour rédiger le message de release sur GitHub. Le format est basé sur [Keep a Changelog](https://keepachangelog.com/). Les sections sont les suivantes :
108

119
```md
12-
### [Added]
10+
### Added
1311

1412
Liste de nouvelles fonctionnalités.
1513

16-
### [Changed]
14+
### Changed
1715

1816
Liste de fonctionnalités existantes modifiées.
1917

20-
### [Deprecated]
18+
### Deprecated
2119

2220
Liste de fonctionnalités dépréciées.
2321

24-
### [Removed]
22+
### Removed
2523

2624
Liste de foncitonnalités retirées.
2725

28-
### [Fixed]
26+
### Fixed
2927

3028
Liste de corrections fonctionnelles.
3129

32-
### [Security]
30+
### Security
3331

3432
Liste de corrections de sécurité.
3533
```

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ Leur définition est contrôlée à l'usage.
6666
- `ROK4_SWIFT_TOKEN_FILE` afin de sauvegarder le token d'accès, et ne pas le demander si ce fichier en contient un
6767
* Pour configurer l'usage de libcurl (intéraction SWIFT et S3)
6868
- `ROK4_SSL_NO_VERIFY`
69+
- `ROK4_NETWORK_TIMEOUT` : temps en secondes d'inactivité d'une requête avant de la stopper. Aucun temps défini côté client si aucune valeur fournie
6970
- `HTTP_PROXY`
7071
- `HTTPS_PROXY`
7172
- `NO_PROXY`

include/rok4/storage/Context.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
#define ROK4_OBJECT_READ_ATTEMPTS "ROK4_OBJECT_READ_ATTEMPTS"
5858
#define ROK4_OBJECT_WRITE_ATTEMPTS "ROK4_OBJECT_WRITE_ATTEMPTS"
5959
#define ROK4_OBJECT_ATTEMPTS_WAIT "ROK4_OBJECT_ATTEMPTS_WAIT"
60+
#define ROK4_NETWORK_TIMEOUT "ROK4_NETWORK_TIMEOUT"
6061

6162
/**
6263
* \author Institut national de l'information géographique et forestière

0 commit comments

Comments
 (0)