tomayac / local-reverse-geocoder

Local reverse geocoder for Node.js based on GeoNames data

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

przemyslawpluta opened this issue · comments

Running on:

Node v6.10.0
NPM 3.10.10
OS 10.11.4

After successful installation, build and first test queries ...

Initializing local reverse geocoder using dump directory: /dev/node_modules/local-reverse-geocoder/geonames_dump
Getting GeoNames cities data from http://download.geonames.org/export/dump/cities1000.zip (this may take a while)
Getting GeoNames admin 1 codes data from http://download.geonames.org/export/dump/admin1CodesASCII.txt (this may take a while)
Getting GeoNames admin 2 codes data from http://download.geonames.org/export/dump/admin2Codes.txt (this may take a while)
Getting GeoNames all countries data from http://download.geonames.org/export/dump/allCountries.zip (this may take a while)
Getting GeoNames alternate names data from http://download.geonames.org/export/dump/alternateNames.zip (this may take a while)
Initializing local reverse geocoder using dump directory: /dev/node_modules/local-reverse-geocoder/geonames_dump
Getting GeoNames cities data from http://download.geonames.org/export/dump/cities1000.zip (this may take a while)
Getting GeoNames admin 1 codes data from http://download.geonames.org/export/dump/admin1CodesASCII.txt (this may take a while)
Getting GeoNames admin 2 codes data from http://download.geonames.org/export/dump/admin2Codes.txt (this may take a while)
Getting GeoNames all countries data from http://download.geonames.org/export/dump/allCountries.zip (this may take a while)
Getting GeoNames alternate names data from http://download.geonames.org/export/dump/alternateNames.zip (this may take a while)
Initializing local reverse geocoder using dump directory: /dev/node_modules/local-reverse-geocoder/geonames_dump
Getting GeoNames cities data from http://download.geonames.org/export/dump/cities1000.zip (this may take a while)
Getting GeoNames admin 1 codes data from http://download.geonames.org/export/dump/admin1CodesASCII.txt (this may take a while)
Getting GeoNames admin 2 codes data from http://download.geonames.org/export/dump/admin2Codes.txt (this may take a while)
Getting GeoNames all countries data from http://download.geonames.org/export/dump/allCountries.zip (this may take a while)
Getting GeoNames alternate names data from http://download.geonames.org/export/dump/alternateNames.zip (this may take a while)
Initializing local reverse geocoder using dump directory: /dev/node_modules/local-reverse-geocoder/geonames_dump
Getting GeoNames cities data from http://download.geonames.org/export/dump/cities1000.zip (this may take a while)
Getting GeoNames admin 1 codes data from http://download.geonames.org/export/dump/admin1CodesASCII.txt (this may take a while)
Getting GeoNames admin 2 codes data from http://download.geonames.org/export/dump/admin2Codes.txt (this may take a while)
Getting GeoNames all countries data from http://download.geonames.org/export/dump/allCountries.zip (this may take a while)
Getting GeoNames alternate names data from http://download.geonames.org/export/dump/alternateNames.zip (this may take a while)
Received zipped GeoNames cities data
Unzipped GeoNames cities data
Started parsing cities.txt (this  may take a while)
Finished parsing cities.txt
Started building cities k-d tree (this may take a while)
Finished building cities k-d tree
Received zipped GeoNames cities data
Unzipped GeoNames cities data
Started parsing cities.txt (this  may take a while)
Finished parsing cities.txt
Started building cities k-d tree (this may take a while)
Finished building cities k-d tree
Received zipped GeoNames cities data
Unzipped GeoNames cities data
Started parsing cities.txt (this  may take a while)
Finished parsing cities.txt
Started building cities k-d tree (this may take a while)
Finished building cities k-d tree
Received zipped GeoNames cities data
Unzipped GeoNames cities data
Started parsing cities.txt (this  may take a while)
Finished parsing cities.txt
Started building cities k-d tree (this may take a while)
Finished building cities k-d tree
Received zipped GeoNames alternate names data
Unzipped GeoNames alternate names data
Received zipped GeoNames alternate names data
Unzipped GeoNames alternate names data
Received zipped GeoNames alternate names data
Unzipped GeoNames alternate names data
Received zipped GeoNames alternate names data
Unzipped GeoNames alternate names data
Received zipped GeoNames all countries data
Unzipped GeoNames all countries data
Started parsing all countries.txt (this  may take a while)
Parsing progress all countries 0
Parsing progress all countries 100000
Parsing progress all countries 200000
Parsing progress all countries 300000
Parsing progress all countries 400000
Parsing progress all countries 500000
Parsing progress all countries 600000
Parsing progress all countries 700000
Parsing progress all countries 800000
Parsing progress all countries 900000
Parsing progress all countries 1000000
Parsing progress all countries 1100000
Parsing progress all countries 1200000
Parsing progress all countries 1300000
Parsing progress all countries 1400000
Parsing progress all countries 1500000
Parsing progress all countries 1600000
Parsing progress all countries 1700000
Parsing progress all countries 1800000
Parsing progress all countries 1900000
Parsing progress all countries 2000000
Parsing progress all countries 2100000
Parsing progress all countries 2200000
Parsing progress all countries 2300000
Parsing progress all countries 2400000
Parsing progress all countries 2500000
Parsing progress all countries 2600000
Parsing progress all countries 2700000
Parsing progress all countries 2800000
Parsing progress all countries 2900000
Parsing progress all countries 3000000
Parsing progress all countries 3100000
Parsing progress all countries 3200000
Parsing progress all countries 3300000
Parsing progress all countries 3400000
Parsing progress all countries 3500000
Parsing progress all countries 3600000
Parsing progress all countries 3700000
Parsing progress all countries 3800000
Parsing progress all countries 3900000
Parsing progress all countries 4000000
Parsing progress all countries 4100000
Parsing progress all countries 4200000
Parsing progress all countries 4300000
Parsing progress all countries 4400000
Parsing progress all countries 4500000
Parsing progress all countries 4600000
Parsing progress all countries 4700000
Parsing progress all countries 4800000
Parsing progress all countries 4900000
Parsing progress all countries 5000000
Parsing progress all countries 5100000
Parsing progress all countries 5200000
Parsing progress all countries 5300000
Parsing progress all countries 5400000
Parsing progress all countries 5500000
Parsing progress all countries 5600000
Parsing progress all countries 5700000
Parsing progress all countries 5800000
Parsing progress all countries 5900000
Parsing progress all countries 6000000
Parsing progress all countries 6100000
Parsing progress all countries 6200000
Parsing progress all countries 6300000
Parsing progress all countries 6400000
Parsing progress all countries 6500000
Parsing progress all countries 6600000
Parsing progress all countries 6700000
Parsing progress all countries 6800000
Parsing progress all countries 6900000
Parsing progress all countries 7000000
Parsing progress all countries 7100000
Parsing progress all countries 7200000
Parsing progress all countries 7300000
Parsing progress all countries 7400000
Parsing progress all countries 7500000
Parsing progress all countries 7600000
Parsing progress all countries 7700000
Parsing progress all countries 7800000
Parsing progress all countries 7900000
Parsing progress all countries 8000000
Parsing progress all countries 8100000
Parsing progress all countries 8200000
Parsing progress all countries 8300000
Parsing progress all countries 8400000
Parsing progress all countries 8500000
Parsing progress all countries 8600000
Parsing progress all countries 8700000
Parsing progress all countries 8800000
Parsing progress all countries 8900000
Parsing progress all countries 9000000
Parsing progress all countries 9100000
Parsing progress all countries 9200000
Parsing progress all countries 9300000
Parsing progress all countries 9400000
Parsing progress all countries 9500000
Parsing progress all countries 9600000
Parsing progress all countries 9700000
Parsing progress all countries 9800000
Parsing progress all countries 9900000
Parsing progress all countries 10000000
Parsing progress all countries 10100000
Parsing progress all countries 10200000
Parsing progress all countries 10300000
Parsing progress all countries 10400000
Parsing progress all countries 10500000
Parsing progress all countries 10600000
Parsing progress all countries 10700000
Parsing progress all countries 10800000
Parsing progress all countries 10900000
Parsing progress all countries 11000000
Parsing progress all countries 11100000
Parsing progress all countries 11200000
Parsing progress all countries 11300000
Finished parsing all countries.txt
Look-up request for point {"latitude":42.083333,"longitude":3.1}
Look-up request for point {"latitude":48.466667,"longitude":9.133333}
Found result(s) for point {"latitude":42.083333,"longitude":3.1}
  (1) {"geoNameId":"3118799","name":"la Tallada d'Empordà"},
  (2) {"geoNameId":"3130634","name":"Albons"},
  (3) {"geoNameId":"3106089","name":"Verges"},
  (4) {"geoNameId":"3107309","name":"Ullà"},
  (5) {"geoNameId":"3107700","name":"Torroella de Montgrí"}
