IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Firedac et multithreading


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 914
    Par défaut Firedac et multithreading
    Bonjour à tous !

    Je me retrouve parfois avec des erreurs d'accès concurrents entre deux tâches d'une même application que je ne m'explique pas.

    Serveur local MariaDB (v10.3.14), configuration de base. La tâche principale avec un FDConnection pour de l'affichage et une tâche de mise à jour avec ses propres FDConnection et des BatchMove (accès à un serveur distant MySQL par VPN).

    L'ensemble fonctionne bien mais il arrive sporadiquement que les deux tâches génèrent des erreurs comme si la même session serveur étaient partagée par les deux connections (même user, même password) et que les appels n'étaient pas sérialisés. Dans le faits, ce n'est pas le cas.

    Erreur tâche principale :
    [FireDAC][Phys][MySQL] Query execution was interrupted.

    Et au même instant dans la tâche de mise à jour :
    [FireDAC][Phys][MySQL]-326. Impossible de réaliser l'action, car l'action précédente est en cours.

    Je pourrais comprendre qu'un lock soit mis en place à l'écriture mais une seule tâche devrait être affectée, pas les deux !
    Il y a création d'une table temporaire pour l'affichage. Est-ce lié ?
    Ou ai-je loupé quelque chose au niveau de la configuration des FDConnection ou BatchMove ?

    Si vous avez des idées ! Merci d'avance

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Bonsoir

    Tes TFDConnexion partagent-ils la connexion physique (par un alias) ou recrées-tu une connexion par thread ?

    Cet article de la doc t'aidera peut-être à trouver une piste :
    http://docwiki.embarcadero.com/RADSt...ding_(FireDAC)

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 914
    Par défaut
    Il y a une connexion par tâche. Pas de partage, FDManager ou pooling.

  4. #4
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Si tu te connectes avec deux TFDConnection à la même base en utilisant les paramètres il est possible que ta supposition soit la bonne (partage de la connexion côté FireDAC ou côté MariaDB), mais rien de sûr là-dessus.

    Tu peux faire des tests et regarder si tu as bien X connections ouvertes sur la base de données en regardant ses statistiques.

    tu peux aussi attendre quelques jours et faire des tests sur la 10.3.3, quelques petites choses ont été changées sur FD, mais je ne suis pas certain que ça te concernerait. A tester en tout cas.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 577
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par pprem Voir le message
    tu peux aussi attendre quelques jours et faire des tests sur la 10.3.3, quelques petites choses ont été changées sur FD, mais je ne suis pas certain que ça te concernerait.
    Une annonce non officielle qui nous mets sur des charbons ardents ou plutôt tièdes

  6. #6
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    je n'ai rien écrit, ce n'était pas moi, on a piraté mon ordinateur !

Discussions similaires

  1. [Kylix] Multithreads la galère
    Par Oyoboy dans le forum EDI
    Réponses: 16
    Dernier message: 16/07/2004, 11h03
  2. [WinAPI C++] MultiThreading et PostMessage
    Par Gruik dans le forum Windows
    Réponses: 7
    Dernier message: 29/03/2004, 15h58
  3. [WinAPI C++] MultiThreading?
    Par Gruik dans le forum Windows
    Réponses: 2
    Dernier message: 25/03/2004, 00h08
  4. [Win32]App multithread
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 25/09/2003, 09h57
  5. Multithreading sous HP Ux 11
    Par pykoon dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 18/10/2002, 23h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo