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

problem with firebird database events [DNET234] #243

Closed
firebird-automations opened this issue May 26, 2009 · 8 comments
Closed

problem with firebird database events [DNET234] #243

firebird-automations opened this issue May 26, 2009 · 8 comments

Comments

@firebird-automations
Copy link

Submitted by: Deepak S. Tiwari (deepakt)

Attachments:
DemoFireBirdEvents.zip

Votes: 4

Hello support
I have created a sample application which listens to firebird database events and whenever an event is received an entry is added into the list box on the form. Now if we start 3 clients (say 3 instances of same application) then as soon as 2nd client executes a stored procedure which raises an event, all the clients stop listening to the event.
I am using Firebird client v2.5 and firebird server v2.1.2.
I am attaching a sample application.
Step to Reproduce:

1. Open two to three simultaneous instances of the application. When an application is loaded it registers an event called "My_Event", adds the callback to the firebird events and calls the QueueEvents ().
2. Click on the start button of all the instances when we click on start button it calls the Stored Proc named "Send_Event" after every 1 second. Store Proc "Send_Event" simply post the event "My_Event"
When all the instances fire the events simultaneously, something goes wrong and event listener fails to listen the further events.
Is there any other setting that I need to do in order to get the events working properly?

Thank you

Commits: 1ebfa9f

@firebird-automations
Copy link
Author

Modified by: Deepak S. Tiwari (deepakt)

Attachment: DemoFireBirdEvents.zip [ 11454 ]

@firebird-automations
Copy link
Author

Commented by: Konstantin Dombrugov (abracadabra)

seems like "multi-threading" issue:)

Jiri, please, take a look at
class GdsEventManager
...
public void QueueEvents(RemoteEvent remoteEvent)
...
there is a code:
if (this.eventsThread == null ||
(this.eventsThread.ThreadState != ThreadState.Running &&
this.eventsThread.ThreadState != ThreadState.Background) )
as I think it should be like this:
if (this.eventsThread == null ||
((this.eventsThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) != 0)
)

It works for me

@firebird-automations
Copy link
Author

Commented by: Richard Clarke (conhulio2000)

Interestingly - Im using Interbase, and Unfortunately Interbase does not allow RemoteAuxPort like Firebird does :-( this is really annoying in Interbase.

So - im currently developing a simply Proxy Server, that allows Client Apps to recieve Interbase Events across a firewall. :-)

if anyone is interested, let me know.

@firebird-automations
Copy link
Author

Commented by: @cincuranet

This a Firebird project. Not InterBase. These two products are more and more different.

@firebird-automations
Copy link
Author

Commented by: Richard Clarke (conhulio2000)

Sure. Understandable. However, i was just making a comment, in any case the http://ADO.NET provider works well in Interbase too, I havnt had the problem mentioned here, so to avoid any more confusion, i will not say anything anymore out of respect for you guys.

@firebird-automations
Copy link
Author

Commented by: Alexander Muylaert (alexander_gonline.be)

Hi Jiri

I had an issue to. When only using the EF, everything worked with the events. After using stored procedures, the events that where raised by the SP's where not longer active. This didn't always happen, somethimes it was ok, somethimes it wasn't.

I applied the fix of Konstantin, rebuilded and now it works.

Maybe you could double check this issue?

Thanks

Alexander

@firebird-automations
Copy link
Author

Commented by: E. Heemskerk (emh)

I'm not sure I had the exact same issue described above, however the fix mentioned by Konstantin also resolved my problem.

I had an application which uses firebird events, but on receiving events the number of "FirebirdClient - Events Thread" - threads kept growing. At 1 point I was up to around 40 such threads. However I can't get a demo-application to exhibit the same problem, even when using the same assembly where I call the Firebird event code.

Rebuilding the provider with the fix of Konstantin now leaves my application at a steady 13 threads in total and I only see 1 "FirebirdClient - Events Thread".

For the record. This is using FB 2.1.3 with dotnetprovider 2.5.2

@firebird-automations
Copy link
Author

Modified by: @cincuranet

status: Open [ 1 ] => Resolved [ 5 ]

resolution: Fixed [ 1 ]

Fix Version: vNext [ 10466 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants