@proGO

Страница 1158 из 1674
Arch
18.01.2018
11:04:26
a:=make(chan string) close(a) a=nil fmt.Println(a==nil) // true

John
18.01.2018
11:05:22
a:=make(chan string) close(a) a=nil fmt.Println(a==nil) // true
Но ведь это не проверка на то, что канал жив :)

Ilya
18.01.2018
11:05:49
a:=make(chan string) close(a) a=nil fmt.Println(a==nil) // true
в пределах одной функции или если канал задан как глобальная переменная, то можно и так

Arch
18.01.2018
11:06:01
Но ведь это не проверка на то, что канал жив :)
Мы сказали каналу закрыться, какие у него шансы на выживание?

Google
John
18.01.2018
11:06:44
Мы сказали каналу закрыться, какие у него шансы на выживание?
Я бы вообще не парился, и просто оставлял их открытыми, GC сам все подберет

Arch
18.01.2018
11:06:55
Нельзя

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

Arch
18.01.2018
11:07:32
и другая горутина закроется только если канал закрыл

John
18.01.2018
11:07:55
и другая горутина закроется только если канал закрыл
ну дык делай в другой горутине: for v := range ch {}

или через select

Arch
18.01.2018
11:08:30
и чо ?
так оно и сделано через селект

и пока я из писателя не закрою канал, горутина будет жить

John
18.01.2018
11:08:53
так оно и сделано через селект
ну так темболее, тебе придет флаг, что канал закрыт

Arch
18.01.2018
11:08:53
а всемте с ней еще несколько соединений

ну так темболее, тебе придет флаг, что канал закрыт
Блин, мне надо проверить закрытие канала со стороны

Alexey
18.01.2018
11:09:22
Канал сделай структурой, где создай флаг: будет - закрыто/открыто

Google
Arch
18.01.2018
11:09:46
если юзер перелогинивается, надо старые каналы закрыть, новые огранизовать на их место

Если поверх перезаписать новые, то gc старые не закроет и память поедет

John
18.01.2018
11:10:47
nezorflame
18.01.2018
11:10:56
^this

Arch
18.01.2018
11:11:03
Не вижу проблемы, делаешь всем им close() и запускаешь новые
ЗБС А то я не догадался, от делать нечего тут вопрос пишу, а если канал уже закрыт? то паника, надо либо проверять канал на закрытость, либо отлавливать панику

Ilya
18.01.2018
11:11:44
Блин, мне надо проверить закрытие канала со стороны
Никак, только менять архитектуру приложения

nezorflame
18.01.2018
11:12:04
не, ну это не ок

John
18.01.2018
11:12:21
не, ну это не ок
он изначально чухню написал, хуже не будет )

Arch
18.01.2018
11:12:57
он изначально чухню написал, хуже не будет )
Это говорит человек который предложил оставлять каналы на волю gc ?

Arch
18.01.2018
11:13:38
Про закрытие был вопрос, уже нет

nezorflame
18.01.2018
11:13:52
то, что канал спавнит, должно его закрывать

producer should close the channel

если не так - косяк в дизайне

Arch
18.01.2018
11:15:19
КЭПство. Понятно что он должен быть закрыт, но он может быть закрыт из нескольких мест, по этому при закрытии нужно проверит, а не закрыт ли он ранее

John
18.01.2018
11:15:34
Это говорит человек который предложил оставлять каналы на волю gc ?
Я тебе больше скажу - так много где написано https://stackoverflow.com/questions/8593645/is-it-ok-to-leave-a-channel-open Закрытие канала лишь информирует горутину которая слушает, что больше данных не будет :) Если у тебя так получется что закрытие каналов может быть вызвано несколько раз для одного и того же ... ну, это уже твой косяк :)

nezorflame
18.01.2018
11:15:48
вот то, что он из нескольких мест может быть закрыт - уже косяк

Google
Arch
18.01.2018
11:17:56
вот то, что он из нескольких мест может быть закрыт - уже косяк
У нас завершается приложение надо закрыть все каналы? НАДО! Если в этот момент приходил логаут, в горутину, которая еще не завершилась, по сценарию надо закрыть канал. Вероятность совпадения этих двух факторов мала, но произошло на практике.

nezorflame
18.01.2018
11:18:53
https://play.golang.org/p/CEO_flcINB

делайте закрытие значит тоже с помощью quit-канала

а эвент в него посылайте уже из функций

неважно какой - завершения приложения, или релогина

будет одна точка закрытия тогда

Arch
18.01.2018
11:20:54
капец костыли (

John
18.01.2018
11:21:09
капец костыли (
А вот, ниразу. Очень даже goway :)

nezorflame
18.01.2018
11:21:21
by design так

Arch
18.01.2018
11:21:53
сцуко, говэй, улыбнуло, вспомнилось питониквэй, где явное, лучше, чем не явное ???

John
18.01.2018
11:22:40
сцуко, говэй, улыбнуло, вспомнилось питониквэй, где явное, лучше, чем не явное ???
Можем еще вспомнить perl way ... там вариаций много больше ;))

