Connecteurs Free indiqués en erreur

Comportement attendu

J’utilise les connecteurs Free et Free Mobile pour récupérer mes factures dans mon Cozy, et la synchronisation périodique ainsi que la synchronisation manuelle fonctionnent.

Comportement constaté

Même si les synchronisations s’effectuent bien, ces deux connecteurs sont indiqués en erreur sur la page d’accueil Collect, avec le petit warning :warning: rouge en bas à droite.

Pour Free, j’ai le message Un problème semble s’être produit pendant la tentative de connexion à Free. Merci de réessayer ou de contacter le support sur notre forum.

Pour Free Mobile, j’ai le message Votre identifiant et/ou mot de passe ne sont pas corrects, bien que les dernières factures soient correctement récupérées.

Du côté du log /var/log/cozy/stack.log, je ne vois rien de suspect pendant les synchronisations, mais j’ai les erreurs suivantes à lors de l’affichage de la page Collect :

Mar 16 21:43:55 ns371506 cozy[20164]: time="2018-03-16T21:43:55+01:00" level=error msg="[http] GET /permissions/doctype/io.cozy.files/sharedWithOthers code=404, message=Not Found" domain=mon.cozy.chez.moi
Mar 16 21:43:55 ns371506 cozy[20164]: time="2018-03-16T21:43:55+01:00" level=error msg="[http] GET /permissions/doctype/io.cozy.files/sharedWithMe code=404, message=Not Found" domain=mon.cozy.chez.moi

J’ai essayé la même manip avec les traces de debug, mais c’est assez indigeste… Si c’est toutefois nécessaire pour l’investigation, je pourrai vous les fournir. Merci d’avance pour votre aide !

Configuration

Auto-hébergé sur Debian Stretch 9.4 avec les paquets suivants :

dpkg --list | grep cozy
ii  cozy                                         2018M1S5-1                     all          Cozy: Simple, Versatile, Yours
ii  cozy-coclyco                                 0.1.1-1                        all          Cozy: Simple, Versatile, Yours
ii  cozy-couchdb                                 2.1.1-0                        amd64        RESTful document oriented database
ii  cozy-nsjail                                  1.8-1                          amd64        A light-weight process isolation tool, making use of Linux namespaces
ii  cozy-stack                                   2018M1S5-1                     amd64        Cozy: Simple, Versatile, Yours

Hello @dohseven,

Est-ce que tu as accès à CouchDB, soit via curl, soit via futon ?

