Skip to content

Commit a0ddeb8

Browse files
committed
[fix] Fixed "migrate_timeseries" command
Bug: The delete query for migrating "traffic" data included WHERE clause which is not supported in InfluxDB. Fix: Migrate the "traffic" data at the end. Delete metrics only after migrating "traffic" data.
1 parent 0ded0fa commit a0ddeb8

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

openwisp_monitoring/monitoring/migrations/influxdb/influxdb_alter_structure_0006.py

+8-16
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def migrate_influxdb_data(
8989
configuration,
9090
new_measurement,
9191
read_query=READ_QUERY,
92-
delete_query=DELETE_QUERY,
92+
delete_query=None,
9393
):
9494
Metric = load_model('monitoring', 'Metric')
9595
metric_qs = Metric.objects.filter(configuration=configuration, key=new_measurement)
@@ -151,39 +151,28 @@ def migrate_influxdb_data(
151151

152152
def migrate_wifi_clients():
153153
read_query = f"{READ_QUERY} AND clients != ''"
154-
# Lookup using fields not supported in WHERE clause during deletion.
155-
# Hence, we cannot perform delete operation only for rows that
156-
# contains clients.
157-
delete_query = None
158154
migrate_influxdb_data(
159155
new_measurement='wifi_clients',
160156
configuration='clients',
161157
read_query=read_query,
162-
delete_query=delete_query,
163158
)
164159
logger.info('"wifi_clients" measurements successfully migrated.')
165160

166161

167162
def migrate_traffic_data():
168163
migrate_influxdb_data(
169-
new_measurement='traffic',
170-
configuration='traffic',
171-
delete_query=f"{DELETE_QUERY} AND access_tech != ''",
164+
new_measurement='traffic', configuration='traffic', delete_query=DELETE_QUERY
172165
)
173166
logger.info('"traffic" measurements successfully migrated.')
174167

175168

176169
def migrate_signal_strength_data():
177-
migrate_influxdb_data(
178-
new_measurement='signal', configuration='signal_strength', delete_query=None
179-
)
170+
migrate_influxdb_data(new_measurement='signal', configuration='signal_strength')
180171
logger.info('"signal_strength" measurements successfully migrated.')
181172

182173

183174
def migrate_signal_quality_data():
184-
migrate_influxdb_data(
185-
new_measurement='signal', configuration='signal_quality', delete_query=None
186-
)
175+
migrate_influxdb_data(new_measurement='signal', configuration='signal_quality')
187176
logger.info('"signal_quality" measurements successfully migrated.')
188177

189178

@@ -215,11 +204,14 @@ def migrate_influxdb_structure():
215204
'Timeseries data migration is already migrated. Skipping migration!'
216205
)
217206
return
207+
# IMPORTANT: Do not change order of below functions.
208+
# Lookup using fields not supported in WHERE clause during deletion.
209+
# Migrate traffic data at the end because it is deletes the metrics.
218210
migrate_wifi_clients()
219-
migrate_traffic_data()
220211
migrate_signal_strength_data()
221212
migrate_signal_quality_data()
222213
migrate_access_tech_data()
214+
migrate_traffic_data()
223215
logger.info('Timeseries data migration completed.')
224216

225217

0 commit comments

Comments
 (0)