Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tutoriel rafraichir des multi-validations #2462

Closed
AntoineAugusti opened this issue Jun 17, 2022 · 4 comments
Closed

Tutoriel rafraichir des multi-validations #2462

AntoineAugusti opened this issue Jun 17, 2022 · 4 comments

Comments

@AntoineAugusti
Copy link
Member

Cette issue détaille les étapes que j'ai suivi pour relancer des multi-validations qu'on avait besoin de recalculer, car la version du validateur GTFS avait changé.

Les grandes étapes :

  • identifier les resource_history à valider de nouveau
  • supprimer les multi_validation concernées
  • relancer les multi_validation pour les resource_history

Dans mon cas je voulais relancer la validation pour la dernière historisation de ressources GTFS dont la dernière version date d'avant 2022-06-01.

select *
from multi_validation mv
where mv.resource_history_id in (
  select max_rh_id from (
    select rh.resource_id, max(rh.id) max_rh_id
    from resource_history rh
    where rh.resource_id in (
      select rh.resource_id
      from resource_history rh
      join resource r on r.id = rh.resource_id and r.format = 'GTFS'
      group by rh.resource_id
      having max(rh.inserted_at) <= '2022-06-01'
    )
    group by 1
  ) t
)

en plusieurs étapes. Une fois qu'on a confirmé que c'est bien ce qu'on veut, on peut remplacer le select * par un delete, mais avant il faut sauvegarder la liste des resource_history.id, à l'étape max_rh_id.

J'ai ensuite fait un rapide script qui dispatch le job de MultiValidation, en prenant soin d'espacer un minimum les jobs. Dans mon cas j'en avais moins de 300 donc ce n'était pas trop grave non plus.

ids = [132,163,221,378,2069,2070,2574,2913,3730,3731,3732,3733,3979,4121,4122,4255,4256,4258,4399,4415,4895,4970,4971,6499,6528,6529,6571,6579,6584,7056,7472,7586,7595,7596,7598,7599,7600,7601,7602,7616,8353,8470,8471,8473,8474,8732,8889,9015,9097,9098,9099,9331,9359,9393,9422,9423,9424,9425,9426,9428,9429,9438,9609,9701,9702,10017,10018,10021,10183,10184,10185,10189,10297,10529,10531,10598,10601,10712,10716,10721,10722,10724,10727,10728,10729,10730,10731,10745,10746,11139,11350,11613,11620,11622,11671,11672,11673,11684,11917,11919,11921,11924,11925,12261,12415,12416,12527,13306,13318,13319,13327,13566,13578,13579,13581,13582,13585,14396,15047,15090,15267,15309,15385,15461,15480,15481,15482,15483,15486,15487,15593,15624,15626,15708,15749,15768,15791,16050,16051,16080,16081,16321,16322,16323,16360,16610,16709,16823,16832,16838,17010,17013,17108,17110,17130,17409,17780,17864,17892,17926,18115,18197,18215,18415,18416,18622,18733,18908,18951,18959,19121,19169,19176,19277,19278,19282,19284,19285,19286,19435,19705,19757,20550,20584,20709,20815,20908,20923,21030,21193,21216,21482,21594,21631,21696,21731,21768,21949,21989,22099,22175,22208,22276,22320,22519,22535,22962,22964,22970,22984,22986,22990,23217,23294,23297,23319,23675,23704,23976,24143,24157,24168,24422,24443,24624,24804,24941,25040,25048,25061,25064,25069,25078,25081,25085,25089,25091,25093,25168,25172,25174,25182,25584,25618,25646,25737,25790,25874,26568,26648,26800,26809,26810,26832,26837,26849,26851,26855,26874,26876,26909,27004,27023,27024,27133,27243,27361,27480,27527,27534,27634,27647,27839,27898,27899,28017,28030,28083,28390,28424,28498,28503,28533,28555,28566,28586,28602,28632]

ids
|> Enum.with_index
|> Enum.each(fn {rh_id, i} ->
  %{resource_history_id: rh_id}
  |> Transport.Jobs.ResourceHistoryValidationJob.new(schedule_in: i)
  |> Oban.insert!()
end)

J'ai lancé ça sur prod-worker et j'ai vérifié la bonne exécution avec le dashboard des jobs et la base de données. À noter qu'on peut exécuter à nouveau la requête initiale pour vérifier que multi_validation se remplit de nouveau.

@AntoineAugusti AntoineAugusti changed the title Rafraichir des multi-validation Tutoriel rafraichir des multi-validation Jun 17, 2022
@AntoineAugusti AntoineAugusti changed the title Tutoriel rafraichir des multi-validation Tutoriel rafraichir des multi-validations Jun 17, 2022
@AntoineAugusti
Copy link
Member Author

Je pense qu'il est inévitable qu'on ait des outils pour faire ça de manière plus systématique et sûre à l'avenir :)

@AntoineAugusti
Copy link
Member Author

Voir la discussion qui a déclenché ce besoin

@fchabouis
Copy link
Contributor

Idéalement, il faudrait noter les multi_validations candidates à l'update, relancer les validations, puis supprimer les anciennes.
Si on commence par supprimer, elles sont supprimées du site tant que les nouveslles n'ont pas tourné.

@AntoineAugusti
Copy link
Member Author

Je ferme, on est conscients du problème et des choses à faire. C'est utile d'avoir une trace !

@AntoineAugusti AntoineAugusti closed this as not planned Won't fix, can't repro, duplicate, stale Sep 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants