@jvmchat

Страница 2624 из 2890
Dim
04.07.2018
11:41:38
ага, одной аннотацией с ноги

Глеб
04.07.2018
11:41:53
Ломбок такое генерит, если что
запомнил) может пригодится)

спасибо

Google
Таир
04.07.2018
11:43:34
запомнил) может пригодится)
если не успеешь перейти на Котлин ))

Глеб
04.07.2018
11:43:52
не успею, проекту уже несколько лет)

Таир
04.07.2018
11:44:38
не успею, проекту уже несколько лет)
ну для ломбока это тоже иногда препятствие, его нужно встраивать в процесс разработки

Vyacheslav
04.07.2018
11:54:38
кстати, ломбок для Java >=9 уже работает?

Artem
04.07.2018
11:56:44
для 9 работает, проверял

Митко Соловец?
04.07.2018
11:57:51
давно уже

Mikhail
04.07.2018
11:58:01
короче, никакого бага нет

просто Apache FOP так написан

что подгружает шрифт в память на каждую генерацию

круто, чо

Friedrich
04.07.2018
11:59:03
просто Apache FOP так написан
А почему бы не выкатить патч для него, а?

Vyacheslav
04.07.2018
11:59:05
форкни, перепиши, сделай пулл-реквест

Google
Vyacheslav
04.07.2018
11:59:26
я для Excel reader-а делал

Mikhail
04.07.2018
11:59:47
и кэш тут не при чем - кэш помогает ему знать, какие файлы надо грузить, если он сканит системные шрифты или папку. В случае, когда конкретный шрифт - кэш бесполезен.

мммм

мысль интересная, конечно

Tolegen
04.07.2018
12:00:53
Fop это те ещё приключения. Проще купить iPdf или как там его

Дешевле выйдет по итогу

Mikhail
04.07.2018
12:01:27
там фишка в том, что сам объект fop надо создавать каждый раз заново - это написано в документации

Fop это те ещё приключения. Проще купить iPdf или как там его
скорее всего, если это реально пойдет на прод - надо будет так и сделать

у нас ситуация специфичная - в реальной системе этот функционал сейчас не используется, а начали падать тесты - выросло количество мест, где неявно вызывается код с генерацией pdf

и тупо gc не успевает память чистить от этого шрифта между тестами

и на очередном тесте - все падает

поэтому счас просто закомментировал эту ветку в коде, чтобы на тесты это не влияло

а если понадобится для прода - надо будет переписывать в итоге

Friedrich
04.07.2018
12:05:35
Mikhail
04.07.2018
12:07:30
Высококонкурентные тесты или утечка?
Получается, что утечка - каждый тест из группы в итоге доходит до генерации pdf (теоретически может уходить на имейл юзеру, реально этого нет) - и грузится шрифт в память, по 22 метра на каждый тест.

Вот и всё - в какой-то момент gc только и делает, что память от старых экземпляров шрифта чистит, в то время, как там новые напирают

Friedrich
04.07.2018
12:09:27
А, ок, то есть не совсем утечка, а просто GC не успевает. Ну что ж, надо чинить!

Mikhail
04.07.2018
12:14:38
может, надо лениво генерить?
Вытянуть их все в очередь и генерить себе один за одним - это всё правильное решение, если этот функционал будет на проде + большая нагрузка

Получается, что в тестах у нас косвенно получилась штука, которой в реальности вообще не бывает))))

Google
Vladimir
04.07.2018
12:17:10
Грузить 22 метра в память на каждый запрос - всё равно так себе. Производительность пока устраивает?

Mikhail
04.07.2018
12:18:51
почему, считай, стресс-тест :)
да, это справедливо

ну в общем да

если это добавится в прод - надо будет в фон выносить даже не пдф-ы

а вообще формирование писем

сейчас мы это делаем immediately, так как это только на этапе регистрации, которую даже не пользователь, а специальный техник проводит

Oleksandr
04.07.2018
12:20:44
ну вот, такой косяк удачно обнаружили благодаря тестам

Mikhail
04.07.2018
12:20:50
а если добавляем pdf во вложение - то тогда очередь генерации писем, и как следствие - pdf -ов

Friedrich
04.07.2018
12:21:16
Вытянуть их все в очередь и генерить себе один за одним - это всё правильное решение, если этот функционал будет на проде + большая нагрузка
Если GC не справляется в импровизированном нагрузочном тесте — значит, и отдельный поток не будет успевать разгребать очередь, я думаю.

