Я думаю, что существует проблема при создании записей на графике с использованием транзакций. Вершины, созданные во время операции всегда хранятся в кластере № 3, когда я проверяю на студии веб-приложение вершина создана в ТХ имеет класс «Неизвестный»OrientDB создает создание вершины в транзакции
Вот код:
client = pyorient.OrientDB("localhost", 2424)
client.connect("xxx", "xxx")
client.db_open("admin", "admin")
people_cluster = client.command("create class People extends V")
client.command("create vertex People content {'name': 'dummy', 'age': 21}")
attrs = {'@People': {'name': 'another_me', 'age': 31}}
res = client.record_create(people_cluster[0], attrs)
attrs2 = {'@People': {'name': 'me', 'age': 30}}
create_rec_cmd = (client.get_message(pyorient.RECORD_CREATE)).prepare((people_cluster[0], attrs2))
tx = tx.commit()
tx.begin()
tx.attach(create_rec_cmd)
tx.commit()
# This returns 'dummy' and 'another_me', but the people created in the tx is not present
res = client.command("select from People")
print(res[0]) => {'@People':{'age': 21, 'name': 'dummy', 'version':2,'rid':'#13:0'}
print(res[1]) => {'@People':{'age': 31, 'name': 'another_me'},'version':1,'rid':'#13:1'}
# The ones created in the transaction are found in the cluster #3, but with no class
print(client.command("select from #3:0")[0]) => {{'name': 'me', 'age': 30},'version':1,'rid':'#3:0'}
I активировали опцию отладки в XML-конфигурации, и журнал не дает много информации:
2015-08-16 17: 59: 46: 992 INFO {дб = тест} /192.168.10.1:41317 - Байт чтения: 60 [OChannelBinaryServer]
2015-08-16 17: 59: 46: 994 INFO {db = test} /192.168.10.1:41317 - Чтение int (4 байта) ... [OChannelBinaryServer]
2015-08-16 17: 59: 46: 995 INFO {db = test} /192.168.10.1:41317 - Чтение int: 6 [OChannelBinaryServer]
2015-08-16 17: 59: 47: 000 INFO {db = test} /192.168. 10.1: 41317 - Чтение INT (4 байт) ... [OChannelBinaryServer]
2015-08-16 17: 59: 47: 002 ИНФОРМАЦИЯ {дБ} = тест /192.168.10.1:41317 - Read INT: 2113677732 [OChannelBinaryServer]
2015-08-16 17: 59: 47: 003 INF O {db = test} /192.168.10.1:41317 - Байт чтения (1 байт) ... [OChannelBinaryServer]
2015-08-16 17: 59: 47: 004 INFO {db = test} /192.168. 10.1: 41317 - Байт чтения: 1 [OChannelBinaryServer]
2015-08-16 17: 59: 47: 005 INFO {db = test} /192.168.10.1:41317 - Чтение байта (1 байт) ... [ OChannelBinaryServer]
2015-08-16 17: 59: 47: 006 ИНФОРМАЦИЯ {дБ} = тест /192.168.10.1:41317 - прочитать байт: 1 [OChannelBinaryServer]
2015-08-16 17:59 : 47: 006 INFO {db = test} /192.168.10.1:41317 - Чтение байта (1 байт) ... [OChannelBinaryServer]
2015-08-16 17: 59: 47: 007 ИНФОРМАЦИЯ {дБ} = тест /192.168.10.1:41317 - прочитать байт: 3 [OChannelBinaryServer]
2015-08-16 17:59:47 : 007 INFO {db = test} /192.168.10.1:41317 - чтение коротких (2 байта) ... [OChannelBinaryServer]
2015-08-16 17: 59: 47: 007 INFO {db = test}/192.168.10.1:41317 - Читать дальше: -1 [OChannelBinaryServer]
2015-08-16 17: 59: 47: 008 INFO {db = test} /192.168.10.1:41317 - Чтение длинных (8 байт) ... [OChannelBinaryServer]
2015-08-16 17: 59: 47: 008 INFO {db = test} /192.168.10.1:41317 - Читать долго: -2 [OChannelBinaryServer]
2015-08-16 17:59:47: 009 INFO {db = test} /192.168.10.1:41317 - Байт чтения (1 байт) ... [OChannelBinaryServer]
2015-08-16 17: 59: 47: 009 INFO {db = test} /192.168 .10.1: 41317 - Байт чтения: 100 [OChannelBinaryServer]
2015-08-16 17: 59: 47: 010 INFO {db = test} /192.168.10.1: 41317 - Чтение куска байтов. Чтение длины блока как int (4 байта) ... [OChannelBinaryServer]
2015-08-16 17: 59: 47: 010 INFO {db = test} /192.168.10.1:41317 - Читайте длину фрагмента: 18 [ OChannelBinaryServer]
2015-08-16 17: 59: 47: 011 ИНФОРМАЦИЯ {дБ} = тест /192.168.10.1:41317 - Чтение 18 байт ... [OChannelBinaryServer]
2015-08-16 17 : 59: 47: 011 INFO {db = test} /192.168.10.1:41317 - Прочитано 18 байт: возраст: 30, имя: "me" [OChannelBinaryServer]
2015-08-16 17:59:47: 016 INFO {db = test} /192.168.10.1:41317 - Чтение байта (1 байт) ... [OChannelBinaryServer]
2015-08-16 17: 59: 47: 017 ИНФОРМАЦИЯ {дБ} = тест /192.168.10.1:41317 - прочитать байт: 0 [OChannelBinaryServer]
2015-08-16 17:59:47 : 017 INFO {db = test} /192.168.10.1:41317 - Чтение фрагмента байтов. Чтение длина куска в междунар (4 байта) ... [OChannelBinaryServer]
Спасибо за ответ, но мне не нужно настраивать send и fetch replye, потому что это немедленно отправит msg на сервер. Сделка обрабатывает отправку команд, приложенных при совершении. Записи создаются, только те, которые находятся в транзакции, хранятся в другом кластере без класса. В тестовой папке на заводе вы можете видеть, что они делают это с помощью msgs, поскольку я делаю это тоже. В базовом классе сообщений theres ungly «if» проверка, если в транзакции тогда не отправлять. – Sebastian