[icf-dev] very strange SDO error

Posted by LegacyUser on 10-Oct-2002 07:17

Hi all,

we have a very strange problem with the SDO in dynamics 1.1 Â…

The problem is that when we save a newly created record, we get the

error

132 (“record already exists”). But the reason for this is that the SDO

does not

write the correct values to the DB as they are passed in the rowObjUpd

table but rather

an empty record which contains only the initial values. The strange

thing is that in assignDBrow

the data in rowObjUpd is correct, but the data that is commited to the

DB is wrong. It seems as if somewhere

deep in the dungeons of the adm2 a new buffer is created which is then

commited to the db instead of

the record that has been passed to serverCommit.

Another strange thing is that it seems as if the actual write of the

record occurs in the refetchDBrow procedure,

Because when we look at the stack trace this is the procedure that

invokes our DB write triggerÂ… ?!?

This happens only with 1 SDO – however, we can´t find anything special

about this particular SDO.

We spent several days in debugging this but are unable to see what the

problem is.

Does anybody know what the reason for this is ?

Any help greatly appreciated, as this is a real showstopper for usÂ…

Regards

Mike Liewehr

IT focus GmbH

Informationstechnik & Beratung

Schultheiss-Koehle-Str. 1

D-71636 Ludwigsburg

fon: +49 7141 4748 0

fax: +49 7141 4748 11

<mailto:mike.liewehr@itfocus.com> mailto:mike.liewehr@itfocus.com

<http://www.itfocus.com> http://www.itfocus.com

...we can do IT!

att1.html

All Replies

Posted by LegacyUser on 10-Oct-2002 07:43

HI Mike,

I saw something like this once before. After spending some time debugging

everything, and finding all the correct values in the RowObjUpd tables, but

not in the point where the error came from, we noticed that with the initial

values of some fields in a unique index, the index was violated in the

CREATE of the record... Verify that all your initial values in your fields

do not violate any of your unique indexes on that table. If so, there could

be a faulty record in your table, or maybe you should consider giving one of

the fields a null initial value(?) which will not violate the index at

create. It is difficult to say if this would work for you as it depends on

your database requirements & design etc.

Regards,

Chris

PS: I would like to know if you get the problem solved...

-Original Message-

From: Mike Liewehr

Sent: 10 October 2002 14:18

To: dev@icf.possenet.org

Subject: very strange SDO error

Hi all,

we have a very strange problem with the SDO in dynamics 1.1 Â…

The problem is that when we save a newly created record, we get the error

132 (“record already exists”). But the reason for this is that the SDO

does not

write the correct values to the DB as they are passed in the rowObjUpd

table but rather

an empty record which contains only the initial values. The strange thing

is that in assignDBrow

the data in rowObjUpd is correct, but the data that is commited to the DB

is wrong. It seems as if somewhere

deep in the dungeons of the adm2 a new buffer is created which is then

commited to the db instead of

the record that has been passed to serverCommit.

Another strange thing is that it seems as if the actual write of the

record occurs in the refetchDBrow procedure,

Because when we look at the stack trace this is the procedure that invokes

our DB write triggerÂ… ?!?

This happens only with 1 SDO – however, we can´t find anything special

about this particular SDO.

We spent several days in debugging this but are unable to see what the

problem is.

Does anybody know what the reason for this is ?

Any help greatly appreciated, as this is a real showstopper for usÂ…

Regards

Mike Liewehr

IT focus GmbH

Informationstechnik & Beratung

Schultheiss-Koehle-Str. 1

D-71636 Ludwigsburg

fon: +49 7141 4748 0

fax: +49 7141 4748 11

mailto:mike.liewehr@itfocus.com

http://www.itfocus.com

...we can do IT!

______________________________________

This e-mail may contain confidential information and may be legally

privileged and is intended only for the person to whom it is addressed. If

you are not the intended recipient, you are notified that you may not use,

distribute or copy this document in any manner whatsoever. Kindly also

notify the sender immediately by telephone, and delete the e-mail. When

