blob: 9f1ef1f8611a2a82e749e7fe324d1a36457bd877 [file] [log] [blame]
apiVersion: batch/v1
kind: Job
metadata:
name: couchdb-compact-job
namespace: nuvolaris
labels:
app: couchdb-compact-job
spec:
ttlSecondsAfterFinished: ${JOB_TTL}
template:
metadata:
labels:
app: couchdb-compact-job
spec:
containers:
- name: couchdb-compactor
image: alpine:3.14
command: ["/bin/sh", "-c"]
args:
- |
apk add --no-cache curl jq;
DAY_MS=$$((1000 * 60 * 60 * 24))
CURRENT_TIME_MS=$$(($$(date +%s) * 1000))
ENDKEY=$$((CURRENT_TIME_MS - DAYS * DAY_MS))
# ported from https://github.com/francescotimperi/openwhisk/blob/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/tools/db/cleanUpActivations.py
delete_old_activations() {
while : ; do
RESPONSE=$$(curl -s -X GET -H "Content-Type: application/json" -u "$$COUCHDB_USER:$$COUCHDB_PASSWORD" "http://$$COUCHDB_HOST/$$DB_NAME/_design/activations/_view/byDate?startkey=0&endkey=$$ENDKEY&limit=$$DOCS_PER_REQUEST")
ROWS=$$(echo "$$RESPONSE" | jq -c '.rows[]?')
[ -z "$$ROWS" ] && break # no document found
DOCS_JSON=$$(echo "$RESPONSE" | jq -c '[.rows[] | { _id: .value[0], _rev: .value[1], _deleted: true }]')
curl -s -X POST -H "Content-Type: application/json" -u "$$COUCHDB_USER:$$COUCHDB_PASSWORD" "http://$$COUCHDB_HOST/$$DB_NAME/_bulk_docs" \
-H "Content-Type: application/json" \
-d "{\"docs\": $$DOCS_JSON}" > /dev/null
done
}
delete_old_activations
curl -s -X POST -H "Content-Type: application/json" -u "$$COUCHDB_USER:$$COUCHDB_PASSWORD" "http://$$COUCHDB_HOST/$$DB_NAME/_compact" -d '{}';
echo "CouchDB compat script finished.";
env:
- name: COUCHDB_HOST
value: "${COUCHDB_HOST:-couchdb}:${COUCHDB_PORT:-5984}"
- name: DB_NAME
value: "${DB_NAME}"
- name: COUCHDB_USER
valueFrom:
secretKeyRef:
name: ${COUCHDB_SECRET_NAME}
key: db_username
- name: COUCHDB_PASSWORD
valueFrom:
secretKeyRef:
name: ${COUCHDB_SECRET_NAME}
key: db_password
restartPolicy: OnFailure