Название: Ошибка GridDB: 10905 TXN_WAIT_FOR_TRANSACTION_END при выполнении нескольких транзакцийJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Название: Ошибка GridDB: 10905 TXN_WAIT_FOR_TRANSACTION_END при выполнении нескольких транзакций

Сообщение Anonymous »

В настоящее время я работаю с GridDB и столкнулся со следующей ошибкой:

Код: Выделить всё

10905 TXN_WAIT_FOR_TRANSACTION_END ERROR Processing of transaction event
continued to be in standby status. Other transactions may be under execution.
Multiple clients are executing transactions in the same container at the same time.
Transactions on standby will be executed when the earlier transactions end.
У меня есть сценарий, в котором мне нужно одновременно выполнить несколько транзакций в GridDB, используя разные экземпляры клиента. Контейнер, к которому я обращаюсь, используется этими транзакциями совместно. Однако похоже, что транзакции не выполняются должным образом, что приводит к вышеупомянутой ошибке.
Ниже приведен упрощенный пример того, как я пытаюсь одновременно выполнить несколько транзакций в Java:< /p>

Код: Выделить всё

import com.toshiba.mwcloud.gs.Container;
import com.toshiba.mwcloud.gs.GridStore;
import com.toshiba.mwcloud.gs.GridStoreFactory;
import com.toshiba.mwcloud.gs.Row;
import com.toshiba.mwcloud.gs.GSException;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;

public class GridDBTransactionTest {
public static void main(String[] args) {
try {
GridStore store = GridStoreFactory.getInstance().getGridStore();
Container container = store.getContainer("SampleContainer");
ExecutorService executorService = Executors.newFixedThreadPool(3);

for (int i = 0; i < 3; i++) {
executorService.submit(() -> {
try {
store.setAutoCommit(false);
container.put(new Row(1, "Sample Data")); // Sample operation
store.commit();
} catch (GSException e) {
e.printStackTrace();
}
});
}

executorService.shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
}
В приведенном выше коде я пытаюсь выполнить несколько транзакций одновременно в одном контейнере. Однако я постоянно получаю сообщение об ошибке 10905 TXN_WAIT_FOR_TRANSACTION_END, которое указывает на то, что транзакция ожидает завершения других транзакций, прежде чем продолжить.
Как я могу обработать или избежать этой ошибки при выполнении нескольких транзакций на тот же контейнер в GridDB?
Есть ли способ безопасно управлять параллельными транзакциями в GridDB, чтобы исключить возникновение взаимоблокировок или условий ожидания?
Следует ли мне скорректировать использование модели транзакций или реализовать какой-либо механизм синхронизации для лучшего управления параллелизмом?
Будем очень признательны за любые рекомендации по решению или смягчению этой проблемы!
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... g-multiple
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»