MarkLogi c откат нескольких утверждений явныйКоммит - PullRequest
0 голосов
/ 09 апреля 2020
1. declareUpdate({explicitCommit: true});
*************************************************** 
2. let failSafe = [];
3. xdmp.save(ARTIFACT_DIR + 'Geography-1.0-conv.xqy', es.instanceConverterGenerate(geoDesc));
4. failSafe.push("Geography baseline converter module is generated!");
5. xdmp.save(ARTIFACT_DIR + 'GISHealth-1.0-conv.xqy', es.instanceConverterGenerate(gisDesc));
6. failSafe.push("GISHealth baseline converter module is generated!");
7. xdmp.commit(); 
8. failSafe;

Ожидается сбой L5 как: XDMP-AS: $ модель как карта: карта - недопустимое приведение: нуль как карта: карта . Мне интересно, как этого добиться: L3 и L5 должны успешно (зафиксировать) или потерпеть неудачу (откат) одновременно. L3 не откатывается, даже если L5 выходит из строя.

1 Ответ

3 голосов
/ 10 апреля 2020

Транзакции управляются только для постоянного хранения в базе данных.

xdmp.save() сохраняет в файловую систему локального E-узла, который не является транзакционным или не используется в кластере.

Напротив, xdmp.documentInsert() вставляет в базу данных. Операции базы данных буферизуются до завершения основного модуля, после чего все операции по умолчанию применяются в одной транзакции.

Таким образом, в приведенном выше примере явные транзакции не потребуются. Либо обе вставки документа будут успешными, либо ни одна из них не будет успешной.

Явные транзакции полезны для сохранения транзакции открытой для дополнительной работы при другом вызове того же основного модуля или другого основного модуля. Там, где это возможно, следует избегать явных транзакций из-за дополнительной сложности, необходимости привязки хоста к клиенту и т. Д.

Возможно ли, что xdmp.documentInsert() сможет удовлетворить ваши требования? Например, вставив модули XQuery в базу данных контента для последующей загрузки в каталог проекта в другой системе?

Надеясь, что поможет,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...