nezorflame
18.01.2018
11:22:41
ну и в целом, касательно первого вопроса про утечку памяти, ничего не потечет

nezorflame
18.01.2018
11:23:27
GC чистит неюзанный канал в любом случае, открыт он или закрыт

Arch
18.01.2018
11:23:31
ну и в целом, касательно первого вопроса про утечку памяти, ничего не потечет
Канал не закрыт, горутина работает, в горутине живет WS соединение

yuriy
18.01.2018
11:23:38
Ребят, кто какую аналитику использует в го?

nezorflame
18.01.2018
11:23:54
Arch
18.01.2018
11:23:58
GC чистит неюзанный канал в любом случае, открыт он или закрыт
Как он его почистит, если его горутина читает?

nezorflame
18.01.2018
11:24:05
уточнил

Arch
18.01.2018
11:24:18
если уж горутина не закрылась, это да
А горутина закрывается, когда канал закрывается

nezorflame
18.01.2018
11:24:29
¯\_(ツ)_/¯

Google
nezorflame
18.01.2018
11:24:50
Arch
18.01.2018
11:25:14
close(a) a=nil Самый что ни наесть юзер фрэндли вариант получился

yuriy
18.01.2018
11:25:16
хочу трекать всякие ивенты на серваке и делать выборки потом

nezorflame
18.01.2018
11:25:28
вариков полно

Arch
18.01.2018
11:26:59
что значить НАДО???
Надо корректно завершить сервер, закрыть все соединения, скинуть всю инфу в базу.

nezorflame
18.01.2018
11:26:59
на прошлом месте юзали отправку эвентов в InfluxDB и смотрели через Grafana

сейчас через NewRelic

yuriy
18.01.2018
11:27:23
https://opensource.googleblog.com/2018/01/opencensus.html вчера выкатили. но это чуть другое. это метрики перфоманса а мне еще пользовательские ивенты нужны

Admin
ERROR: S client not available

yuriy
18.01.2018
11:27:28
о нюрелик)))

nezorflame
18.01.2018
11:27:42
логи через Kibana

yuriy
18.01.2018
11:28:10
у меня мой проект поэтому позволить себе нюрелик не могу но вообще история прикольная

nezorflame
18.01.2018
11:28:23
инфлюкс с графаной вполне себе варик

и настраивать не особо сложно

хотя графана умеет много сорсов http://docs.grafana.org/features/datasources/

yuriy
18.01.2018
11:30:13
ага заценю, спасибо!

John
18.01.2018
11:30:18
инфлюкс с графаной вполне себе варик
У меня сейчас так же. Еще и графит даже есть :)

yuriy
18.01.2018
11:35:48
http://blog.egrik.ru/2016/01/influxdata-1-influxdb.html а тик стэк кто-то использовал,

?

Google
nezorflame
18.01.2018
11:35:56
у нас щас тик

ненавижу его)

yuriy
18.01.2018
11:36:17
графана удобнее?

nezorflame
18.01.2018
11:36:32
тик постит эвенты в ньюрелик

а

стоп

не тот тик, проехали

подумал, что речь про https://github.com/TykTechnologies/tyk

John
18.01.2018
11:39:05
графана удобнее?
Графана - это просто морда. Сами же метрики собирает тик\графит\другая хрень

yuriy
18.01.2018
11:40:31
Графана - это просто морда. Сами же метрики собирает тик\графит\другая хрень
понял я все пытался уменьшить стек значит дето такой тик и придется юзать

только с графаной

а чо с прометеем? кто-то использовал? https://prometheus.io/docs/introduction/comparison/

Aleksandr
18.01.2018
11:44:13
yuriy
18.01.2018
11:44:43
я так понимаю он сильно навороченнее

Aleksandr
18.01.2018
11:45:31
и как впечатления?
ну как я помню девопсы говорят перфоманс лучше при тех же затратах, ну и да, всякие плюшки с типами (целых 4! насколько я помню), polling моделью и прочим

Mykyta
18.01.2018
11:48:06
капец костыли (
Пора осилить context

Это говорит человек который предложил оставлять каналы на волю gc ?
Каналы прекрасно собираются сборщиком точно так же, как и все остальное. Просто проблема с каналами, что где-то чтение может заблочить горутину и она как зомби будет вечно висеть, а канал вместе с ней. Но в таких случаях для совсем упорных можно обернуть каналы в структуру, а туда какой-нить метод close(), и установить финализатор, чтобы наверняка!

Aleksandr
18.01.2018
11:59:31
спасибо прояснилось!
а еще есть замечательный node_exporter, который избавит вас от написания костылей для мониторинга железа

yuriy
18.01.2018
12:01:04
ага но он стек не сохраняет? хочу попробовать opencensus сейчас пользуюсь фришным stackimpact

Страница 1158 из 1674