Cuatro endurecimientos salidos del banco de carga (bench/union-bench.js), cada uno con su número: 1. Unión en ÁRBOL en vez de en cadena. La cadena unía siempre contra un polígono acumulado que no paraba de crecer. Con 1.000 suscripciones repartidas por el mundo —el peor caso, círculos que no se solapan— eran 238 s; en árbol son 3,6 s, con un documento idéntico. Con datos realistas (España) 10.000 suscripciones bajan de 39,3 s a 23,5 s. test/server/calcUnionAsync.test.js comprueba la equivalencia contra una referencia calculada en cadena. 2. 64 vértices por círculo en vez de 144, configurable con `private.unionCircleSteps`. Con 10.000 suscripciones: 23,5 s → 10,0 s y el pico de RSS de 777 MB → 421 MB. En pantalla un círculo de 64 lados sigue siendo un círculo, y la capa de zonas es un adorno difuso; el host de despliegue tiene 5,9 GB para todo el stack. 3. Timeout del worker (10 min por defecto, `private.unionWorkerTimeoutMs`). Un worker que no contestaba dejaba la promesa colgada y con ella la cola entera: `busy` se quedaba en true y no se volvía a calcular ninguna unión hasta reiniciar, sin que nada fallase. Se reintenta una vez ante un error real, nunca ante un timeout. 4. Cota de heap del worker (1 GB, `private.unionWorkerMaxHeapMb`), para que un caso patológico muera con ERR_WORKER_OUT_OF_MEMORY —que esta capa convierte en un rechazo, dejando la unión anterior intacta— en vez de que el kernel se lleve por delante el proceso de Meteor. Además unionTelemetry.js manda a GlitchTip las uniones que pasan de un minuto y las que hay que degradar por tamaño, y registra duración/tamaño de cada una. El único aviso de que la unión iba mal era, hasta ahora, que el mapa se quedaba viejo. Smoke REST byte-idéntico. 90 tests en verde. |
||
|---|---|---|
| .forgejo/workflows | ||
| .meteor | ||
| bench | ||
| bin | ||
| client | ||
| cucumber | ||
| designs | ||
| docker | ||
| e2e | ||
| imports | ||
| packages | ||
| private | ||
| public | ||
| scripts | ||
| secrets | ||
| server | ||
| smoke | ||
| test/server | ||
| .dockerignore | ||
| .gitignore | ||
| .meteorignore | ||
| .npmrc | ||
| API.md | ||
| COPYRIGHT.md | ||
| docker-compose.e2e.yml | ||
| docker-compose.staging.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| fonts.json | ||
| History.md | ||
| LICENSE.md | ||
| package-lock.json | ||
| package.json | ||
| PENDIENTE.md | ||
| README.md | ||
| RUNBOOK.md | ||
| settings-ci.json | ||
| settings-development-sample.json | ||
| UPGRADE.md | ||
Tod@s contra el Fuego (All Against Fire)
This is web service that notifies about fires detected in an area of your interest. It helps the early detection of fires and facilitates local mobilization, while the professional extinction services arrive.
Install
Prerrequisites: a running meteor (we share the fuegos database with the telegram bot).
Install meteor and run meteor npm install and npm start
Some other development deps (in debian & ubuntu):
apt-get install libcairo2-dev libjpeg-dev libgif-dev pkg-config
GeoIP
Configure mirror and cron of the geoip database.
Telegram bot
See our bot.
More platforms and services in the future...
Tests
We do tests via:
TEST_PORT=3000 TEST_WATCH=1 TEST_CLIENT=0 MONGO_URL=mongodb://localhost:27017/fuegostest meteor --settings settings-development.json test --driver-package meteortesting:mocha --port 3010
# and
node_modules/.bin/chimp --watch --ddp=http://localhost:3000 --path=cucumber
# and
node_modules/.bin/chimp --ddp=http://localhost:3000 --path=cucumber
FAQ & Troubleshooting
Q - I get something like (...) /node_modules/fibers/future.js:280 (...) Error: Could not locate the bindings file. What can I do?
A - Try meteor npm rebuild
Data source acknowledgements
We acknowledge the use of data and imagery from LANCE FIRMS operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.
License
GNU APLv3. See our LICENSE, for a complete text.
Thanks & other acknowlegments
Thanks indeed to:
- Lupe Bao Reixa for Galician translation