Found result(s) for point {"latitude":48.466667,"longitude":9.133333}
  (1) {"geoNameId":"2814195","name":"Wannweil"},
  (2) {"geoNameId":"2919146","name":"Gomaringen"},
  (3) {"geoNameId":"2847736","name":"Reutlingen"},
  (4) {"geoNameId":"2934235","name":"Dußlingen"},
  (5) {"geoNameId":"2866632","name":"Nehren"}

On secondary run getting FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory error

Initializing local reverse geocoder using dump directory: /dev/node_modules/local-reverse-geocoder/geonames_dump
Using cached GeoNames cities data from /dev/node_modules/local-reverse-geocoder/geonames_dump/cities/cities1000_2017-03-16.txt
Started parsing cities.txt (this  may take a while)
Using cached GeoNames admin 1 codes data from /dev/node_modules/local-reverse-geocoder/geonames_dump/admin1_codes/admin1CodesASCII_2017-03-16.txt
Using cached GeoNames admin 2 codes data from /dev/node_modules/local-reverse-geocoder/geonames_dump/admin2_codes/admin2Codes_2017-03-16.txt
Using cached GeoNames all countries data from /dev/node_modules/local-reverse-geocoder/geonames_dump/all_countries/allCountries_2017-03-16.txt
Started parsing all countries.txt (this  may take a while)
Using cached GeoNames alternate names data from /dev/node_modules/local-reverse-geocoder/geonames_dump/alternate_names/alternateNames_2017-03-16.txt
Initializing local reverse geocoder using dump directory: /dev/node_modules/local-reverse-geocoder/geonames_dump
Using cached GeoNames cities data from /dev/node_modules/local-reverse-geocoder/geonames_dump/cities/cities1000_2017-03-16.txt
Started parsing cities.txt (this  may take a while)
Using cached GeoNames admin 1 codes data from /dev/node_modules/local-reverse-geocoder/geonames_dump/admin1_codes/admin1CodesASCII_2017-03-16.txt
Using cached GeoNames admin 2 codes data from /dev/node_modules/local-reverse-geocoder/geonames_dump/admin2_codes/admin2Codes_2017-03-16.txt
Using cached GeoNames all countries data from /dev/node_modules/local-reverse-geocoder/geonames_dump/all_countries/allCountries_2017-03-16.txt
Started parsing all countries.txt (this  may take a while)
Using cached GeoNames alternate names data from /dev/node_modules/local-reverse-geocoder/geonames_dump/alternate_names/alternateNames_2017-03-16.txt
Initializing local reverse geocoder using dump directory: /dev/node_modules/local-reverse-geocoder/geonames_dump
Using cached GeoNames cities data from /dev/node_modules/local-reverse-geocoder/geonames_dump/cities/cities1000_2017-03-16.txt
Started parsing cities.txt (this  may take a while)
Using cached GeoNames admin 1 codes data from /dev/node_modules/local-reverse-geocoder/geonames_dump/admin1_codes/admin1CodesASCII_2017-03-16.txt
Using cached GeoNames admin 2 codes data from /dev/node_modules/local-reverse-geocoder/geonames_dump/admin2_codes/admin2Codes_2017-03-16.txt
Using cached GeoNames all countries data from /dev/node_modules/local-reverse-geocoder/geonames_dump/all_countries/allCountries_2017-03-16.txt
Started parsing all countries.txt (this  may take a while)
Using cached GeoNames alternate names data from /dev/node_modules/local-reverse-geocoder/geonames_dump/alternate_names/alternateNames_2017-03-16.txt
Initializing local reverse geocoder using dump directory: /dev/node_modules/local-reverse-geocoder/geonames_dump
Using cached GeoNames cities data from /dev/node_modules/local-reverse-geocoder/geonames_dump/cities/cities1000_2017-03-16.txt
Started parsing cities.txt (this  may take a while)
Using cached GeoNames admin 1 codes data from /dev/node_modules/local-reverse-geocoder/geonames_dump/admin1_codes/admin1CodesASCII_2017-03-16.txt
Using cached GeoNames admin 2 codes data from /dev/node_modules/local-reverse-geocoder/geonames_dump/admin2_codes/admin2Codes_2017-03-16.txt
Using cached GeoNames all countries data from /dev/node_modules/local-reverse-geocoder/geonames_dump/all_countries/allCountries_2017-03-16.txt
Started parsing all countries.txt (this  may take a while)
Using cached GeoNames alternate names data from /dev/node_modules/local-reverse-geocoder/geonames_dump/alternate_names/alternateNames_2017-03-16.txt

