Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 11 total
Thread Error reading TMemoField with Client/Server connections on 4.49.2
Tue, Dec 1 2020 4:10 AMPermanent Link

Steve Williamson

Foresiight Software

DBISAM version 4.49.2
DBISAM Database Server - DBSRVR (Service) version 4.49.0.2

With a client/server session, when reading a TMemoField.AsString (or .Value for that matter) I am receiving a "DBISAM Engine Error #11308 An invalid or unknown request was made to database server".

This was not occurring previously when I had DBSRVR version 4.48.0.3 installed.

Are there any settings I could change to correct this issue?
Steve Williamson



Attachments: DBISAM TMemoField error 11308.png
Tue, Dec 1 2020 8:22 AMPermanent Link

Raul

Team Elevate Team Elevate

On 12/1/2020 4:10 AM, Steve Williamson wrote:
> DBISAM version 4.49.2
> DBISAM Database Server - DBSRVR (Service) version 4.49.0.2
>
> With a client/server session, when reading a TMemoField.AsString (or .Value for that matter) I am receiving a "DBISAM Engine Error #11308 An invalid or unknown request was made to database server".
>
> This was not occurring previously when I had DBSRVR version 4.48.0.3 installed.
>
> Are there any settings I could change to correct this issue?

What is the code doing when this happens ?

This error usually indicates a problem problem with app - for example
session used by multiple threads or such.

However more info needed

Raul
Tue, Dec 1 2020 8:53 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Steve


I agree with Raul. There's also my first thought - corrupt data. I used to get this sort of problem with a corrupt jpg in a memo field. Just repairing the table won't fix it I used to have to write a small app just to run through displaying the images and reporting when it bombed.

Roy Lambert
Tue, Dec 1 2020 10:34 PMPermanent Link

Steve Williamson

Foresiight Software

I have managed to narrow down how to reproduce this a bit better.

Using a Client/Server database, attach an OnFilterRecord event to a table that has a TMemoField.
Now, when calling Table.Open, it gives the error mesasge #11308

It doesn't seem to require accessing the MemoField AsString or Value, that's just how I first encountered it.

I replaced the OnFilterEvent on my application with a .Filter property, and it now opens the table correctly and reads the memo field values.
Unfortunately, there still a large number of other OnFilterRecord events in the app.


Roy Lambert wrote:

Steve


I agree with Raul. There's also my first thought - corrupt data. I used to get this sort of problem with a corrupt jpg in a memo field. Just repairing the table won't fix it I used to have to write a small app just to run through displaying the images and reporting when it bombed.

Roy Lambert
Steve Williamson
Wed, Dec 2 2020 12:10 AMPermanent Link

Raul

Team Elevate Team Elevate

On 12/1/2020 10:34 PM, Steve Williamson wrote:
> I have managed to narrow down how to reproduce this a bit better.
>
> Using a Client/Server database, attach an OnFilterRecord event to a table that has a TMemoField.
> Now, when calling Table.Open, it gives the error mesasge #11308

Are you doing anything special in the event ?

I tried it here with a table i have with memos and it opens fine with no
exception.

Onfilterrecord does get called but i'm just setting accept to true for now

4.49 build 2 for app and for dbsrvr

Raul
Wed, Dec 2 2020 1:29 AMPermanent Link

Steve Williamson

Foresiight Software

My apologies,
The OnFilterEvent does need to read the value of the TMemoField.
I thought I had ruled out this requirement, but I was mistaken.

I have attached modifications to the CDCollector example application data.pas file which demonstrate this issue.
You will need to set up an appropriately named client/server database with SrvAdmin.exe of course.


Raul wrote:

On 12/1/2020 10:34 PM, Steve Williamson wrote:
> I have managed to narrow down how to reproduce this a bit better.
>
> Using a Client/Server database, attach an OnFilterRecord event to a table that has a TMemoField.
> Now, when calling Table.Open, it gives the error mesasge #11308

Are you doing anything special in the event ?

I tried it here with a table i have with memos and it opens fine with no
exception.

Onfilterrecord does get called but i'm just setting accept to true for now

4.49 build 2 for app and for dbsrvr

Raul
Steve Williamson



Attachments: data.zip
Wed, Dec 2 2020 9:23 AMPermanent Link

Raul

Team Elevate Team Elevate

On 12/2/2020 1:29 AM, Steve Williamson wrote:
> My apologies,
> The OnFilterEvent does need to read the value of the TMemoField.
> I thought I had ruled out this requirement, but I was mistaken.

Thanks  - that allows to duplicate it here as well

> I have attached modifications to the CDCollector example application data.pas file which demonstrate this issue.
> You will need to set up an appropriately named client/server database with SrvAdmin.exe of course.

Sample is using a field component in a callback function which i
personally prefer not to do.

However using the dataset provided as input param also results in the
same issue (i.e. DataSet.FieldByName(<mymemofield>).AsString).

I tried dbsrvr 4.481b6 available and that one is OK

dbsrvr 4.49 b1 and b2 both have the issue.

We'll need Tim to take a look and provide fix in the next build

Raul




Wed, Dec 2 2020 10:37 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Steve,

<< With a client/server session, when reading a TMemoField.AsString (or .Value for that matter) I am receiving a "DBISAM Engine Error #11308 An invalid or unknown request was made to database server".

This was not occurring previously when I had DBSRVR version 4.48.0.3 installed. >>

This was due to this fix that restricted what could be called from a server callback because of the potential for state corruption in the DBISAM Database Server:

https://www.elevatesoft.com/incident?action=viewaddr&category=dbisam&release=4.48&incident=4765

However, not permitting BLOBs to be read was not supposed to be one of the forbidden calls, so I will get that fixed and get a fix out ASAP.

Thanks !

Tim Young
Elevate Software
www.elevatesoft.com
Wed, Dec 2 2020 8:20 PMPermanent Link

Steve Williamson

Foresiight Software

Thanks everyone for your help.

Since this is only an issue for TMemoField access inside an OnFilterRecord event, there are only few instances in my code. I shall be converting each of them to use the Filter property (so I can continue releasing this week).
Steve Williamson
Wed, Dec 9 2020 11:28 PMPermanent Link

Steve Williamson

Foresiight Software

I have come across a related but slightly different case.
Your fix may already address this. Or it may be an intended restriction.

With client/server, calling TableB.FindKey from within TableA.OnFilterRecord also results in Error #11308.
This seems to be the case even if neither table has a TMemoField member.

I'm including a CDCollector example again.

I will be changing the example I've found in my code, but I don't know yet how widespread this pattern might be.
You get what you get with legacy systems sometimes.


Tim Young [Elevate Software] wrote:

Steve,

<< With a client/server session, when reading a TMemoField.AsString (or .Value for that matter) I am receiving a "DBISAM Engine Error #11308 An invalid or unknown request was made to database server".

This was not occurring previously when I had DBSRVR version 4.48.0.3 installed. >>

This was due to this fix that restricted what could be called from a server callback because of the potential for state corruption in the DBISAM Database Server:

https://www.elevatesoft.com/incident?action=viewaddr&category=dbisam&release=4.48&incident=4765

However, not permitting BLOBs to be read was not supposed to be one of the forbidden calls, so I will get that fixed and get a fix out ASAP.

Thanks !

Tim Young
Elevate Software
www.elevatesoft.com



Attachments: data (2).zip
Page 1 of 2Next Page »
Jump to Page:  1 2
Image