
Сергей
29.03.2017
08:27:56
во вторых, чтобы иметь возможность остановить инсерт, не нужно в .map перебирать, его не прервать

Sergey
29.03.2017
08:29:04

Alex
29.03.2017
08:30:01

Google

Sergey
29.03.2017
08:30:22

Сергей
29.03.2017
08:30:26

Alex
29.03.2017
08:31:05

Sergey
29.03.2017
08:32:04

Sheldhur
29.03.2017
08:32:07

Sergey
29.03.2017
08:33:48

Сергей
29.03.2017
08:36:38

Sheldhur
29.03.2017
08:37:08
спсб, поковыряю
так и как замутить процесс прерывания? избавляться от Promise.all и делать простые циклы?

Сергей
29.03.2017
08:38:53
скорее всего организовывать инсерт пачками
и перед каждым инсертом проверять условие

Google

Сергей
29.03.2017
08:39:19
типа if (!this.break) db.insert
но это так, примерное

Sheldhur
29.03.2017
08:40:18
а воркер прибить можно же? или он продолжит молотить пока всё не сделает?

Сергей
29.03.2017
08:41:13
в любом случае нужно знать сколько ты уже инсертнул, иначе дубликаты

Sheldhur
29.03.2017
08:42:21
у меня unique индексы, оно просто не вставится второй раз

Сергей
29.03.2017
08:43:44
но ошибочки будут)

Sheldhur
29.03.2017
08:44:29
ну их можно обработать :3

Сергей
29.03.2017
08:45:39
ну лишняя логика
к примеру, пихаешь 5К записей
отменил после вставки 4К
запускаешь снова, и ждешь пока пройдут 4К запросов на существующие записи
такое себе, не правда ли?

Sheldhur
29.03.2017
08:46:39
ну да

Сергей
29.03.2017
08:47:46
лучше делить на пачки, по 50-100 запросов (экспериментально подбирается) и составлять список не вставленных, чтобы можно было повторить

Sheldhur
30.03.2017
07:32:23

Сергей
30.03.2017
07:33:13
Надо смотреть как работает electron-workers

Sheldhur
30.03.2017
07:35:53
ога, сервак поднимает

Сергей
30.03.2017
07:36:09
я вообще имел ввиду webWorker
но похоже webworkers в электроне не алё
ибо не thread-safe
видимо да, придется ещё один процесс поднимать

Google

Sheldhur
30.03.2017
08:06:40
чёт пишут, что это какие-то траблы электрона и spawn

Сергей
30.03.2017
08:08:40
Чет да
Ты писал что электрон самопадает?

Sheldhur
30.03.2017
08:10:35
нет

Сергей
30.03.2017
08:11:04
короче я тоже видел такое же падение

Sheldhur
30.03.2017
09:03:45
но похоже 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.

Сергей
30.03.2017
09:04:11
ага

Sheldhur
30.03.2017
09:04:12
https://github.com/electron/electron/blob/master/docs/tutorial/multithreading.md
а что может пойти не так?
работа с базой будет внутри воркера, где-то в другом месте в это же время к базе вряд ли будет какое-то обращение

Сергей
30.03.2017
09:06:19
классические проблемы параллельности
с базой это самый простой пример
но решается легко — транзакции и атомарность

Sheldhur
30.03.2017
09:45:07
nodeIntegrationInWorker только только добавили, я так понял мне надо до 1.6.4 обновиться, а в npm 1.6.2
npm install --save-dev electron@1.6.4?

Сергей
30.03.2017
09:48:37

Sheldhur
30.03.2017
09:49:00
npm install --save-dev electron@beta
latest 1.6.2
или бету не стоит трогать?

Google

Сергей
30.03.2017
10:01:05
Да ну
сделай в консоли npm info electron
и промотай до версий вверх
у меня последняя 1.6.4
[v
хм, действительно бета
слушай, так как ты только разрабатываешь, ставь бету
главное чтобы к выпуску твоей прилажки, версия перестала быть бета

Sheldhur
30.03.2017
10:15:27
чёт не робит :с
Uncaught Error: ENOENT, worker\api\exports\electron.js not found in C:\Users\Sheldhur\WebstormProjects\Vector\node_modules\electron\dist\resources\electron.asar

Сергей
30.03.2017
10:33:33
файл найти не может

Sheldhur
30.03.2017
10:43:43
https://github.com/electron/electron/tree/master/lib/worker
пусто
не завезли видимо ещё

Сергей
30.03.2017
10:48:12
странно =(

Sheldhur
30.03.2017
10:54:26
буду пилить синхронное выполнение INSERT'ов, и надеяться, что в api скоро завезут
или можно что-то ещё сделать?

Сергей
30.03.2017
10:56:07
заспаунить чайлд процесс

Sheldhur
30.03.2017
10:56:19
не делается

Сергей
30.03.2017
10:56:20
как в обычной ноде

Sheldhur
30.03.2017
10:56:33
эм...

Google

Sheldhur
30.03.2017
10:58:19
ну я в в мейн процессе пробовал
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)
кидало эксепшен на спанв
TypeError: Bad argument

Сергей
30.03.2017
11:02:31
так это
ему же строка нужна
путь к файлу
или имя команды которую запустить
почитал бы доку ноды
https://nodejs.org/api/child_process.html#child_process_child_process

Sheldhur
30.03.2017
11:05:23
о_О это из доки самого электрона

Сергей
30.03.2017
11:06:03
электрон на ноде основан

Sheldhur
30.03.2017
11:06:07
ну
лан, попробую ещё потом
через electron-workers

Сергей
30.03.2017
14:58:17