Sergey
GG
не
Спасибо, а то я сегодня хотел его заюзать
Sergey
во вторых, чтобы иметь возможность остановить инсерт, не нужно в .map перебирать, его не прервать
GG
Sergey
GG
GG
Sergey
Sheldhur
спсб, поковыряю
Sheldhur
так и как замутить процесс прерывания? избавляться от Promise.all и делать простые циклы?
Sergey
скорее всего организовывать инсерт пачками
Sergey
и перед каждым инсертом проверять условие
Sergey
типа if (!this.break) db.insert
Sergey
но это так, примерное
Sheldhur
а воркер прибить можно же? или он продолжит молотить пока всё не сделает?
Sergey
Sergey
в любом случае нужно знать сколько ты уже инсертнул, иначе дубликаты
Sheldhur
у меня unique индексы, оно просто не вставится второй раз
Sergey
но ошибочки будут)
Sheldhur
ну их можно обработать :3
Sergey
ну лишняя логика
к примеру, пихаешь 5К записей
отменил после вставки 4К
запускаешь снова, и ждешь пока пройдут 4К запросов на существующие записи
Sergey
такое себе, не правда ли?
Sheldhur
ну да
Sergey
лучше делить на пачки, по 50-100 запросов (экспериментально подбирается) и составлять список не вставленных, чтобы можно было повторить
Sheldhur
Sergey
Надо смотреть как работает electron-workers
Sheldhur
ога, сервак поднимает
Sergey
я вообще имел ввиду webWorker
Sergey
но похоже webworkers в электроне не алё
Sergey
ибо не thread-safe
Sergey
видимо да, придется ещё один процесс поднимать
Sergey
Sheldhur
чёт пишут, что это какие-то траблы электрона и spawn
Sergey
Чет да
Sergey
Ты писал что электрон самопадает?
Sheldhur
нет
Sergey
короче я тоже видел такое же падение
Sheldhur
но похоже webworkers в электроне не алё
this?
Any native Node.js module can be loaded directly in Web Workers, but it is strongly recommended not to do so. Most existing native modules have been written assuming single-threaded environment, using them in Web Workers will lead to crashes and memory corruptions.
Note that even if a native Node.js module is thread-safe it's still not safe to load it in a Web Worker because the process.dlopen function is not thread safe.
The only way to load a native module safely for now, is to make sure the app loads no native modules after the Web Workers get started.
Sergey
ага
Sheldhur
https://github.com/electron/electron/blob/master/docs/tutorial/multithreading.md
Sheldhur
а что может пойти не так?
Sheldhur
работа с базой будет внутри воркера, где-то в другом месте в это же время к базе вряд ли будет какое-то обращение
Sergey
классические проблемы параллельности
Sergey
с базой это самый простой пример
Sergey
но решается легко — транзакции и атомарность
Sheldhur
nodeIntegrationInWorker только только добавили, я так понял мне надо до 1.6.4 обновиться, а в npm 1.6.2
Sheldhur
Sheldhur
npm install --save-dev electron@1.6.4?
Sergey
Sheldhur
npm install --save-dev electron@beta
Sheldhur
latest 1.6.2
Sheldhur
или бету не стоит трогать?
Sergey
Да ну
Sergey
сделай в консоли npm info electron
Sergey
и промотай до версий вверх
Sergey
у меня последняя 1.6.4
Sergey
[v
Sergey
хм, действительно бета
Sergey
слушай, так как ты только разрабатываешь, ставь бету
Sergey
главное чтобы к выпуску твоей прилажки, версия перестала быть бета
Sheldhur
чёт не робит :с
Uncaught Error: ENOENT, worker\api\exports\electron.js not found in C:\Users\Sheldhur\WebstormProjects\Vector\node_modules\electron\dist\resources\electron.asar
Sergey
файл найти не может
Sheldhur
https://github.com/electron/electron/tree/master/lib/worker
Sheldhur
пусто
Sheldhur
не завезли видимо ещё
Sergey
странно =(
Sheldhur
буду пилить синхронное выполнение INSERT'ов, и надеяться, что в api скоро завезут
Sheldhur
или можно что-то ещё сделать?
Sergey
заспаунить чайлд процесс
Sheldhur
не делается
Sergey
как в обычной ноде
Sheldhur
эм...
Sheldhur
ну я в в мейн процессе пробовал
var electron = require('electron')
var proc = require('child_process')
// will print something similar to /Users/maf/.../Electron
console.log(electron)
// spawn Electron
var child = proc.spawn(electron)