Si oui, tu peux jeter un œil à deux bases : mon-cozy-chez-moi%2Fio-cozy-konnectors-result contient pour chaque connecteur le résultat de la dernière exécution, tu pourrais voir si l’état des connecteurs (state) est done ou error.
Et pour avoir un historique des exécutions, tu peux consulter mon-cozy-chez-moi%2Fio-cozy-jobs`.

Hello @Clochix,

Merci pour ta réponse.

En regardant les résultats des connecteurs, je ne vois pas d’erreur :

curl -s -X GET "http://cozy:password@127.0.0.1:5984/mon-cozy-chez-moi%2Fio-cozy-konnectors-result/freemobile" | jq .
{
  "_id": "freemobile",
  "_rev": "13-b4938710bd56fd49e9a95f6c4f6ad123",
  "last_execution": "2018-03-20T04:50:12.618633026+01:00",
  "last_success": "2018-03-20T04:50:12.618632696+01:00",
  "account": "e0fa5d21560802d3b619aaa4948f6940",
  "account_rev": "",
  "state": "done",
  "error": ""
}
curl -s -X GET "http://cozy:password@127.0.0.1:5984/mon-cozy-chez-moi%2Fio-cozy-konnectors-result/free" | jq .
{
  "_id": "free",
  "_rev": "13-d849f651e6401a4e0709cded469dea36",
  "last_execution": "2018-03-20T02:36:17.23932331+01:00",
  "last_success": "2018-03-20T02:36:17.239323021+01:00",
  "account": "e0fa5d21560802d3b619aaa4948ea704",
  "account_rev": "",
  "state": "done",
  "error": ""
}

Pour les jobs c’est un peu plus compliqué à regarder en ligne de commande, je n’ai que des ids et ils ne sont pas forcéments rangés dans l’ordre chronologique… si tu as une commande qui me permet d’afficher les derniers jobs pour ces connecteurs, je suis preneur !

En tout cas, il semble bien qu’ils soient dans l’état done sans erreur. Je ne vois pas d’erreur non plus dans le log cozy à la date de la dernière synchro.

L’affichage du warning rouge dans l’interface Collect est basée là-dessus ou sur autre chose ?

Hello,

Pour les jobs, voici un exemple de requête (en utilisant jq, l’outil indispensable pour interagir avec Cozy :wink: ) :

curl -s "http://cozy:password@127.0.0.1:5984/mon-cozy-chez-moi%2Fio-cozy-jobs/_all_docs?include_docs=true | jq -r '.rows?[]?.doc | select(.worker == "konnector") | [.started_at, .message.konnector, .state, .error ] | join(";")' | sort | tail

Si tous les jobs sont à done, je ne vois pas trop pourquoi Collect affiche des erreurs :-S

Merci pour cette belle ligne de commande, je n’aurais pas réussi à la construire seul (ou du moins pas avant 3 semaines :smile:) !

Par contre tous les jobs sont bien en done, le mystère s’épaissit donc :

2018-03-15T12:00:51.815400402+01:00;free;done;
2018-03-15T12:03:31.828282822+01:00;freemobile;done;
2018-03-15T12:06:02.969343181+01:00;trainline;done;
2018-03-16T21:40:52.791980353+01:00;free;done;
2018-03-16T21:43:18.160746725+01:00;freemobile;done;
2018-03-16T21:47:29.729349629+01:00;free;done;
2018-03-20T02:36:00.104461906+01:00;free;done;
2018-03-20T02:48:00.087986468+01:00;trainline;done;
2018-03-20T02:50:00.076478842+01:00;ameli;done;
2018-03-20T04:50:00.094460251+01:00;freemobile;done;

J’ai tenté de regarder dans le repo Cozy dur GitHub quelles étaient les conditions pour afficher ce warning sur Collect, mais je me suis vite perdu. C’est peut-être de ce côté qu’il faudrait regarder (i.e. un bug d’affichage) si les jobs fonctionnent, non ?

Oui, l’erreur semble plutôt côté Collect. Est-ce que tu peux ouvrir les outils de développement de ton navigateur et regarder si lorsque tu ouvres Collect, tu as des erreurs dans la console ? (je crains que l’application n’affiche encore moult messages de debug au milieu desquels les erreurs ne sont pas forcément simples à trouver).
Ou regarder dans l’onglet Réseau si des requêtes échouent ?

Effectivement, c’est un peu bavard dans la console de debug du navigateur !

Je constate toutefois qu’il y a deux Unhandled promise rejection qui semblent correspondre à mes deux connecteurs en erreur, après une successions d’actions :

  • FETCH_REGISTRY_KONNECTORS_SUCCESS
  • RECEIVE_DATA
  • RECEIVE_DATA
  • RECEIVE_DATA

La raison pour tous les deux est Bad Request, avec un statut 400.

Et il y a aussi quelques warnings, mais ça semble moins grave :

Côté réseau, je retrouve ces statuts 400 Bad Request pour deux actions GET, toutes les deux vers l’adresse https://mon.cozy.chez.moi/data/io.cozy.files/_changes?style=all_docs&seq_interval=100&since=0&limit=100.

J’avoue que je ne sais pas trop ce que je regarde là, donc je ne sais pas trop si les informations que je donne sont pertinentes ou non. N’hésite pas à me demander plus d’infos ou le log complet si nécessaire !

Cela dépasse mes compétences, j’en appelle à un expert Collect, ping @gregory :wink:

Hello @Clochix et @gregory,

Désolé de relancer, je sais que vous avez pas mal de boulot avec le support des utilisateurs et les améliorations à développer, mais vous avez eu le temps de vous pencher un peu plus sur le sujet ?

Merci d’avance !

Hello @Clochix et @gregory,

J’ai creusé un peu de mon côté, et j’ai l’impression que les erreurs d’affichages sont dues à de vieux jobs qui ont échoué à un moment donné. Je m’explique : parmi mes 4 connecteurs, 2 ont toujours réussi et n’affichent pas d’erreur sur la page d’accueil Collect, alors que les 2 qui ont un jour échoué affichent une erreur.

Ce qui me met sur cette piste est la réponse à la requête vers https://mon.cozy.chez.moi/jobs/triggers?Worker=konnector qui passe pendant le chargement de la page :

{
  "data": [
    {
      "type": "io.cozy.triggers",
      "id": "e0fa5d21560802d3b619aaa4948eaef9",
      "attributes": {
        ...
        },
        "current_state": {
          "trigger_id": "e0fa5d21560802d3b619aaa4948eaef9",
          "status": "done",
          "last_success": "2018-04-10T02:36:00.505673939+02:00",
          "last_successful_job_id": "4cdf3eac8f06a2a0a75f8ddb0a0a3f2e",
          "last_execution": "2018-04-10T02:36:00.505673939+02:00",
          "last_executed_job_id": "4cdf3eac8f06a2a0a75f8ddb0a0a3f2e",
          "last_failure": "2018-02-06T21:23:24.35093395Z",
          "last_failed_job_id": "e0fa5d21560802d3b619aaa4948ebc47",
          "last_error": "Cannot read property length of undefined",
          "last_manual_execution": "2018-03-16T21:47:29.729349629+01:00",
          "last_manual_job_id": "4cdf3eac8f06a2a0a75f8ddb0a04895d"
        }
      },
      ...
      }
    },
    {
      "type": "io.cozy.triggers",
      "id": "e0fa5d21560802d3b619aaa4948f9826",
      "attributes": {
        ...
        },
        "current_state": {
          "trigger_id": "e0fa5d21560802d3b619aaa4948f9826",
          "status": "done",
          "last_success": "2018-04-10T04:50:00.115402454+02:00",
          "last_successful_job_id": "4cdf3eac8f06a2a0a75f8ddb0a0a8c2f",
          "last_execution": "2018-04-10T04:50:00.115402454+02:00",
          "last_executed_job_id": "4cdf3eac8f06a2a0a75f8ddb0a0a8c2f",
          "last_failure": "2018-02-06T21:23:57.610577559Z",
          "last_failed_job_id": "e0fa5d21560802d3b619aaa4948fa016",
          "last_error": "LOGIN_FAILED",
          "last_manual_execution": "2018-03-16T21:43:18.160746725+01:00",
          "last_manual_job_id": "4cdf3eac8f06a2a0a75f8ddb0a044a17"
        }
      },
      ...
      }
    },
    {
      "type": "io.cozy.triggers",
      "id": "e0fa5d21560802d3b619aaa494925bdd",
      "attributes": {
        ...
        },
        "current_state": {
          "trigger_id": "e0fa5d21560802d3b619aaa494925bdd",
          "status": "done",
          "last_success": "2018-04-10T02:48:00.12046849+02:00",
          "last_successful_job_id": "4cdf3eac8f06a2a0a75f8ddb0a0a4fa1",
          "last_execution": "2018-04-10T02:48:00.12046849+02:00",
          "last_executed_job_id": "4cdf3eac8f06a2a0a75f8ddb0a0a4fa1",
          "last_manual_execution": "2018-03-15T12:06:02.969343181+01:00",
          "last_manual_job_id": "4cdf3eac8f06a2a0a75f8ddb0a03d0a1"
        }
      },
      ...
      }
    },
    {
      "type": "io.cozy.triggers",
      "id": "e0fa5d21560802d3b619aaa4948e338f",
      "attributes": {
        ...
        },
        "current_state": {
          "trigger_id": "e0fa5d21560802d3b619aaa4948e338f",
          "status": "done",
          "last_success": "2018-04-10T02:50:00.075812482+02:00",
          "last_successful_job_id": "4cdf3eac8f06a2a0a75f8ddb0a0a5ab7",
          "last_execution": "2018-04-10T02:50:00.075812482+02:00",
          "last_executed_job_id": "4cdf3eac8f06a2a0a75f8ddb0a0a5ab7",
          "last_manual_execution": "2018-02-28T18:41:51.68557478Z",
          "last_manual_job_id": "4cdf3eac8f06a2a0a75f8ddb0a015c91"
        }
      },
      ...
      }
    }
  ],
  ...
}

Les connecteurs qui n’ont pas de last_failed_job_id s’affichent sans erreur, les autres non. Et celui qui a un "last_error": "LOGIN_FAILED" m’indique Votre identifiant et/ou mot de passe ne sont pas corrects. quand je clique dessus. Il semblerait donc que l’affichage se base sur d’anciennes informations erronées.

La question est donc de savoir si la requête devrait renvoyer ces jobs échoués ou si l’affichage devrait savoir les ignorer si un job plus récent a réussi.

Merci d’avance pour votre aide !

Bon, j’ai honte, c’est tout simplement mon application collect qui n’était pas à jour :rolling_eyes: ! Avec la dernière version je n’ai plus de soucis !

1 Like