-
Notifications
You must be signed in to change notification settings - Fork 871
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
(Client=55) Error deserializing record, ArrayIndexOutOfBounds #3300
Comments
this exception is happening because it happened something wrong before, the error say that i cannot deserialize the record and that is due to the fact that the record is written in csv format and not in binary. the reason why the record is csv and not binary is due to the use of csv on the network and to record manipolation with operator like exclude that had some issue inside and made the record dirty. i fixed few issue like that in last few days, and i added right now a check on csv serialization to detect the error as soon as it happen. the binary serialization already had that check. so now is not possible to reach this state. will get in touch on gitter if need to recover some of this data. |
We don't use CSV. We use JSON data to import via the ETL and we use Binary Protocol to interact with the database with our app. So this was an issue with |
@garrett-gottlieb "CSV" here stands for "Orient's-Nearly-But-Not-Quite-JSON-Format", not "Comma Separated Values" :) |
Ah, thanks for the translation. |
the fix broke remote binary protocol behavior. running remote server, I get the following exception: 2015-01-02 08:41:52:843 WARNING Cannot serialize record: {type:UNIQUE,name:ORole.name,indexDefinition:{className:ORole,field:name,keyType:STRING,collate:ci,nullValuesIgnored:true},indexDefinitionClass:com.orientechnologies.orient.core.index.OPropertyIndexDefinition,clusters:[1],mapRid:#1:0,algorithm:SBTREE,valueContainerAlgorithm:NONE} [ONetworkProtocolBinary]Error on unmarshalling record #-1:-1 (com.orientechnologies.orient.core.exception.ODatabaseException: Impossible save a record during network serialization) |
hi @danrub, I tried to run |
Yes, I just run it inside our test environment, with the latest pull. please notice, I'm running the command through the binary protocol, with .NET driver, written by me (protocol version 17, CSV serialization). The failure happens at ORecordSerializerCSVAbstract.java at line 132. when I disable the line, as I did, all our test are passing. I'm trying to fetch the #0:1 or #0:2 rows to discover database schema on the fly. so it is crucial that this Idempotent command will succeed. please update me if you need more data that I can provide to fix the issue. |
hi @danrub We got all our remote test suite running in this modality, and i don't get this error, i write also a few lines of code for try to reproduce it: OGlobalConfiguration.DB_DOCUMENT_SERIALIZER.setValue(ORecordSerializerSchemaAware2CSV.NAME);
ODatabaseDocument db = new ODatabaseDocumentTx("remote://localhost/test");
db.open("admin", "admin");
List<ODocument> result = db.query(new OSQLSynchQuery("select expand(classes) from #0:1"));
System.out.println("result:" + result.size());
db.close(); and it run with no problem, so is probable that the issue is with the backward support with version 17 (now we are 27) is it your driver code public ? are you using https://github.com/yojimbo87/OrientDB-NET.binary ? |
I'm using a propriety driver, which was written by our company. it is not public yet. we are using it internally for our use thought, cause it was stable, till now. I will check what I can do to provide you some insights inside our code and unit tests, or I will try to reproduce it inside java unit tests |
Yep some insights will be very useful, and a unit test will be amazing :) |
Ok :) while i'm waiting for approval about disclosing our code, I have tracked the problem to deserializion of single field called "mapRid", with newer version the rid deserialized as expected let say to a value #1:1, but with old protocol version 17, it is deserialized to #1:1[] v1. than at ORecordSerializerCSVAbstract line 98 when it is checked, at java test it passed as valid rid and returned to serialization as expected, but the other test proceeding to line 130, failing with condition iLinkedRecord.isDirty(), which causing exception to be thrown I hope it will help your effort to fix it. :) |
any news here? did you get the chance to share the code ? is this error still happening in your environment ? |
Ok, I'm closing it. |
When I ran this query:
I got this database output:
I did a database repair and got similar output:
The text was updated successfully, but these errors were encountered: