Board index » delphi » IB 5.6 is better than Opens Source IB

IB 5.6 is better than Opens Source IB

Got you reading, didn't I.
Sorry for the catcher but I really have a problem with my apps since
migrating to Open source Interbase.

My apps that previously worked with 5.6 classic on Linux are suddenly
unable to make data stick even with explicit commits, gfix commits -
anything
you can think of.

Data commited by my D5 apps does not appear to connections using JDBC -
but
D5 apps can see all data/changes live. This too worked with 5.6 - data
inserted
no matter what type of connection I had was available to all
connections.

There is absolutely nothing in any logs and no exceptions of any kind.
The strange thing is that jdbc connections work fine and is commiting
data.

So folks............. am I stupid or what?

Is this a matter of server configuration? If so - how?

Config:
D5.01 apps
IBX 4.5
Tried Borland 6.01 and Firebird 0.9.4p1 on linux(rh 6.1 2.2.18 kernel)
Interclient 1.6

TIA
//OLAS

 

Re:IB 5.6 is better than Opens Source IB


Sorry for being unclear.
It's really a simple app using IBX 4.5 functionality, a tdbgrid and
very few lines of code added. And these lines just to
do explicit commits and reopen datasets. Nothing fancy at all.

Here is what I do in my D5 app:
I have a datamodule using:
TIBTable
TIBTransaction
TIBUpdateSQL
TIBQuery
TDatasource
SUPERIBEVENT
TTIMER

Transactionisolation is: readcommitted
Transaction default action: commitretaining

After post on TIBTABLE : transaction.commitretaining

TTIMEREvent:
transaction.commit
{reopen datasets}

SIBEVENTALERTER:
TIBTABLE.refresh

All D5 apps AND IBCONSOLE can see all data all changes all the time on all
workstations.
So this is all good and working. Nothing wrong here is there?

"In the other end", there is a web app using interclient reading the same
database.

Problem1:
NONE of the changes from the "web-side" are visible to the D5 apps and
none of the changes/inserts from the Delphi-side is visible to the "web-side".

Problem2:
Even with "hard commits" and forced write. A restart of the server discards all
changes/inserts. And there are no transactions in limbo according to gfix.
GFIX functions such as commit doesn't make a difference.

These are all new problems since using IB6. It all worked flawlessly with IB5.6.
What we did was that we recomplied the D5 apps with IBX 4.5 and installed new
client drivers.

That's it.

You might argue that recompiling did something. It might have, but nothing was
changed at
the "web-side".

Could it be:
a) My coding
b) The actual database, index config or ....
c) The database server configuration
d) A clientproblem

Has anyone experienced this problem?

TIA
//OLAS

Quote
Craig Stuntz wrote:
> Ola Samuelson wrote:

> > My apps that previously worked with 5.6 classic on Linux are suddenly
> > unable to make data stick even with explicit commits, gfix commits -
> > anything you can think of.

>         You really need to tell us what you're doing; I can't guess from your
> message.  Can you write a small program (< 50 lines) which demonstrates
> the problem?  If so, post the text here.  If not, what are you doing
> differently in your "real" program?

> > Data commited by my D5 apps does not appear to connections using JDBC -
> > but D5 apps can see all data/changes live.

>         I'm confused: Is it the app which committed the changes which can see
> them, or is it a different app?  What transaction isolation mode are you
> using in each app?  Do you see the COMMITs using TIBSQLMonitor?

>         -Craig

> --
> Craig Stuntz               Vertex Systems Corporation
> Senior Developer           http://www.vertexsoftware.com

> Delphi/InterBase weblog:   http://delphi.weblogs.com

Re:IB 5.6 is better than Opens Source IB


Hi Ola Samuelson !
...

Quote
> Problem1:
> NONE of the changes from the "web-side" are visible to the D5 apps and
> none of the changes/inserts from the Delphi-side is visible to the "web-side".

    Seems that "web-side" never commit its transaction.

WBR, Vlad Horsun

Re:IB 5.6 is better than Opens Source IB


Hi!
In that case, neither does the D5 apps. Because none of these changes "stick" or
are visible on the "web-side".

Or ?

//OLAS

Quote
Horsun Vlad wrote:
> Hi Ola Samuelson !
> ...

> > Problem1:
> > NONE of the changes from the "web-side" are visible to the D5 apps and
> > none of the changes/inserts from the Delphi-side is visible to the "web-side".

>     Seems that "web-side" never commit its transaction.

> WBR, Vlad Horsun
Horsun Vlad wrote:
> Hi Ola Samuelson !
> ...

> > Problem1:
> > NONE of the changes from the "web-side" are visible to the D5 apps and
> > none of the changes/inserts from the Delphi-side is visible to the "web-side".

>     Seems that "web-side" never commit its transaction.

> WBR, Vlad Horsun

Re:IB 5.6 is better than Opens Source IB


Quote

>         OK, if IBConsole can see the changes made by the D5 app, then the
> Delphi app is working.  You can rule it out entirely.

Even if I can't make data "stick" when restarting the IB6 SS(ONLY)?
The strange thing is why it has changed since moving to IB6 from IB5.6
It worked then ............

Quote

>         It sounds like the web app is using snapshot transaction isolation mode
> or hasn't refreshed its datasets.  Remember, if you can see the changes
> made by the D5 app on a different application, such as IBConsole, they
> have been committed, and they are there.  IB has no "dirty read" mode.
> The question becomes why isn't the web app seeing them.