addressed to clients of the company from where this e-mail originates ("the

sending company ") any opinion or advice contained in this e-mail is subject

to the terms and conditions expressed in any applicable terms of business or

client engagement letter . The sending company does not accept liability for

any damage, loss or expense arising from this e-mail and/or from the

accessing of any files attached to this e-mail.

Posted by LegacyUser on 10-Oct-2002 08:31

Mike,

The problem you are experiencing has been reported in Issuezilla under Issue

468 (http://www.possenet.org/issues/show_bug.cgi?id=468).

The problem basically is seen with SDOs based on tables having multiple

component unique indexes. The assignDBRow is assigning fields one by one,

however, when it tries to assign the field forming the index, the assignment

fails, a message is returned and the transaction is undone.

This logic basically needs to be changed to perform a buffer-copy instead of

assigning those changed fields individually.

Don

~~~~~~~~~~~~~~~~~~~~~~~~~

Don Bulua

Inway Software Inc.

Montreal, Quebec

email: dbulua@sympatico.ca

tel: (514) 685-0412

fax:(514) 685-0361

~~~~~~~~~~~~~~~~~~~~~~~~~

-Original Message-

From: Chris Koster

Sent: Thursday, October 10, 2002 8:43 AM

To: dev@icf.possenet.org

Subject: RE: very strange SDO error

HI Mike,

I saw something like this once before. After spending some time

debugging everything, and finding all the correct values in the RowObjUpd

tables, but not in the point where the error came from, we noticed that with

the initial values of some fields in a unique index, the index was violated

in the CREATE of the record... Verify that all your initial values in your

fields do not violate any of your unique indexes on that table. If so, there

could be a faulty record in your table, or maybe you should consider giving

one of the fields a null initial value(?) which will not violate the index

at create. It is difficult to say if this would work for you as it depends

on your database requirements & design etc.

Regards,

Chris

PS: I would like to know if you get the problem solved...

-Original Message-

From: Mike Liewehr

Sent: 10 October 2002 14:18

To: dev@icf.possenet.org

Subject: very strange SDO error

Hi all,

we have a very strange problem with the SDO in dynamics 1.1 Â…

The problem is that when we save a newly created record, we get the

error

132 (“record already exists”). But the reason for this is that the SDO

does not

write the correct values to the DB as they are passed in the rowObjUpd

table but rather

an empty record which contains only the initial values. The strange

thing is that in assignDBrow

the data in rowObjUpd is correct, but the data that is commited to the

DB is wrong. It seems as if somewhere

deep in the dungeons of the adm2 a new buffer is created which is then

commited to the db instead of

the record that has been passed to serverCommit.

Another strange thing is that it seems as if the actual write of the

record occurs in the refetchDBrow procedure,

Because when we look at the stack trace this is the procedure that

invokes our DB write triggerÂ… ?!?

This happens only with 1 SDO – however, we can´t find anything special

about this particular SDO.

We spent several days in debugging this but are unable to see what the

problem is.

Does anybody know what the reason for this is ?

Any help greatly appreciated, as this is a real showstopper for usÂ…

Regards

Mike Liewehr

IT focus GmbH

Informationstechnik & Beratung

Schultheiss-Koehle-Str. 1

D-71636 Ludwigsburg

fon: +49 7141 4748 0

fax: +49 7141 4748 11

mailto:mike.liewehr@itfocus.com

http://www.itfocus.com

...we can do IT!

______________________________________

This e-mail may contain confidential information and may be legally

privileged and is intended only for the person to whom it is addressed. If

you are not the intended recipient, you are notified that you may not use,

distribute or copy this document in any manner whatsoever. Kindly also

notify the sender immediately by telephone, and delete the e-mail. When

addressed to clients of the company from where this e-mail originates ("the

sending company ") any opinion or advice contained in this e-mail is subject

to the terms and conditions expressed in any applicable terms of business or

client engagement letter . The sending company does not accept liability for

any damage, loss or expense arising from this e-mail and/or from the

accessing of any files attached to this e-mail.

This thread is closed