
guga
25.05.2017
06:18:12

Ruslan
25.05.2017
06:18:13

Alexander
25.05.2017
06:20:26

Ruslan
25.05.2017
06:20:45
А для богатых что?)

Google

Alexander
25.05.2017
06:21:43

Daniel
25.05.2017
06:23:05

Alexander
25.05.2017
06:28:12

Igor
25.05.2017
06:29:04

Nick
25.05.2017
06:29:31
с китаем все просто, они юзают украинский vpn

Quantum Harmonizer
25.05.2017
06:29:56

Kirill
25.05.2017
06:29:56
и не могут зайти вк *бадумтс*

Daniel
25.05.2017
06:30:23
начнем с того что среднестатистический китаец вообще не гуглит
у них там свой интернет и наверняка свой аналог SO

Nick
25.05.2017
06:31:04

Alexander
25.05.2017
06:34:25

Nick
25.05.2017
06:35:43

Alexander
25.05.2017
06:38:54

Google

guga
25.05.2017
06:49:45
Купить или на халяву?

Mikhail
25.05.2017
06:52:08
Вопрос. У нас тут распределенные локи реализованы как PESSIMISTIC_WRITE select на строку в бд, в которой ключ лока. И, под большой нагрузкой - начинаем сваливаться в дедлоки и висеть до таймаута.

Alexander
25.05.2017
06:52:30

Mikhail
25.05.2017
06:52:38
Соббсно, в доке к LockModeType так и написано "A lock with
* <code>LockModeType.PESSIMISTIC_WRITE</code> can be used when querying data and
* there is a high likelihood of deadlock or update failure among
* concurrent updating transactions."
В общем, как написано, то и имеем
А как правильные пацаны такое реализуют?

guga
25.05.2017
06:53:16

Mikhail
25.05.2017
06:53:18
Я понимаю, что можно зукипер+куратор запилить
но хотелось бы без новых сервисов, а обойтись БД

guga
25.05.2017
06:53:39
Для пк любой браузер, который сжимает трафик
Или опера

Alexander
25.05.2017
06:57:33

guga
25.05.2017
06:58:10

Nick
25.05.2017
06:58:18

guga
25.05.2017
06:58:50
мне же не секьюрность нужна, а скорость, что бы порно в вк смотреть

Nick
25.05.2017
06:59:09
orbot?
Да, но орбит тож ничего, если не долго жевать

Alexander
25.05.2017
07:01:49

Anton
25.05.2017
07:07:57

Oleg
25.05.2017
07:08:46

Google

guga
25.05.2017
07:09:48
лол

Oleg
25.05.2017
07:12:17
а чем отличается?
отдельный лист сайтов для укроблокировок?

Mikhail
25.05.2017
07:13:21
@zzashpaupat доктор, меня все игнорируют?)

guga
25.05.2017
07:15:46

Vlad
25.05.2017
07:16:12

Mikhail
25.05.2017
07:17:35
Типа того))))
э
а с фига бы
SELECT NAME, CREATION_DATE, UPDATE_DATE, UPDATED_BY FROM CH_LOCK WHERE (NAME = 'DX.SN00000135.hdm:sim:SmartPlug.DEVICE_OPERATION_EVENT') FOR UPDATE WAIT 30

Mikhail
25.05.2017
07:18:14
я селекчу одну строку, лок на одну строку, по идее
лок снимается через em.find(LockEntity.class, name, LockModeType.NONE);
то есть выглядит все как бы прилично

Vlad
25.05.2017
07:19:14
Хз у нас подобная проблема была как-то. Разрешилось созданием индекса. Но там люди которые шарят в бд решали проблему.

Mikhail
25.05.2017
07:19:56
у меня dba еще не пришел сегодня

Vlad
25.05.2017
07:20:01
Я уже забыл что такое sql.

Mikhail
25.05.2017
07:20:07
если сам не пойму - пойду к нему, конечно

Vlad
25.05.2017
07:21:04
А name уникален и по нему есть индекс?

Google

Mikhail
25.05.2017
07:21:42
name - primary key
то есть, логика такая - пытаемся залочить строку, если такой нет (новый пользователь, например) - инсертим строку, а уже потом лочим
в finally анлочим
казалось бы

Ruslan
25.05.2017
07:24:07
Так а с чего дедлок то? Получается что лочите вы несколькозаписей в одной транзакции правильно?

Mikhail
25.05.2017
07:25:39
там не дедлок, всё таки похоже, а так
Такой еррор:
2017-05-25 06:02:36,798 [org.springframework.integration.jms.JmsMessageDrivenEndpoint#1.container-61] ERROR (Slf4jSpyLogDelegator.java:139) - 478211. PreparedStatement.executeQuery() FAILED! SELECT NAME, CREATION_DATE, UPDATE_DATE, UPDATED_BY FROM CH_LOCK WHERE (NAME = 'DX.SN00000135.hdm:sim:SmartPlug.DEVICE_OPERATION_EVENT') FOR UPDATE WAIT 30 {FAILED after 30010 msec}
java.sql.SQLException: ORA-30006: resource busy; acquire with WAIT timeout expired

Admin
ERROR: S client not available

Vlad
25.05.2017
07:26:15
Долгие транзакции

Mikhail
25.05.2017
07:26:28
то и удивительно

Vlad
25.05.2017
07:26:36
Я бы попрофилировал
У нас на проекте лочилась вся таблица вместо одной записи.

Ruslan
25.05.2017
07:28:26
Так стоп

Mikhail
25.05.2017
07:28:28
попрофилировать - это правильно, так и собирался, тем более, что сборщие метрик на эти функции уже настроен
а?

Ruslan
25.05.2017
07:29:31
Все
Я уже понял что не прав

Mikhail
25.05.2017
07:29:52
Окей

Vlad
25.05.2017
07:29:54
Может ты делаешь полную выборку

Google

Vlad
25.05.2017
07:30:04
В соседнем потоке
И там другой рекорд держишь
И тут выборку полную делаешь
И они друг друга ждут

Mikhail
25.05.2017
07:30:36

Vlad
25.05.2017
07:30:54
Записей из таблицы

Mikhail
25.05.2017
07:31:04
для локов отдельная таблица, на неё в ДАО две функции - одна с find и локом, вторая - с find и лок нон
а, ну и persist метод
то есть физически это не возможно
если новую запись надо добавить

Vlad
25.05.2017
07:31:55
Ну я такое встречал просто.

Mikhail
25.05.2017
07:33:18
судя по всему, изредка действительно бывают длинные транзакции, когда входящее сообщение по какой-то причине обрабатывается оч долго
и всё бы хорошо, но это задерживает транзакцию на БД, что в свою очередь тормозит всё остальное
а лок мы делаем на 30 секунд

Ruslan
25.05.2017
07:34:30
Так у вас транзакция больше 30секунд висит чтоли?

Ivan
25.05.2017
07:34:49
скорее всего несколько транзакций лочат запись

Mikhail
25.05.2017
07:34:53
Судя по всему, бывают такие транзакции периодически
одновременно?

Ivan
25.05.2017
07:35:05
да