mirror of
https://github.com/openstreetmap/mod_tile.git
synced 2025-08-03 07:49:53 +00:00
Handle mod_tile
not having a valid storage context (causing a segmentation fault) (#398)
This only seems to happen after a delay pool is created (i.e. when `ModTileEnableTileThrottling` is enabled) and is then being manipulated.
This commit is contained in:
8
.github/actions/cmake/test/action.yml
vendored
8
.github/actions/cmake/test/action.yml
vendored
@ -13,9 +13,15 @@ runs:
|
|||||||
shell: bash --noprofile --norc -euxo pipefail {0}
|
shell: bash --noprofile --norc -euxo pipefail {0}
|
||||||
working-directory: build
|
working-directory: build
|
||||||
|
|
||||||
|
- name: Set `TEST_ARTIFACT_NAME`
|
||||||
|
run: |
|
||||||
|
echo "TEST_ARTIFACT_NAME=$(echo ${{ matrix.image || matrix.os || github.job }}-${{ matrix.compiler }} | sed 's/[^0-9a-zA-Z-]/_/g')" >> "$GITHUB_ENV"
|
||||||
|
shell: bash --noprofile --norc -euxo pipefail {0}
|
||||||
|
if: failure()
|
||||||
|
|
||||||
- name: Upload test artifacts on failure
|
- name: Upload test artifacts on failure
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Test Artifacts - ${{ matrix.image || matrix.os || github.job }}-${{ matrix.compiler }}
|
name: Test Artifacts - ${{ env.TEST_ARTIFACT_NAME }}
|
||||||
path: build/tests
|
path: build/tests
|
||||||
if: failure()
|
if: failure()
|
||||||
|
@ -1681,12 +1681,11 @@ static int tile_translate(request_rec *r)
|
|||||||
rdata->layerNumber = i;
|
rdata->layerNumber = i;
|
||||||
rdata->store = get_storage_backend(r, i);
|
rdata->store = get_storage_backend(r, i);
|
||||||
|
|
||||||
if (rdata->store == NULL) {
|
if (rdata->store == NULL || rdata->store->storage_ctx == NULL) {
|
||||||
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "tile_translate: failed to get valid storage backend");
|
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "tile_translate: failed to get valid storage backend/storage backend context");
|
||||||
|
|
||||||
if (!incRespCounter(HTTP_INTERNAL_SERVER_ERROR, r, cmd, rdata->layerNumber)) {
|
if (!incRespCounter(HTTP_INTERNAL_SERVER_ERROR, r, cmd, rdata->layerNumber)) {
|
||||||
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r,
|
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, "Failed to increase response stats counter");
|
||||||
"Failed to increase response stats counter");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return HTTP_INTERNAL_SERVER_ERROR;
|
return HTTP_INTERNAL_SERVER_ERROR;
|
||||||
|
@ -320,7 +320,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
set_tests_properties(render_expired_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
set_tests_properties(render_expired_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
||||||
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
||||||
TIMEOUT 60
|
TIMEOUT 90
|
||||||
)
|
)
|
||||||
add_test(NAME render_expired_delete_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
add_test(NAME render_expired_delete_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
COMMAND ${BASH} -c "
|
COMMAND ${BASH} -c "
|
||||||
@ -340,7 +340,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
set_tests_properties(render_expired_delete_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
set_tests_properties(render_expired_delete_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
||||||
DEPENDS render_expired_touch_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
DEPENDS render_expired_touch_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
||||||
TIMEOUT 60
|
TIMEOUT 90
|
||||||
)
|
)
|
||||||
add_test(NAME render_expired_touch_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
add_test(NAME render_expired_touch_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
COMMAND ${BASH} -c "
|
COMMAND ${BASH} -c "
|
||||||
@ -360,7 +360,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
set_tests_properties(render_expired_touch_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
set_tests_properties(render_expired_touch_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
||||||
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
||||||
TIMEOUT 60
|
TIMEOUT 90
|
||||||
)
|
)
|
||||||
add_test(NAME render_list_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
add_test(NAME render_list_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
COMMAND ${BASH} -c "
|
COMMAND ${BASH} -c "
|
||||||
@ -380,7 +380,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
set_tests_properties(render_list_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
set_tests_properties(render_list_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
||||||
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
||||||
TIMEOUT 60
|
TIMEOUT 90
|
||||||
)
|
)
|
||||||
add_test(NAME render_list_stdin_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
add_test(NAME render_list_stdin_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
COMMAND ${BASH} -c "
|
COMMAND ${BASH} -c "
|
||||||
@ -399,7 +399,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
set_tests_properties(render_list_stdin_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
set_tests_properties(render_list_stdin_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
||||||
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
||||||
TIMEOUT 60
|
TIMEOUT 90
|
||||||
)
|
)
|
||||||
add_test(NAME render_old_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
add_test(NAME render_old_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
COMMAND ${BASH} -c "
|
COMMAND ${BASH} -c "
|
||||||
@ -419,7 +419,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
set_tests_properties(render_old_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
set_tests_properties(render_old_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
||||||
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
DEPENDS render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
|
||||||
TIMEOUT 60
|
TIMEOUT 90
|
||||||
)
|
)
|
||||||
add_test(NAME render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
add_test(NAME render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
COMMAND ${BASH} -c "
|
COMMAND ${BASH} -c "
|
||||||
@ -434,7 +434,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
)
|
)
|
||||||
set_tests_properties(render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
set_tests_properties(render_speedtest_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
|
||||||
FIXTURES_REQUIRED "services_started_${STORAGE_BACKEND};tiles_downloaded_${STORAGE_BACKEND}"
|
FIXTURES_REQUIRED "services_started_${STORAGE_BACKEND};tiles_downloaded_${STORAGE_BACKEND}"
|
||||||
TIMEOUT 60
|
TIMEOUT 90
|
||||||
)
|
)
|
||||||
add_test(NAME add_tile_config_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
add_test(NAME add_tile_config_${SOCKET_TYPE}_${STORAGE_BACKEND}
|
||||||
COMMAND ${BASH} -c "
|
COMMAND ${BASH} -c "
|
||||||
@ -561,10 +561,13 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
echo \"Tile Last Rendered At (Old): \${TILE_LAST_RENDERED_AT_OLD}\"
|
echo \"Tile Last Rendered At (Old): \${TILE_LAST_RENDERED_AT_OLD}\"
|
||||||
${SLEEP_EXECUTABLE} 1
|
${SLEEP_EXECUTABLE} 1
|
||||||
TILE_DIRTY_ON_OUTPUT=$(\${TILE_DIRTY_ON_CMD})
|
TILE_DIRTY_ON_OUTPUT=$(\${TILE_DIRTY_ON_CMD})
|
||||||
echo \"Dirty: \${TILE_DIRTY_ON_OUTPUT}\"
|
echo \"Dirty On Output: \${TILE_DIRTY_ON_OUTPUT}\"
|
||||||
if [ \"\${TILE_DIRTY_ON_OUTPUT}\" != \"Tile submitted for rendering\" ]; then
|
until [ \"\${TILE_DIRTY_ON_OUTPUT}\" == \"Tile submitted for rendering\" ]; do
|
||||||
exit 1;
|
echo 'Sleeping 1s';
|
||||||
fi
|
${SLEEP_EXECUTABLE} 1;
|
||||||
|
TILE_DIRTY_ON_OUTPUT=$(\${TILE_DIRTY_ON_CMD})
|
||||||
|
echo \"Dirty On Output: \${TILE_DIRTY_ON_OUTPUT}\"
|
||||||
|
done
|
||||||
TILE_LAST_RENDERED_AT_NEW=$(\${TILE_STATUS_ON_CMD} | ${GREP_EXECUTABLE} -o 'Last rendered at [^\\.]*.')
|
TILE_LAST_RENDERED_AT_NEW=$(\${TILE_STATUS_ON_CMD} | ${GREP_EXECUTABLE} -o 'Last rendered at [^\\.]*.')
|
||||||
echo \"Tile Last Rendered At (New): \${TILE_LAST_RENDERED_AT_NEW}\"
|
echo \"Tile Last Rendered At (New): \${TILE_LAST_RENDERED_AT_NEW}\"
|
||||||
until [ \"\${TILE_LAST_RENDERED_AT_OLD}\" != \"\${TILE_LAST_RENDERED_AT_NEW}\" ]; do
|
until [ \"\${TILE_LAST_RENDERED_AT_OLD}\" != \"\${TILE_LAST_RENDERED_AT_NEW}\" ]; do
|
||||||
@ -575,14 +578,20 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
|
|||||||
done
|
done
|
||||||
TILE_DIRTY_OFF_CODE=$(${CURL_CMD} --write-out '%{http_code}' ${DIRTY_OFF_URL})
|
TILE_DIRTY_OFF_CODE=$(${CURL_CMD} --write-out '%{http_code}' ${DIRTY_OFF_URL})
|
||||||
echo \"Dirty Off code: '\${TILE_DIRTY_OFF_CODE}'\"
|
echo \"Dirty Off code: '\${TILE_DIRTY_OFF_CODE}'\"
|
||||||
if [ \"\${TILE_DIRTY_OFF_CODE}\" != \"404\" ]; then
|
until [ \"\${TILE_DIRTY_OFF_CODE}\" == \"404\" ]; do
|
||||||
exit 1;
|
echo 'Sleeping 1s';
|
||||||
fi
|
${SLEEP_EXECUTABLE} 1;
|
||||||
|
TILE_DIRTY_OFF_CODE=$(${CURL_CMD} --write-out '%{http_code}' ${DIRTY_OFF_URL})
|
||||||
|
echo \"Dirty Off code: '\${TILE_DIRTY_OFF_CODE}'\"
|
||||||
|
done
|
||||||
TILE_STATUS_OFF_CODE=$(${CURL_CMD} --write-out '%{http_code}' ${STATUS_OFF_URL})
|
TILE_STATUS_OFF_CODE=$(${CURL_CMD} --write-out '%{http_code}' ${STATUS_OFF_URL})
|
||||||
echo \"Status Off code: '\${TILE_STATUS_OFF_CODE}'\"
|
echo \"Status Off code: '\${TILE_STATUS_OFF_CODE}'\"
|
||||||
if [ \"\${TILE_STATUS_OFF_CODE}\" != \"404\" ]; then
|
until [ \"\${TILE_STATUS_OFF_CODE}\" == \"404\" ]; do
|
||||||
exit 1;
|
echo 'Sleeping 1s';
|
||||||
fi
|
${SLEEP_EXECUTABLE} 1;
|
||||||
|
TILE_STATUS_OFF_CODE=$(${CURL_CMD} --write-out '%{http_code}' ${STATUS_OFF_URL})
|
||||||
|
echo \"Status Off code: '\${TILE_STATUS_OFF_CODE}'\"
|
||||||
|
done
|
||||||
"
|
"
|
||||||
WORKING_DIRECTORY tests
|
WORKING_DIRECTORY tests
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user