This too worked with IB5.6.
Now, as then I am setting read_committed when getting interclient connections.

Do you know of any differences ib5.6 VS ib6 as far as making the data stick
is concerned.

Found "packet_receive errno=9" in the logs today. Has it anything to do with all this

or is it network trouble?

Soon forced to restore my IB5.6  - sigh!

TIA
OLA

Re:IB 5.6 is better than Opens Source IB


Quote
Ola Samuelson wrote:

> All D5 apps AND IBCONSOLE can see all data all changes all the time on all
> workstations.
> So this is all good and working. Nothing wrong here is there?

        OK, if IBConsole can see the changes made by the D5 app, then the
Delphi app is working.  You can rule it out entirely.

Quote
> "In the other end", there is a web app using interclient reading the same
> database.

> Problem1:

        This is two separate problems:

Quote
> NONE of the changes from the "web-side" are visible to the D5 apps and

        It sounds like they're not getting committed.  Do you see the changes
on ISQL or IBConsole?

Quote
> none of the changes/inserts from the Delphi-side is visible to the "web-side".

        It sounds like the web app is using snapshot transaction isolation mode
or hasn't refreshed its datasets.  Remember, if you can see the changes
made by the D5 app on a different application, such as IBConsole, they
have been committed, and they are there.  IB has no "dirty read" mode.
The question becomes why isn't the web app seeing them.  

        Perhaps if you can be more explicit about what you're doing in the web
app, someone who knows more about InterClient than I do can help you
out.

Quote
> Problem2:
> Even with "hard commits" and forced write. A restart of the server discards all
> changes/inserts. And there are no transactions in limbo according to gfix.
> GFIX functions such as commit doesn't make a difference.

        On which app?  What is the sequence of events?  Which server is it that
you're restarting (IB, InterServer, the machine itself)?  Limbo
transactions won't be the problem since they only apply to multi-db
transactions.

        HTH,

        -Craig

--
Craig Stuntz               Vertex Systems Corporation
Senior Developer           http://www.vertexsoftware.com

Delphi/InterBase weblog:   http://delphi.weblogs.com

Re:IB 5.6 is better than Opens Source IB


Quote
Ola Samuelson wrote:

> >         OK, if IBConsole can see the changes made by the D5 app, then the
> > Delphi app is working.  You can rule it out entirely.

> Even if I can't make data "stick" when restarting the IB6 SS(ONLY)?
> The strange thing is why it has changed since moving to IB6 from IB5.6
> It worked then ............

        If you can see the data from two different transactions, then whatever
program put it (the data) there is working.  If you cannot see this same
data from yet another transaction, then whatever program owns that
transaction is not working.

Quote
> This too worked with IB5.6.
> Now, as then I am setting read_committed when getting interclient connections.

        I think your problem is with InterClient.  I don't know enough about
InterClient to help you there; sorry about that.  Which version of IC
are you using, and what is the dialect of your DB?

Quote

> Do you know of any differences ib5.6 VS ib6 as far as making the data stick
> is concerned.

        Again, if you can see data written by one transaction from another
transaction anywhere, then the data is as "stuck" as it can possibly be.

Quote

> Found "packet_receive errno=9" in the logs today. Has it anything to do with all this
> or is it network trouble?

        I don't know.  I've never seen this before and I don't know what it
means.

        -Craig

--
Craig Stuntz               Vertex Systems Corporation
Senior Developer           http://www.vertexsoftware.com

Delphi/InterBase weblog:   http://delphi.weblogs.com

Re:IB 5.6 is better than Opens Source IB


For test purposes i used Classic instead of SS - now it works.
Switching to SS again - now it does not.

Thanks for your efforts, I'll stick with CS(for now) since it works.
Still other problems with IC, but that's another story.
Thanks!
//OLAS

Quote
Craig Stuntz wrote:
> Ola Samuelson wrote:

> > >         OK, if IBConsole can see the changes made by the D5 app, then the
> > > Delphi app is working.  You can rule it out entirely.

> > Even if I can't make data "stick" when restarting the IB6 SS(ONLY)?
> > The strange thing is why it has changed since moving to IB6 from IB5.6
> > It worked then ............

>         If you can see the data from two different transactions, then whatever
> program put it (the data) there is working.  If you cannot see this same
> data from yet another transaction, then whatever program owns that
> transaction is not working.

> > This too worked with IB5.6.
> > Now, as then I am setting read_committed when getting interclient connections.

>         I think your problem is with InterClient.  I don't know enough about
> InterClient to help you there; sorry about that.  Which version of IC
> are you using, and what is the dialect of your DB?

> > Do you know of any differences ib5.6 VS ib6 as far as making the data stick
> > is concerned.

>         Again, if you can see data written by one transaction from another
> transaction anywhere, then the data is as "stuck" as it can possibly be.

> > Found "packet_receive errno=9" in the logs today. Has it anything to do with all this
> > or is it network trouble?

>         I don't know.  I've never seen this before and I don't know what it
> means.

>         -Craig

> --
> Craig Stuntz               Vertex Systems Corporation
> Senior Developer           http://www.vertexsoftware.com

> Delphi/InterBase weblog:   http://delphi.weblogs.com

Other Threads