Oleksandr
04.07.2018
12:22:05
но это не важно для такой задачи

Mikhail
04.07.2018
12:22:19
ну вот, такой косяк удачно обнаружили благодаря тестам
Ага))) Главное, это началось неделю назад - вся эта генерация зашита была в код инициализации тестового окружения - и тупо количество тестов превысило некий критический барьер

у него будет куда ниже throughput
да, полагаю, что правда. Ну это уже мерять надо будет, целенаправленно.

Friedrich
04.07.2018
12:23:04
Ну ладно тогда.

Владислав
04.07.2018
12:33:32
друзья, играюсь с сервлетами и проблема появилась когда через idea деплою, она зачищает папку root, ставит проект туда и только так запускается(причём, по нормальному uri, будто он в другой папке, если обращаюсь по /, то не работает). Грешу на Guice, возможно, что-то не так настроил

а если через tomcat-manager(создает отдельную директорию), то в логах всё ок, но запускаться не хочет

проблема была в парсинге uri, разобрался, спасибо

кто-нибудь знает, можно ли как-то сделать, чтоб когда на сервлете выполняется doPost, к примеру, resp не сразу отправлялся?

Google
Sergey
04.07.2018
14:46:47
Thread.sleep

Владислав
04.07.2018
14:48:56
а если мне самому нужно указать, когда вернуть resp? не дописал вопрос, прошу прощения

Artem
04.07.2018
14:48:59
Sergey
04.07.2018
14:49:53
Ну а кто тебе мешает из реквеста получить и передать аргумент в тред.слип?

Admin
ERROR: S client not available

Alexandr
04.07.2018
14:50:12
Еще в сторону asynсContext можно посмотреть

Владислав
04.07.2018
14:51:00
Ну а кто тебе мешает из реквеста получить и передать аргумент в тред.слип?
никто я просто немного не понимаю, что вы имеете ввиду

Sergey
04.07.2018
14:51:36
Лучше ты скажи, как ты хочешь сказать сервлету сколько ждать перед респонсом?

Передать через урл можно /url?wait=1000

Владислав
04.07.2018
14:52:21
пока не выполнится запрос к бд

Sergey
04.07.2018
14:52:41
Но у тебя же заблочится и так тред

Запросом

Владислав
04.07.2018
14:52:47
нет

Alexey
04.07.2018
14:53:24
Thread.sleep
Ты зачем плохие советы даешь :)

Sergey
04.07.2018
14:53:49
Нормальный совет, обычный. Как вопрос - такой ответ

Владислав
04.07.2018
14:53:51
https://gist.github.com/eltgm/034a678fd4bb2e1f00d2af244a1bd8f7 вот ситуация addTransaction выполнился, ответ ушёл а бд ответ ещё не успевает вернуть ответ

Sergey
04.07.2018
14:54:16
Наконец-то, у тебя коллбеки

Я не знаю апи с которым ты работаешь, получи транзакцию и залочь ею тред

АддТранзакшен должен что то возвращать

Типа как у Future.get

Google
Sergey
04.07.2018
14:56:24
Ты пытаешься респонс кинуть в лямбде, так по-моему не будет работать

Владислав
04.07.2018
14:56:31
те, никак нельзя заставить resp дождаться колбэка?

да всё работает

просто у меня resp отправляется раньше, чем приходит ответ причём, при втором вызове всё нормально потом опять не успевает потом опять нормально

неужели это нельзя никак контроллировать ?

Tolegen
04.07.2018
15:13:35
Ответ надо асинхронно отдавать

Иначе смысла нет в неблокирующей БД

Владислав
04.07.2018
15:14:15
она и даёт асинхронно

сервлет не дает ответ асинхронно

Tolegen
04.07.2018
15:14:50
Сервлеты вроде поддерживают асинхрон с какой-то версии (3.0+)

Или перейти на WebFlux

Alexandr
04.07.2018
15:17:08
Обсуждение более подходит для https://t.me/javastart, @eltgm, присоединяйся. А по вопросу - смотри в сторону асинхронных сервлетов.

Artem
04.07.2018
18:59:56
Всем привет . Подскажите пожалуйста если я использую AtomocReference.compareAndSet и два потока пытаются выполнить этот метод то гарантируется ли что второй поток дождется пока первый выполнить операцию, увидит измения первого и только тогда выполнить метод ?

Страница 2624 из 2890