пятница, 18 июля 2014 г.

SQLite - ручной ремонт базы данных

Всем привет.
Иногда в результате сбоя (обычно по питанию) "ломается" база данных и как правило ломается
центральный файл FlylinkDC.sqllite и программа FlylinkDC++ падает с сообщением
об ошибке вида - SQLIte database disk image is malformed 

Автоматического ремонта у меня пока нет.
расскажу как можно сделать это руками 

1. Закрываете флайлинк
2. Качаете консольную утилиту sqlite3.exe последней версии тут http://sqlite.org/download.html (Precompiled Binaries for Windows)

    на сегодня это вот такая версия: http://sqlite.org/2014/sqlite-shell-win32-x86-3080500.zip
3. Раскрываете архив рядом с FlylinkDC.sqllite (там должен появиться файл sqlite3.exe)

4. Создаете резервный архив файлов *.sqlite
5. Cоздаете рядом бат-файл repair-sqlite.bat с содержимым

echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC.sqlite
sqlite3.exe FlylinkDC.sqlite .dump > FlylinkDC.sql
sqlite3.exe FlylinkDC-new.sqlite < FlylinkDC.sql
echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC-new.sqlite
ren FlylinkDC.sqlite FlylinkDC-old.sqlite
ren FlylinkDC-new.sqlite FlylinkDC.sqlite
del FlylinkDC.sql
pause


6. Запускаете repair-sqlite.bat он попытается починить базу данных.
7. После завершения батника запускаете флайлинк.
8. Сообщаете об успешном/не успешном лечении.
 
У меня на битом файле прошло вот так:

C:\!dc-db\db-sqlite-corrupt\db-bug-3>echo PRAGMA integrity_check;  | sqlite3.exe FlylinkDC.sqlite
*** in database main ***
On tree page 55555 cell 56: Rowid 8246430 out of order (max larger than parent max of 8246390)
On tree page 67284 cell 69: Rowid 8246524 out of order (max larger than parent max of 8246478)
Page 67283: btreeInitPage() returns error code 11
Error: near line 1: database disk image is malformed
C:\!dc-db\db-sqlite-corrupt\db-bug-3>sqlite3.exe FlylinkDC.sqlite .dump  1>FlylinkDC.sql
C:\!dc-db\db-sqlite-corrupt\db-bug-3>sqlite3.exe FlylinkDC-new.sqlite  0C:\!dc-db\db-sqlite-corrupt\db-bug-3>echo PRAGMA integrity_check;  | sqlite3.exe FlylinkDC-new.sqlite
ok
C:\!dc-db\db-sqlite-corrupt\db-bug-3>ren FlylinkDC.sqlite FlylinkDC-old.sqlite
C:\!dc-db\db-sqlite-corrupt\db-bug-3>ren FlylinkDC-new.sqlite FlylinkDC.sqlite
C:\!dc-db\db-sqlite-corrupt\db-bug-3>del FlylinkDC.sql
C:\!dc-db\db-sqlite-corrupt\db-bug-3>pause
 


Если ругается на другой файл БД - в батнике ставим его имя по аналогии.
  • FlylinkDC_user.sqlite
  • FlylinkDC_stat.sqlite
  • FlylinkDC_mediainfo.sqlite
  • FlylinkDC_log.sqlite
  • FlylinkDC_locations.sqlite
  • FlylinkDC_dht.sqlite

суббота, 28 июня 2014 г.

SQLite - оптимизация выборки страны по IP (GeoIP)

Всем привет.
Нашел статью проверил на sqlite, действительно быстрее.
c ревизии  r17333 в ветке r5xx ускорена выборка флага страны
данный запрос выполняется при первой отрисовке флага страны в колонке "расположение"
а также выполняется для всех записей если по этой колонке делают сортировку.








Тестовая база данных и запросы тут https://yadi.sk/d/l6ovbUUDV4iKQ
Изменения (было - стало)



Результат:
 

четверг, 19 июня 2014 г.

Обновите FlylinkDC++ 2011-2014 года выпуска

