Skip to content

Instantly share code, notes, and snippets.

@nickva
Created November 13, 2022 04:00
Show Gist options
  • Select an option

  • Save nickva/9c3c73498433a100b862226529d59a25 to your computer and use it in GitHub Desktop.

Select an option

Save nickva/9c3c73498433a100b862226529d59a25 to your computer and use it in GitHub Desktop.
CouchDB doc update and delete script
#!/bin/bash
set -e
URL=http://adm:pass@localhost:15984
DB=${URL}/dbx
CFG=${URL}/_node/_local/_config
TMPFILE=/tmp/couch_largehex
DOCSIZE=100
http -q delete $DB
http -q put $DB q==1 n==1
echo -n '"warning"' | http -q put ${CFG}/smoosh/compaction_log_level X-Couch-Persist:false
echo -n '"warning"' | http -q put ${CFG}/couchdb/compaction_log_level X-Couch-Persist:false
openssl rand -hex ${DOCSIZE} > ${TMPFILE}
for DOC in {1..10}; do
echo
echo "**** DOC: ${DOC} ****"
REV=$(http put ${DB}/${DOC} data=@${TMPFILE} | jq -r '.rev')
for x in {1..5}; do
REV=$(http put ${DB}/${DOC} rev==${REV} data=@${TMPFILE} x=${x} | jq -r '.rev')
echo "After update ${x} REV:${REV}"
http $DB | jq '.sizes'
done
echo
echo "Before delete":
http $DB | jq '.sizes'
REV=$(http ${DB}/${DOC} | jq -r '._rev')
http -q delete ${DB}/${DOC} rev==${REV}
echo
echo "After delete":
http $DB | jq '.sizes'
done
echo "Waiting or smoosh to notice..."
sleep 30
echo
echo "Trigger compaction..."
http -q post ${DB}/_compact a=b
sleep 5
echo "After compaction"
http $DB | jq '.sizes'
rm ${TMPFILE}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment