X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/cc564e2f319bb267884998c7243d179320aa0327..1716e4b387e4a6aa210442963ba36013f61d1067:/nominatim/index.c?ds=sidebyside diff --git a/nominatim/index.c b/nominatim/index.c index 128ba994..13f29273 100644 --- a/nominatim/index.c +++ b/nominatim/index.c @@ -145,7 +145,7 @@ void nominatim_index(int rank_min, int rank_max, int num_threads, const char *co writer = nominatim_exportXMLStart(structuredoutputfile); } - fprintf(stderr, "Starting indexing rank (%i to %i) using %i treads\n", rank_min, rank_max, num_threads); + fprintf(stderr, "Starting indexing rank (%i to %i) using %i threads\n", rank_min, rank_max, num_threads); for (rank = rank_min; rank <= rank_max; rank++) { @@ -270,7 +270,7 @@ void nominatim_index(int rank_min, int rank_max, int num_threads, const char *co usleep(1000); // Aim for one update per second - if (sleepcount++ > 2000) + if (sleepcount++ > 500) { rankPerSecond = ((float)rankCountTuples + (float)count) / MAX(difftime(time(0), rankStartTime),1); fprintf(stderr, " Done %i in %i @ %f per second - Rank %i ETA (seconds): %f\n", (rankCountTuples + count), (int)(difftime(time(0), rankStartTime)), rankPerSecond, rank, ((float)(rankTotalTuples - (rankCountTuples + count)))/rankPerSecond); @@ -308,6 +308,13 @@ void nominatim_index(int rank_min, int rank_max, int num_threads, const char *co { nominatim_exportXMLEnd(writer); } + + // Close all connections + for (i = 0; i < num_threads; i++) + { + PQfinish(thread_data[i].conn); + } + PQfinish(conn); } void *nominatim_indexThread(void * thread_data_in) @@ -359,7 +366,7 @@ void *nominatim_indexThread(void * thread_data_in) done = 1; else { - if (strncmp(PQerrorMessage(thread_data->conn), "ERROR: deadlock detected", 25)) + if (!strncmp(PQerrorMessage(thread_data->conn), "ERROR: deadlock detected", 25)) { fprintf(stderr, "index_placex: UPDATE failed - deadlock, retrying (%ld)\n", place_id); PQclear(res); @@ -369,8 +376,7 @@ void *nominatim_indexThread(void * thread_data_in) { fprintf(stderr, "index_placex: UPDATE failed: %s", PQerrorMessage(thread_data->conn)); PQclear(res); - sleep(rand() % 10); -// exit(EXIT_FAILURE); + exit(EXIT_FAILURE); } } }