Hi Daniel,

Yes it is a RidBag content, but for some reason it is recognized as a
string.

Could you provide a steps how to reproduce it?

Best regards,
Artem Orobets

* Orient Technologiesthe Company behind OrientDB*


2014-05-09 19:06 GMT+03:00 Daniel <[email protected]>:

> Hey Luca,
>
> After we did the 'upgrade graph' and it finished without any errors or
> warnings some documents have invalid relationship content. For example our
> acccounts have a 'Friend' relationship, and after the upgrade 1851/254352
> records don't have any friends anymore. I picked one of those broken
> records for example:
>
> When trying to resolve the friends I get an empty list:
>
> orientdb {upgrade.broken}> select out('Friend') from #12:155580
>
> ----+-----+----
> #   |@RID |out
> ----+-----+----
> 0   |#-2:1|[0]
> ----+-----+----
>
> 1 item(s) found. Query executed in 0.098 sec(s).
>
> Where the same query BEFORE the upgrade returned 35 results:
>
> orientdb {before.upgrade}> select out('Friend') from #12:155580
>
> ----+-----+----
> #   |@RID |out
> ----+-----+----
> 0   |#-2:1|[35]
> ----+-----+----
>
> 1 item(s) found. Query executed in 0.098 sec(s).
>
> So I checked to see what's wrong and did the following query:
>
> orientdb {upgrade.broken}> select out_Friend from #12:155580
>
>
> ----+-----+-----------------------------------------------------------------------------------------------------------------
> #   |@RID |out_Friend
>
> ----+-----+-----------------------------------------------------------------------------------------------------------------
> 0
> |#-2:1|%AQAAACMAEwAAAAAAATybABMAAAAAAAE9OAATAAAAAAABP7kAEwAAAAAAAUAcABMAAAAAAAFB6QATAAAAAAABRFwAEwAAAAAAAUTPABMAAAAAAAFJ1wATAAAAAAABSqkAEwAAAAAAAU6CABMAAAAAAAFO9gATAAAAAAABUyYAEwAAAAAAAVadABMAAAAAAAFcZgATAAAAAAABXYgAEwAAAAAAAV9bABMAAAAAAAFf2AATAAAAAAABYOgAEwAAAAAAAWnaABMAAAAAAAFulgATAAAAAAABbqcAEwAAAAAAAXFxABMAAAAAAAF1mQATAAAAAAABiIYAEwAAAAAAAYmvABMAAAAAAAGLzAATAAAAAAABlBcAEwAAAAAAAZx0ABMAAAAAAAGktQATAAAAAAABqPkAEwAAAAAAAakTABMAAAAAAAG98wATAAAAAAAB3o4AEwAAAAAAAeyEABMAAAAAAAH9WQ==;
>
> ----+-----+-----------------------------------------------------------------------------------------------------------------
>
> 1 item(s) found. Query executed in 0.012 sec(s).
>
> This seems to be the base64 encoded RidBag content. How can we fix the
> relationships BEFORE the upgrade to prevent such broken records AFTER the
> upgrade?
>
> When trying to add a new 'Friend' relation to such broken records I get
> the following exception:
> java.lang.IllegalStateException: Relationship content is invalid on field
> out_Friend. Found:
> %AQAAACMAEwAAAAAAATybABMAAAAAAAE9OAATAAAAAAABP7kAEwAAAAAAAUAcABMAAAAAAAFB6QATAAAAAAABRFwAEwAAAAAAAUTPABMAAAAAAAFJ1wATAAAAAAABSqkAEwAAAAAAAU6CABMAAAAAAAFO9gATAAAAAAABUyYAEwAAAAAAAVadABMAAAAAAAFcZgATAAAAAAABXYgAEwAAAAAAAV9bABMAAAAAAAFf2AATAAAAAAABYOgAEwAAAAAAAWnaABMAAAAAAAFulgATAAAAAAABbqcAEwAAAAAAAXFxABMAAAAAAAF1mQATAAAAAAABiIYAEwAAAAAAAYmvABMAAAAAAAGLzAATAAAAAAABlBcAEwAAAAAAAZx0ABMAAAAAAAGktQATAAAAAAABqPkAEwAAAAAAAakTABMAAAAAAAG98wATAAAAAAAB3o4AEwAAAAAAAeyEABMAAAAAAAH9WQ==;
>     at
> com.tinkerpop.blueprints.impls.orient.OrientVertex.createLink(OrientVertex.java:603)
>     at
> com.tinkerpop.blueprints.impls.orient.OrientVertex.addEdge(OrientVertex.java:285)
>     ...
>
>
> Any hints?
>
> Thanks a million!
> Daniel
>
> Am Mittwoch, 23. April 2014 01:34:16 UTC+2 schrieb Lvc@:
>>
>> Yes, should fix the tx problem.
>>
>> Lvc@
>>
>>
>> On 22 April 2014 15:19, Daniel Hanelt [STARGAST Systems GmbH] <
>> [email protected]> wrote:
>>
>>>  Hey Luca,
>>>
>>>  thanks, we will try it. But it won't help with our distributed
>>> transactions, right?
>>>
>>>  Thanks!
>>> Daniel
>>>
>>> Am 22.04.2014 um 12:14 schrieb "Luca Garulli" <[email protected]>:
>>>
>>>   Hi Daniel,
>>> to avoid using OMVRBTreeRIDSet you should migrate the graph:
>>>
>>>  https://github.com/orientechnologies/orientdb/
>>> wiki/Upgrade#migrate-graph-to-ridbag
>>>
>>>  Lvc@
>>>
>>>
>>> On 21 April 2014 19:58, Daniel Hanelt [STARGAST Systems GmbH] <
>>> [email protected]> wrote:
>>>
>>>>  Hey Luca,
>>>>
>>>>  thanks for your reply.
>>>>
>>>>  -We chose writeQuorum=1 because we wanted to have some sort of
>>>> asynchronous replication. We just work with node01, node02 is just needed
>>>> for handling the backup
>>>>
>>>>  - the db is plocal. Back in time it was created with local but then
>>>> with EXPORT exported and imported in a newly created plocal database with
>>>> 1.6 (But we were wondering too regarding the logs with OMVRBTreeRIDSet)
>>>>
>>>>  thanks a million
>>>> Daniek
>>>>
>>>> Am 20.04.2014 um 10:36 schrieb "Luca Garulli" <[email protected]>:
>>>>
>>>>    Hi guys,
>>>> As Mateusz pointed the quorum settings should be to 2 and
>>>> failureAvailableNodesLessQuorum = true to maintain consistency. Then I
>>>> suggest you to try 1.7-SNAPSHOT where we fixed a few issues against
>>>> distributed configuration.
>>>>
>>>>  About your database is it a plocal? The fact your logs show 
>>>> OMVRBTreeRIDSet
>>>> usage let me think this is an old database created with older version of
>>>> OrientDB, maybe with local?
>>>>
>>>>  Lvc@
>>>>
>>>>
>>>>
>>>> On 17 April 2014 18:10, Andrey Lomakin <[email protected]> wrote:
>>>>
>>>>> Hi guys,
>>>>> Could you create issue about it so we will not forget to look on it ?
>>>>>
>>>>>
>>>>> On Thu, Apr 17, 2014 at 6:10 PM, Daniel Hanelt [STARGAST Systems GmbH]
>>>>> <[email protected]> wrote:
>>>>>
>>>>>>  Hey,
>>>>>>
>>>>>>  we are using the 1.7 RC2 but we've had the same problems with 1.6
>>>>>>
>>>>>>  You are right with the numbers of nodes, three would make more
>>>>>> sense. But I doubt that this would solve the problems we've experienced,
>>>>>> the exceptions started right away and there was no network issue at that
>>>>>> time.
>>>>>>
>>>>>>  Thanks
>>>>>> Daniel
>>>>>>
>>>>>> Am 17.04.2014 um 03:34 schrieb "Mateusz Dymczyk" <[email protected]>:
>>>>>>
>>>>>>    Which version are you using? I remember similar exceptions before
>>>>>> switching to 1.7, seems they had some bugs.
>>>>>>
>>>>>>  Also I don't know if Luca suggested exactly that setup but running
>>>>>> such a DB with 2 nodes doesn't seem like a great idea - should you have a
>>>>>> link (or well any sort of network error) between them or if one of them
>>>>>> should go down for some time you will have inconsistent data (since both
>>>>>> quorums are set to only 1). An odd number of servers with quorum (N/2)+1 
>>>>>> is
>>>>>> a better idea.
>>>>>>
>>>>>>  Mateusz
>>>>>>
>>>>>> On Wednesday, April 16, 2014 9:22:31 PM UTC+9, Daniel wrote:
>>>>>>>
>>>>>>>  Because we've had daily outages of 15 minutes due to the backup of
>>>>>>> the
>>>>>>> DB, we follwed the advice of Luca to set up a distributed environment
>>>>>>> with two nodes.
>>>>>>>
>>>>>>>  Here is the config:
>>>>>>>
>>>>>>>
>>>>>>>  default-distributed-db-config.json
>>>>>>>
>>>>>>>  {
>>>>>>>      "replication": true,
>>>>>>>      "autoDeploy": true,
>>>>>>>      "hotAlignment": true,
>>>>>>>      "resyncEvery": 15,
>>>>>>>      "clusters": {
>>>>>>>          "internal": {
>>>>>>>              "replication": false
>>>>>>>          },
>>>>>>>          "index": {
>>>>>>>              "replication": false
>>>>>>>          },
>>>>>>>          "ODistributedConflict": {
>>>>>>>              "replication": false
>>>>>>>          },
>>>>>>>          "*": {
>>>>>>>              "replication": true,
>>>>>>>              "readQuorum": 1,
>>>>>>>              "writeQuorum": 1,
>>>>>>>              "failureAvailableNodesLessQuorum": false,
>>>>>>>              "readYourWrites": true,
>>>>>>>              "partitioning": {
>>>>>>>                  "strategy": "round-robin",
>>>>>>>                  "default": 0,
>>>>>>>                  "partitions": [
>>>>>>>                      [ "<NEW_NODE>" ]
>>>>>>>                  ]
>>>>>>>              }
>>>>>>>          }
>>>>>>>      }
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>>  So now here is what happended and finally led to a corrupted DB:
>>>>>>>
>>>>>>>
>>>>>>>  - Stopped the application server
>>>>>>> - Setup and configured replication with the settings above
>>>>>>> - Two nodes: node01 and node02
>>>>>>> - node02 had no existing database, so node01 exported and zipped the
>>>>>>> db
>>>>>>> and sent it to node02
>>>>>>> - node02 extracted the db successfully, log message: INFO [node02]
>>>>>>> installed database  [OHazelcastPlugin]
>>>>>>> - We started the application server
>>>>>>> - After some time the following exception (sometimes) appeares in
>>>>>>> the orient-server.log:
>>>>>>>
>>>>>>>  Cannot route TX operation against distributed node
>>>>>>> Error on committing distributed transaction
>>>>>>> -> com.orientechnologies.orient.server.distributed.ODistributed
>>>>>>> Storage.commit(ODistributedStorage.java:502)
>>>>>>> -> com.orientechnologies.orient.core.tx.OTransactionOptimistic.
>>>>>>> commit(OTransactionOptimistic.java:109)
>>>>>>> -> com.orientechnologies.orient.core.db.record.ODatabaseRecordT
>>>>>>> x.commit(ODatabaseRecordTx.java:146)
>>>>>>> -> com.orientechnologies.orient.core.db.document.ODatabaseDocum
>>>>>>> entTx.commit(ODatabaseDocumentTx.java:440)
>>>>>>> -> com.orientechnologies.orient.core.db.document.ODatabaseDocum
>>>>>>> entTx.commit(ODatabaseDocumentTx.java:435)
>>>>>>> -> com.orientechnologies.orient.server.network.protocol.binary.
>>>>>>> ONetworkProtocolBinary.commit(ONetworkProtocolBinary.java:1253)
>>>>>>> -> com.orientechnologies.orient.server.network.protocol.binary.
>>>>>>> ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:
>>>>>>> 325)
>>>>>>> -> com.orientechnologies.orient.server.network.protocol.binary.
>>>>>>> OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtoco
>>>>>>> lAbstract.java:126)
>>>>>>> -> com.orientechnologies.common.thread.OSoftThread.run(OSoftThr
>>>>>>> ead.java:45)
>>>>>>>
>>>>>>>
>>>>>>>  - After a while the following exception appeared in our
>>>>>>> application with increased frequency:
>>>>>>>
>>>>>>>  Caused by:
>>>>>>> com.orientechnologies.orient.core.exception.OTransactionException:
>>>>>>> Cannot insert item in mvrb-tree because the transactional item was not
>>>>>>> found.
>>>>>>>      at com.orientechnologies.orient.core.type.tree.OMVRBTreeRID.int
>>>>>>> ernalPut(OMVRBTreeRID.java:156)
>>>>>>>      at com.orientechnologies.orient.core.type.tree.OMVRBTreeRID.int
>>>>>>> ernalPut(OMVRBTreeRID.java:57)
>>>>>>>      at com.orientechnologies.orient.core.type.tree.OMVRBTreePersist
>>>>>>> ent.put(OMVRBTreePersistent.java:468)
>>>>>>>      at com.orientechnologies.orient.core.type.tree.provider.OMVRBTr
>>>>>>> eeRIDProvider.lazyUnmarshall(OMVRBTreeRIDProvider.java:227)
>>>>>>>      at com.orientechnologies.orient.core.type.tree.OMVRBTreeRID.get
>>>>>>> TreeSize(OMVRBTreeRID.java:332)
>>>>>>>      at com.orientechnologies.orient.core.type.tree.OMVRBTreeRID.siz
>>>>>>> e(OMVRBTreeRID.java:318)
>>>>>>>      at com.orientechnologies.orient.core.type.tree.OMVRBTreeRIDSet.
>>>>>>> size(OMVRBTreeRIDSet.java:91)
>>>>>>>      at com.orientechnologies.common.collection.OMultiValue.getSize(
>>>>>>> OMultiValue.java:82)
>>>>>>>      at com.orientechnologies.orient.core.serialization.serializer.r
>>>>>>> ecord.string.ORecordSerializerSchemaAware2CSV.toString(OReco
>>>>>>> rdSerializerSchemaAware2CSV.java:165)
>>>>>>>      at com.orientechnologies.orient.core.serialization.serializer.r
>>>>>>> ecord.string.ORecordSerializerStringAbstract.toStream(ORecor
>>>>>>> dSerializerStringAbstract.java:92)
>>>>>>>      at com.orientechnologies.orient.core.serialization.serializer.r
>>>>>>> ecord.string.ORecordSerializerSchemaAware2CSV.toStream(OReco
>>>>>>> rdSerializerSchemaAware2CSV.java:518)
>>>>>>>      at com.orientechnologies.orient.core.record.ORecordSchemaAwareA
>>>>>>> bstract.toStream(ORecordSchemaAwareAbstract.java:127)
>>>>>>>      at com.orientechnologies.orient.core.record.ORecordSchemaAwareA
>>>>>>> bstract.toStream(ORecordSchemaAwareAbstract.java:122)
>>>>>>>      at com.orientechnologies.orient.core.record.impl.ODocument.toSt
>>>>>>> ream(ODocument.java:391)
>>>>>>>      at com.orientechnologies.orient.client.remote.OStorageRemote.co
>>>>>>> mmitEntry(OStorageRemote.java:1919)
>>>>>>>      ... 75 more
>>>>>>>
>>>>>>>
>>>>>>>  - Then we took a look at the corresponding dataset to those
>>>>>>> exception via the orientdb console, i.e.:
>>>>>>>
>>>>>>>  select from #12:155580
>>>>>>>
>>>>>>>  Error:
>>>>>>> com.orientechnologies.orient.core.exception.OTransactionException:
>>>>>>> Cannot insert item in mvrb-tree because the transactional item was
>>>>>>> not found.
>>>>>>>
>>>>>>>
>>>>>>>  - Simple properties could be selected without problems, i.e.:
>>>>>>>
>>>>>>>  select email from #12:155580
>>>>>>> ----+-----+---------
>>>>>>> #   |@RID |email
>>>>>>> ----+-----+---------
>>>>>>> 0   |#-2:1|<removed>
>>>>>>> ----+-----+---------
>>>>>>>
>>>>>>>
>>>>>>>  - Selections of linked Edges resulted sometimes in errors, i.e.:
>>>>>>>
>>>>>>>  select out_Friend from #12:155580
>>>>>>> Error:
>>>>>>> com.orientechnologies.orient.core.exception.OTransactionException:
>>>>>>> Cannot insert item in mvrb-tree because the transactional item was
>>>>>>> not found.
>>>>>>>
>>>>>>>
>>>>>>>  - Whereas others worked
>>>>>>>
>>>>>>>  select in_Friend from #12:155580
>>>>>>> ----+-----+---------
>>>>>>> #   |@RID |in_Friend
>>>>>>> ----+-----+---------
>>>>>>> 0   |#-2:1|[63]
>>>>>>> ----+-----+---------
>>>>>>> 1 item(s) found. Query executed in 0.004 sec(s).
>>>>>>>
>>>>>>>
>>>>>>>  Any idea or hint for us?
>>>>>>>
>>>>>>>  Thanks a million
>>>>>>> Daniel
>>>>>>>
>>>>>>   --
>>>>>>
>>>>>> ---
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "OrientDB" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>>
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>>    --
>>>>>>
>>>>>> ---
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "OrientDB" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>>
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>   --
>>>>> Best regards,
>>>>> Andrey Lomakin.
>>>>>
>>>>> Orient Technologies
>>>>> the Company behind OrientDB
>>>>>
>>>>>    --
>>>>>
>>>>> ---
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "OrientDB" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>  --
>>>>
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "OrientDB" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>>    --
>>>>
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "OrientDB" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  --
>>>
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "OrientDB" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>  --
>>>
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "OrientDB" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "OrientDB" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to