
Cargeh
03.07.2018
16:21:32

Владислав
03.07.2018
16:21:58
Как я понимаю, вот в двух потоках сразу начнется транзакция
Или не может в двух потоках начаться
Тогда на каком уровне блокировка происходит?

Dima
03.07.2018
16:29:25

Google

Владислав
03.07.2018
16:30:17
Вот сейчас начал читать и увидел про уровень изоляции
Попытаюсь разобраться и потом уже уточнить, если что не пойму

Vyacheslav
03.07.2018
17:01:37

M
03.07.2018
17:13:47
ребят подскажите если запущено несколько apps в томкат то когда одно создаёт проблему то tomcat полностью. выключается и все остальные страдают, как можно этого избежать?
можно ли при помощи tomcat запускать отдельную jvm для каждого проекта

Dima
03.07.2018
17:16:07
Можно докером растиражиповать столько томкатом, сколько нужно

Slava
03.07.2018
17:16:33
Либо джетти бери

M
03.07.2018
17:16:37

Dima
03.07.2018
17:16:50
Да

M
03.07.2018
17:16:50
можно скинуть ссвлочку, и он умеет virtual host?

Slava
03.07.2018
17:17:11
Варник твой запускает
java -jar jetty-runner.jar myapp.war
Как-то так

Google

Slava
03.07.2018
17:19:01
Или вообще как зависимость в варник запихать

M
03.07.2018
17:19:34

Dima
03.07.2018
17:20:37
Можно, но если их много, неудобно
Если томкат падает из-за нагрузки, может имеет смысл настроить кластер и спрятать за балансировщиком

M
03.07.2018
17:22:00
и нот он падает потому что иногда проекты разные
и кто-то может быть не добросовестно, memory leak создаёт, а tomcat как я понял их всех убивает

Slava
03.07.2018
17:27:16
Отдельный томкат под каждый варник - это толсто. Попробуй джетти, может зайдёт и понравится

M
03.07.2018
17:28:32

Slava
03.07.2018
17:29:58
Ты весь фунуционал томката используешь? Или только варники туда деплоишь?
Если только варники, то советую джетти попробовать

M
03.07.2018
17:31:15
ну virtual host

Slava
03.07.2018
17:32:41
То есть по доменам дальше запрос куда-то проксирует?

M
03.07.2018
17:33:53
ну в принципе посмотрю jetty.
я вообде думал что tomcat умеет для каждого проекта запускать свою jvm
или что есть какой-то менеджер для этого

Slava
03.07.2018
17:35:41
Я такое видел только в Больших AS типа вебсферы и веблоджика, и то настраивается овер геморройно

Таир
03.07.2018
18:06:16

Jev
03.07.2018
18:13:01
Добрый! Сообщение о поиске практикантов можно сюда или это будет спам?

Google

Митко Соловец?
03.07.2018
18:13:39
и в лс любому из админов

Jev
03.07.2018
18:13:56

Евгений
03.07.2018
18:47:59
а кто нибудь сталкивался с проблемай,что метод doThrow в Мокито может иногда не отрабатывать?
все, разобрался
anyList() != null

Mikhail
03.07.2018
19:09:48
Apache FOP - хуже бормотографа с пылесосом
Извините


Magzhan
03.07.2018
20:04:16
ага, на первый взгляд херь какая-то, какой смысл лочиться вокруг нового объекта, если его все равно не будет видно другим потокам, пока данный не выскочит из блока?
На самом деле интересная конструкция.
Судя по сорсам:
Создает корзину-затычку, сразу же попадает в блок synchronized потому что некому конкурировать и добавляет эту корзину в свое хранилище.
Теперь любой кто захочет изменить корзину по индексу i будет вынужден ждать пока этот код не отпустит эту корзину(то есть по сути ждать завершения маппера + сет корзины в хранилище).
Далее выполняется вычисление этого маппера и результат запишется в новую корзину которая сохранится заменив ReservationNode.
Учитывая что остальные апдейты выглядят как:
java
while(true) {
...
f = tabAt(tab, i);
synchronized (f) {
if (tabAt(tab, i) == f) {
}
получается что если во время вычисления кто-то пытался что-то записать в корзину под номером i - то ему придется дождаться чтобы узнать что значение поменялось и в следущей итерации цикла обработать уже вставленное посчитанное значение.
В доках описаны следущие гарантии:
java
* The entire method invocation is performed atomically, so the function is applied at most once per key
Получается такой способ залочить корзину под номером i во время работы гарантированно единственного вызова маппера


Таир
03.07.2018
20:07:17


Magzhan
03.07.2018
20:09:15

Таир
03.07.2018
20:10:11

Таир
03.07.2018
20:10:44
Если конечно это изменение не во вложенном блоке

Magzhan
04.07.2018
05:48:33

Alexey
04.07.2018
06:12:19
CAS обычно делается в while и успех достигается за счет некоторого количества попыток

Митко Соловец?
04.07.2018
08:10:32
https://spring.io/blog/2018/06/28/hands-on-mongodb-4-0-transactions-with-spring-data
возможно многие теперь вновь обратят свое внимание на монго дб

Mikhail
04.07.2018
08:35:16
так, господа хорошие
кто-нить apache fop использует?

Admin
ERROR: S client not available

Google

Mikhail
04.07.2018
08:35:32
для генерации pdf-ов, например

Александр
04.07.2018
08:36:01
@shelden93 шарит в нем :)

Denis
04.07.2018
08:37:25

Mikhail
04.07.2018
08:38:19
@shelden93 когда будешь в доступе - напиши, пожалуйста?)
короче, в двух словах - проблема такая
на каждую генерацию файла pdf он грузит шрифт по-новой
а там внутри - IOUtils.toByteArray(in);
и если мы генерируем большую пачку подряд и быстро - память полностью съедается на массивы со шрифтом
то есть явно я делаю что-то неправильно)))
судя по документации - FopFactory создается только один раз, а все прочие объекты - FopAgent и сам Fop - на каждую генерацию
но в этом случае - мы как раз и считываем шрифт каждый раз по-новой

Aliaksandr
04.07.2018
08:44:24
я использую его в cli, а не через java :) и шрифты в таком кейсе он кэширует.

Mikhail
04.07.2018
08:45:10
а у нас - один шрифт
и мы его явно передаем в конфиге
и он на каждую генерацию его поднимает в память
ну, он большой, конечно, 22 мегабайта - но нам без этого никуда, много языков == много лигатур должен уметь шрифт.

Глеб
04.07.2018
11:34:08
всем привет
господа, как называется такая структура?
Request request = new Request.Builder()
.url(url)
.post(rbody)
.build();

Google

Глеб
04.07.2018
11:34:25
вызов нескольких методов при инициализации

Yan
04.07.2018
11:34:30
билдер

Глеб
04.07.2018
11:34:39
окей, спасибо

Yan
04.07.2018
11:34:42
"Request.Builder" намекает

sherzod
04.07.2018
11:38:42

Глеб
04.07.2018
11:39:20

Magzhan
04.07.2018
11:40:02
Или fluent interface