<--- Last few GCs --->

  179115 ms: Mark-sweep 1390.5 (1434.1) -> 1390.5 (1434.1) MB, 1797.8 / 0.0 ms [allocation failure] [GC in old space requested].
  180913 ms: Mark-sweep 1390.5 (1434.1) -> 1390.5 (1434.1) MB, 1798.0 / 0.0 ms [allocation failure] [GC in old space requested].
  182701 ms: Mark-sweep 1390.5 (1434.1) -> 1390.5 (1418.1) MB, 1787.7 / 0.0 ms [last resort gc].
  184490 ms: Mark-sweep 1390.5 (1418.1) -> 1390.5 (1418.1) MB, 1788.8 / 0.0 ms [last resort gc].


<--- JS stacktrace --->

==== JS stack trace =========================================

    2: arguments adaptor frame: 3->1
Security context: 0x2b726ffcfb51 <JS Object>
    3: InnerArrayFilter(aka InnerArrayFilter) [native array.js:~913] [pc=0x2c7d2296ce33] (this=0x2b726ff04381 <undefined>,bq=0x24a5f7cf9331 <JS Function (SharedFunctionInfo 0xbde2e89ba61)>,br=0x2b726ff04381 <undefined>,w=0x28dc4fd43c11 <JS Array[1]>,x=1,B=0x24a5f7cf9379 <JS Array[0]>)
    4: filter [native array.js:~927] [pc=0x2c7d22970f5a] (this=0x28dc4fd43...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node::Abort() [/usr/local/bin/node]
 2: node::FatalException(v8::Isolate*, v8::Local<v8::Value>, v8::Local<v8::Message>) [/usr/local/bin/node]
 3: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/local/bin/node]
 4: v8::internal::Factory::NewFixedArray(int, v8::internal::PretenureFlag) [/usr/local/bin/node]
 5: v8::internal::Handle<v8::internal::TypeFeedbackMetadata> v8::internal::TypeFeedbackMetadata::New<v8::internal::FeedbackVectorSpec>(v8::internal::Isolate*, v8::internal::FeedbackVectorSpec const*) [/usr/local/bin/node]
 6: v8::internal::(anonymous namespace)::EnsureFeedbackVector(v8::internal::CompilationInfo*) [/usr/local/bin/node]
 7: v8::internal::(anonymous namespace)::GenerateBaselineCode(v8::internal::CompilationInfo*) [/usr/local/bin/node]
 8: v8::internal::(anonymous namespace)::GetUnoptimizedCodeCommon(v8::internal::CompilationInfo*) [/usr/local/bin/node]
 9: v8::internal::Compiler::Compile(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Compiler::ClearExceptionFlag) [/usr/local/bin/node]
10: v8::internal::Runtime_CompileLazy(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
11: 0x2c7d226092a7
12: 0x2c7d22634338
13: 0x2c7d22609895
Abort trap: 6

Running with --max-old-space-size=2000 seems to solve the issue. Might be a good idea to indicate this somewhere in documentation ... maybe configuration with the external db would be more beneficial for the setup.