Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
j'ai un soucis en utilisant les SharedObjectRegister pour effectuer des process en multithread :
le traitement en question permet d'exécuter des requêtes SQL en parallèle : dans chaque thread, je crée une transaction et je fais appel à une procédure stockée qui exécute des requêtes SQL.
Ce traitement fonctionne sur ma machine, cependant, sur d'autres postes, le traitement est bloqué dès lors que les SharedObjectRegister sont créés.
Il est à noter que je travaille dans une architecture Client Serveur , le poste client étant sous Windows XP et la base ORACLE 9i.
Est ce quelqu'un a une idée sur l'origine de ce problème et sur la solution pour y remédier ?
Est ce lié au processeur du poste client, à un paramétrage du SGBD (client/serveur) ?
Merci d'avance pour vos réponses.
Hors ligne
tu n'as pas au niveau la création des users un nombre limite de connection en simultanée ?
Hors ligne
ou des locks sur des tables ?
Hors ligne
Merci pour vos réponses et désolé pour le retard :
@JCZ : j'ai pas bien compris votre question, ou est ce que je peux voir cette limitation ? de toute façon je pense pas sinon ça n'aurait pas marché sur ma machine.
@XLAT : même réponse, nous accédons tous à la même base, donc s'il y avait des locks sur les tables, ça aurait été un problème général sur tous les postes clients.
Le mystère persiste , il ya trois questions auxquelles je ne trouve pas de réponse :
1/ qu'est ce qui fait que sur deux postes clients, avec la même application, et sur la même base, le process multithread fonctionne sur une machine et se plante sur l'autre ?
2/ qu'est ce qui fait que lorsque mon thread n'accède pas à la base, tout fonctionne à merveille sur tous les postes ?
3/ en ajoutant l'option "trace", le système me sort bien sur un pop up à chaque fois qu'une connexion est établie avec la base, donc si j'ai un thread principal et deux threads secondaires, j'ai trois pop up pour me demander de choisir l'emplacement du fichier log, et là, "par magie" le traitement aboutit sur tous les postes ?
Hors ligne
tu utilises les même runtimes sur tout les postes clients (aussi bien Powerbuilder que Oracle) ?
c'est les mêmes architectures (32bits/64bits) ?
Hors ligne
cannavaro a écrit:
Ce traitement fonctionne sur ma machine, cependant, sur d'autres postes, le traitement est bloqué dès lors que les SharedObjectRegister sont créés.
...
3/ en ajoutant l'option "trace", le système me sort bien sur un pop up à chaque fois qu'une connexion est établie avec la base, donc si j'ai un thread principal et deux threads secondaires, j'ai trois pop up pour me demander de choisir l'emplacement du fichier log, et là, "par magie" le traitement aboutit sur tous les postes ?
Il y a du code particulier dans les constructeurs de ces objets qui pourrait coincer ?
Hors ligne
Salut, je m'incruste dans ce sujet et déterre le Topic car j'essaye justement d'exécuter 2 SQL en parallèle et je n'y arrive pas du tout.
J'utilise aussi des SharedObjects, j'arrive bien à leur faire exécuter un traitement en parallèle (incrémenter un compteur par ex.) mais pas moyen de faire ce dont j'ai besoin c'est à dire 2 retrieve de datastores en même temps.
si qqun à une piste pour moi...
Hors ligne
tu utilises des transactions différentes ?
avec un dbms qui supporte l'option async ?
Hors ligne
j'utilise 2 transactions différentes et l'option Async.
je n'ai pas vérifié que Async était bien pris en compte par mon DBMS par contre (Sybase Anywhere 12) je vais checker ça mais je suppose que ça devrait être bon.
Hors ligne