Всем привет.
Приношу извинения  пользователям программы FlylinkDC++
Рекомендую обновиться до последней версии. 
Сделать это можно следубщими способами:
1. Через автообновление (Меню-Помощь-Проверка обновлений) (рис 1)
2. Скачать инсталлятор http://www.fly-server.ru/install/r5xx/release и выполнить установку "поверх"
3. Скачать бинарник и заменить FlylinkDC*.exe руками
    http://www.fly-server.ru/install/r5xx/src-bin


 





Исправлена ошибка, которую долго не мог повторить :(
получал письма от пользователей о том, что флай падает каждую ночь
crash-сервер насобирал несколько тысяч анонимных дампов падения:
 











Падала программа  при условиях
  • Версия FlylinkDC++ r5xx находится между r8581 (Ноябрь 2011 год) и r17307  
  • Открыты окна "завершенных скачиваний" или "завершенных отдач"
  • При своей работе программа отдала или скачала больше 1000 файлов
   Для ускорения падения можно уменьшить это значение тут

среда, 11 июня 2014 г.

FlylinkDC++ и DHT


Новые версии доступны по авто обновлениях или тут
http://www.fly-server.ru/install/r5xx/src-bin
* Обновление OpenSSL 1.0.1h
* Добавлена кнопочка слева от окна загрузок "Спасательный круг" для включения пассивного режима
  так будет проще советовать что нажать когда у юзера ничего не качает.














* Исправлен алгоритм запроса к DHT серверу - не выполняем его чаще чем раз в 60 cек
* Добавлено логирование DHT - запросов на стороне клиента
  планирую детальнее разобраться как это работает и сделать лучше :)
  кто найдет в логах клиента косяки - пишите.
  текущая версия серверной части вяло обсуждается тут 
  http://dchublist.ru/forum/viewtopic.php?f=10&t=1109&start=25








* Возможно исправил падения 
 

среда, 21 мая 2014 г.

Эротика размером 8 589 934 592 Гб

Всем привет.
Прислали глючную базу данных с очередью закачек FlylinkDC.sqlite
в которой один файл никогда не мог скачаться
по названию это видео с TTH - LATTKRBYGFCTQNZRGA4DKNKFGA4DENJSIZBEMOA
интересным названием и размером 9223372036854776000! байт 
на своих хабах я такого TTH не смог найти...










Версии
 Ошибка во флайлинке и он где-то портит размер файла.
 поле TempTarget - пустое... это означает, что флай не смог создать временный файл такого размера.
 Возможно кто-то создал фейковый файл-лист и заставил юзера скачать такой файлик (повторить еще не пробовал)
Думаю для начала нужно наложить ограничение на размер файла в 16Tb? (лимит размера тома NTFS)
какие еще будут предложения по защите от подобного, или может есть более точные версии как такое могло произойти? 

Падение GDI+ на WinXP

Всем привет.
Краш-сервер долгое время собирал статистику и краши при отрисовки закладок через GDI+ выбились почти в лидеры
причина падения не известна :(- единственное что заметил - возникает только на XP SP3
в 2012 году пытался задать вопрос тут - http://www.rsdn.ru/forum/winapi/4957569.1 ответа не получил :(
























Для решения проблемы решил вырезать градиентную заливку закладок через GDI+  если система меньше Vista
в результате чего у пользователей под XP немного изменится внешний вид вкладок:






суббота, 10 мая 2014 г.

Mediainfo - скрытая реклама вконтактика

Всем привет.
Нашел странный способ фиксации своего url-а
TTH файла 5N42B4SWZRCSKPXJEDULYONHIIEA2BB5V7BS4CA

Есть и другой вариант - уже больше похож на программную ошибку
TTH = FEBD4XOKHLK5PJC5F4DBYL64VSB24WTTGDBD23Q
размер Lyrics ~= 67000 байт!
Планирую в FlylinkDC++ сделать фильтрацию такой глючной медиаинфы
1. Если в разных тегах встречается дубликатные значения более чем 3-5 раз
2. Если длина тэга длиннее N-байт (N = 1000)