[

понедельник, 11 августа 2014 г.

Инициализация Ganeti кластера на Ubuntu 14.04 и Xen 4.4

Все по мануалу http://docs.ganeti.org/ganeti/2.11/html/install.html.

Кластер инициализировал так:

gnt-cluster init --enabled-hypervisors=xen-hvm,xen-pvm --nic-parameters link=xenbr0 --master-netdev xenbr0 cluster.host.name

пятница, 1 августа 2014 г.

GORM strangeness

Grails version 2.3.8


Вот такая конструкция не работает

runners = Runner.methodReturningDetachedCriteria(params).findAll {
    lastName =~ "%${lastName}%"
}

Такая тоже

def filter = {
    lastName =~ "%${lastName}%"
} as DetachedCriteria<Runner>
runners = Runner.methodReturningDetachedCriteria(params).findAll(filter)

А такая вполне себе работает

def filter = {
    lastName =~ "%${lastName}%"
} as DetachedCriteria<Runner>
runners = Runner.methodReturningDetachedCriteria(params).where(filter).findAll()

четверг, 15 мая 2014 г.

Hibernate Exceptions In Grails Domain Event


По неосторожности можно наткнуться на

ERROR hibernate.AssertionFailure  - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) Message: null id in Domain entry (don't flush the Session after an exception occurs)

пытаясь изменить свойства домена, например, в событии beforeInsert.

Простой пример:
def beforeInsert() {
    someField = fieldModificationService.modify(someField)
}

Если Hibernate сам управляет сохранением данных в базе, а по умолчанию это так, то тут может произойти flush, что в контексте события домена запрещено.

Чтобы этого не происходило можно обернуть сервис в @Transactional(readOnly = true):
@Transactional(readOnly = true)
class FieldModificationService {
    def grailsApplication
    ...
}

воскресенье, 27 апреля 2014 г.

Not In Groovy

5ти минутный ступор: в Groovy есть оператор in, но не not in... Python портит людей.