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 W

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 W

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 W

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 W

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 W

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