forked from hans/Nominatim
made age a required argument for the -clean-deleted command
This commit is contained in:
@@ -60,14 +60,13 @@ to finish the recomputation.
|
|||||||
|
|
||||||
## Removing large deleted objects
|
## Removing large deleted objects
|
||||||
|
|
||||||
Command: `nominatim admin --clean-deleted --age <PostgreSQL Time Interval>`
|
Command: `nominatim admin --clean-deleted <PostgreSQL Time Interval>`
|
||||||
|
|
||||||
Nominatim refuses to delete very large areas because often these deletions are
|
Nominatim refuses to delete very large areas because often these deletions are
|
||||||
accidental and are reverted within hours. Instead the deletions are logged in
|
accidental and are reverted within hours. Instead the deletions are logged in
|
||||||
the `import_polygon_delete` table and left to the administrator to clean up.
|
the `import_polygon_delete` table and left to the administrator to clean up.
|
||||||
|
|
||||||
To run this command you will need to pass a PostgreSQL time interval to the age
|
To run this command you will need to pass a PostgreSQL time interval. For example to
|
||||||
parameter. For example to delete any objects that have been deleted more than a
|
delete any objects that have been deleted more than a month ago you would run:
|
||||||
month ago you would run:
|
`nominatim admin --clean-deleted '1 month'`
|
||||||
`nominatim admin --clean-deleted --age '1 month'`
|
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class AdminFuncs:
|
|||||||
help='Print performance analysis of the indexing process')
|
help='Print performance analysis of the indexing process')
|
||||||
objs.add_argument('--collect-os-info', action="store_true",
|
objs.add_argument('--collect-os-info', action="store_true",
|
||||||
help="Generate a report about the host system information")
|
help="Generate a report about the host system information")
|
||||||
objs.add_argument('--clean-deleted', action='store_true',
|
objs.add_argument('--clean-deleted', action='store', metavar='AGE',
|
||||||
help='Clean up deleted relations')
|
help='Clean up deleted relations')
|
||||||
group = parser.add_argument_group('Arguments for cache warming')
|
group = parser.add_argument_group('Arguments for cache warming')
|
||||||
group.add_argument('--search-only', action='store_const', dest='target',
|
group.add_argument('--search-only', action='store_const', dest='target',
|
||||||
@@ -58,8 +58,6 @@ class AdminFuncs:
|
|||||||
mgroup.add_argument('--place-id', type=int,
|
mgroup.add_argument('--place-id', type=int,
|
||||||
help='Analyse indexing of the given Nominatim object')
|
help='Analyse indexing of the given Nominatim object')
|
||||||
group = parser.add_argument_group('Arguments for cleaning deleted')
|
group = parser.add_argument_group('Arguments for cleaning deleted')
|
||||||
group.add_argument('--age', type=str,
|
|
||||||
help='Delete relations older than the given PostgreSQL time interval')
|
|
||||||
|
|
||||||
|
|
||||||
def run(self, args: NominatimArgs) -> int:
|
def run(self, args: NominatimArgs) -> int:
|
||||||
@@ -90,11 +88,9 @@ class AdminFuncs:
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if args.clean_deleted:
|
if args.clean_deleted:
|
||||||
if not args.age:
|
|
||||||
self.parser.error('Age is required for --clean-deleted command')
|
|
||||||
LOG.warning('Cleaning up deleted relations')
|
LOG.warning('Cleaning up deleted relations')
|
||||||
from ..tools import admin
|
from ..tools import admin
|
||||||
admin.clean_deleted_relations(args.config, age=args.age)
|
admin.clean_deleted_relations(args.config, age=args.clean_deleted)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -72,12 +72,11 @@ class NominatimArgs:
|
|||||||
check_database: bool
|
check_database: bool
|
||||||
migrate: bool
|
migrate: bool
|
||||||
collect_os_info: bool
|
collect_os_info: bool
|
||||||
clean_deleted: bool
|
clean_deleted: str
|
||||||
analyse_indexing: bool
|
analyse_indexing: bool
|
||||||
target: Optional[str]
|
target: Optional[str]
|
||||||
osm_id: Optional[str]
|
osm_id: Optional[str]
|
||||||
place_id: Optional[int]
|
place_id: Optional[int]
|
||||||
age: str
|
|
||||||
|
|
||||||
# Arguments to 'import'
|
# Arguments to 'import'
|
||||||
osm_file: List[str]
|
osm_file: List[str]
|
||||||
|
|||||||
@@ -36,14 +36,13 @@ def test_admin_migrate(cli_call, mock_func_factory):
|
|||||||
def test_admin_clean_deleted_relations(cli_call, mock_func_factory):
|
def test_admin_clean_deleted_relations(cli_call, mock_func_factory):
|
||||||
mock = mock_func_factory(nominatim.tools.admin, 'clean_deleted_relations')
|
mock = mock_func_factory(nominatim.tools.admin, 'clean_deleted_relations')
|
||||||
|
|
||||||
assert cli_call('admin', '--clean-deleted', '--age', '1 month') == 0
|
assert cli_call('admin', '--clean-deleted', '1 month') == 0
|
||||||
assert mock.called == 1
|
assert mock.called == 1
|
||||||
|
|
||||||
def test_admin_clean_deleted_relations_no_age(cli_call, mock_func_factory):
|
def test_admin_clean_deleted_relations_no_age(cli_call, mock_func_factory):
|
||||||
mock = mock_func_factory(nominatim.tools.admin, 'clean_deleted_relations')
|
mock = mock_func_factory(nominatim.tools.admin, 'clean_deleted_relations')
|
||||||
|
|
||||||
with pytest.raises(SystemExit):
|
assert cli_call('admin', '--clean-deleted') == 1
|
||||||
cli_call('admin', '--clean-deleted')
|
|
||||||
|
|
||||||
class TestCliAdminWithDb:
|
class TestCliAdminWithDb:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user