+74
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
@Name("solr")
@AutoCreate
public class SolrClient {
@Create
public void init() {
try {
server = startRemoteSolr();
} catch (Exception e) {
log.error(e, e);
}
}
public SolrServer startRemoteSolr() throws MalformedURLException, SolrServerException {
CommonsHttpSolrServer solr = new CommonsHttpSolrServer("http://localhost:8983/solr");
solr.setRequestWriter(new BinaryRequestWriter());
return solr;
}
}
Seam. Перевод для непричастного: на старте сайта вызывается метод startRemoteSolr(). Solr - это поисковый движок. Если он не запустится, на сайте не будет работать поиск. И если на запуске Solr будет ошибка, то в лог она попадёт просто как exception + stack trace.
Что не так в коде? Очевидно, его писали люди, не задумываясь об эксплуатации, что свойственно новичкам. А ведь устранение проблем в рабочем сайте - это приоритет номер один. Сама разработка сайта, сидя в удобном кресле с кашкой кофе - где-то сильно ниже.
Так вот, что не так?
1. При выводе ошибок надо писать - что это за ошибка. В данном случае: "Запуск поисковика неудался, ПОИСК НА САЙТЕ РАБОТАТЬ НЕ БУДЕТ." И уже потом - stack trace.
2. Если некая ошибка связана с ресурсами - сетевыми, или на файловой системе, в логе надо также описывать этот ресурс. Т.е. "Не удалось запустить клиент поисковика по адресу http://localhost:8983/solr". Что бы из логов сразу было видно, что порт указан правильно или нет, хост и тд.
Но выпускникам ВМК МГУ такие вещи неведомы, они слишком крутые что бы опускаться до таких мелочей. Чайники, хуле.
Запостил: yvu,
12 Января 2011
Lure Of Chaos 12.01.2011 18:05 # 0
tr00_gr1m_doomster 12.01.2011 19:25 # 0
Lure Of Chaos 12.01.2011 19:56 # +2
должно падать туда, куда логгер сказал. может быть в лог-файл, в консоль, куда угодно
(видел даже случай особого извращения, когда логи пихались в БД. Вот весело было, когда соединение с базой не удавалось, получалась неочевидная рекурсия)
tr00_gr1m_doomster 12.01.2011 19:57 # 0
Lure Of Chaos 12.01.2011 20:04 # 0
yvu 12.01.2011 21:37 # 0
Lure Of Chaos 12.01.2011 21:40 # 0
yvu 12.01.2011 21:48 # 0
Lure Of Chaos 12.01.2011 21:58 # +1
yvu 12.01.2011 22:24 # 0
Lure Of Chaos 12.01.2011 22:30 # 0
yvu 12.01.2011 22:37 # 0
Lure Of Chaos 12.01.2011 22:40 # 0
yvu 12.01.2011 22:50 # 0
Надо а) в файл и б) настроить для файла ограничение по размеру через какой-нибудь roller.
Но это - производственная неизбежность, подстраховка. В трезвом уме сознательно писать в stdout/stderr не нужно.
Lure Of Chaos 12.01.2011 23:04 # 0
yvu 12.01.2011 23:06 # 0
UPD: хотя, оно может от реализации шелла зависеть.
Lure Of Chaos 12.01.2011 23:08 # 0
absolut 12.01.2011 21:53 # −1
yvu 12.01.2011 22:05 # 0
absolut 12.01.2011 22:57 # 0
yvu 12.01.2011 21:38 # −2
tr00_gr1m_doomster 13.01.2011 00:17 # 0
yvu 13.01.2011 01:04 # 0
Сервер запускается либо на старте ОС, либо скриптом, выкладывающем новую версию, либо просто скриптом, который, например, перезапускает все ноды. Их, допустим, 20. Запускаются они автоматически - скрипт заходит на каждую систему, выполняет там старт, и отваливается.
tr00_gr1m_doomster 13.01.2011 01:43 # 0