Я создаю кластер динамически в xtend
/Java
Сохранение нового кластера возвращается ошибка
for (int i : 0 ..< DistributorClusters.length) {
val clusterName = classnames.get(i) + clusterSuffix;
database.command(
new OCommandSQL('''ALTER CLASS «classnames.get(i)» ADDCLUSTER «clusterName»''')).execute();
}
Затем я создаю я добавляю oRole
и Грант безопасности на новый oRole
val queryOroleCreation = '''INSERT INTO orole SET name = '«clusterSuffix»', mode = 0, inheritedRole = (SELECT FROM orole WHERE name = 'Default')''';
val ODocument result = database.command(new OCommandSQL(queryOroleCreation)).execute();
for (int i : 0 ..< classnames.length) {
database.command(
new OCommandSQL(
'''GRANT ALL ON database.cluster.«classnames.get(i)»«clusterSuffix» TO «clusterSuffix»''')).
execute();
}
Наконец я попробуйте сохранить JsonObject
в один из вновь созданных кластеров. Я проверил в базе данных, и кластер существует.
val doc = new ODocument();
doc.fromJSON(jsonToSave.toString());
val savedDoc = database.save(doc, "ClassName"+clusterSuffix);
database.commit();
Но Orient возвращает следующее сообщение об ошибке:
SEVERE: java.lang.IllegalArgumentException: Cluster name 'cluster:ClassNameclusterSuffix' is not configured
Мой вопрос: Что вызывает это исключение? И можете ли вы добавить значения в новый кластер?
Редактировать
Объект doc
содержит ссылки на другие классы. то есть:
{
@class:"Customer",
@version:0,
name:"Kwik-E-Mart",
user : {
@class:"User",
@version:0,
username: "Apu",
firstName:"Apu",
lastName:"Nahasapeemapetilon"
}
}
Пользователь получает создан в кластере по умолчанию, но customer
бросает исключение.
Я пробовал, но это не исправили проблему. –
Исключение точно такое же? Странно. – Wouter
точно так же, без 'cluster:' infront имени. Я отредактировал сообщение, чтобы добавить немного больше контекста. Надеюсь, это поможет –