Skip to content

Instantly share code, notes, and snippets.

@vkuznet
Last active September 21, 2022 16:55
Show Gist options
  • Save vkuznet/e7f31ceee893df10e29e2c21eb92bd44 to your computer and use it in GitHub Desktop.
Save vkuznet/e7f31ceee893df10e29e2c21eb92bd44 to your computer and use it in GitHub Desktop.
CouchDB replication via APS/XPS

Test couchdb replication on test10/test5

I deployed couchdb to test10/test5 clusters and decided to test replication process.

Replication via token based authentication (APS, default port 443)

Below you can find all technical details. I followed these steps:

  • Inject docs into test10/test5 using the following syntax
# scurl here is curl -L -k --key ~/.globus/userkey.pem --cert ~/.globus/usercert.pem "$@"
scurl -X POST -H "Content-type: application/json" -d '{"foo":1}' https://cmsweb-test10.cern.ch:8443/couchdb/wmstats

This will insert {"foo":1} document into test10 couchdb via x509 authentication on port 8443 (XPS). But I can't insert doc via aps since getting this error:

curl -X POST -H "Authorization: Bearer $t" -H "Content-Type: application/json" -d '{"doc3":3}' https://cmsweb-test10.cern.ch/couchdb/wmstats/wmstats
{"error":"bad_request","reason":"Referer header required."}

To fix this problem I manually supplied Referer header like this:

curl -X POST -H "Authorization: Bearer $t" -H "Content-Type: application/json" https://cmsweb-test10.cern.ch/couchdb/wmstats -H "Referer: https://cmsweb-test10.cern.ch" -d '{"doc3":3}'
{"ok":true,"id":"04a5ccd0ab4d51b4e040874a44001a25","rev":"1-64b63ca6d70831b10c7c5d4302909e92"}

But I think I think we need to configure APS to pass this specific header.

To proceed we'll insert docs via x509 authentication while perform replication via token based authentication.

/bin/cat replication.json
{ "_id": "replication_job",
    "source": {
       "url": "https://cmsweb-test10.cern.ch/couchdb/wmstats",
       "headers": { "Authorization": "Bearer ..."}
    },
    "target": {
       "url": "https://cmsweb-test5.cern.ch/couchdb/wmstats",
       "headers": { "Authorization": "Bearer ..."}
    },
    "create_target": false,
    "continuous": false
}

This replication document says that we'll perform replication from test10 to test5 couchdb using wmstats database.

  • Next step, we can create replication request in CouchDB using our replication.json document.
curl -X POST -H "Authorization: Bearer $t" -H "Content-Type: application/json" -d@./replication.json https://cmsweb-test10.cern.ch/couchdb/_replicate
{"ok":true,"session_id":"03e0c28ea456c78f0790bcc338e798bb","source_last_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kTUXKMBubplobm5mjK4Yh_Y8FiDJ0ACk_qOYYmZpaZpsaIquJwsAMlgqEg","replication_id_version":4,"history":[{"session_id":"03e0c28ea456c78f0790bcc338e798bb","start_time":"Wed, 21 Sep 2022 11:41:20 GMT","end_time":"Wed, 21 Sep 2022 11:41:24 GMT","start_last_seq":0,"end_last_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kTUXKMBubplobm5mjK4Yh_Y8FiDJ0ACk_qOYYmZpaZpsaIquJwsAMlgqEg","recorded_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kTUXKMBubplobm5mjK4Yh_Y8FiDJ0ACk_qOYYmZpaZpsaIquJwsAMlgqEg","missing_checked":10,"missing_found":1,"docs_read":1,"docs_written":1,"doc_write_failures":0}]}
  • Let's check content on test10 couchdb:
curl -H "Authorization: Bearer $t" https://cmsweb-test10.cern.ch/couchdb/wmstats/_all_docs
{"total_rows":10,"offset":0,"rows":[
{"id":"04a5ccd0ab4d51b4e040874a440001a1","key":"04a5ccd0ab4d51b4e040874a440001a1","value":{"rev":"1-4a7e4ae49c4366eaed8edeaea8f784ad"}},
{"id":"_design/WMStats","key":"_design/WMStats","value":{"rev":"1-cb5fdcaa35f3120dfcf6e3f7ff97eb06"}},
{"id":"_design/WMStatsErl","key":"_design/WMStatsErl","value":{"rev":"1-39ea5ccb71dab2e96f350da2771df338"}},
{"id":"_design/WMStatsErl1","key":"_design/WMStatsErl1","value":{"rev":"1-00e7a1cd6544c9c7edd6fce4e39bcc61"}},
{"id":"_design/WMStatsErl2","key":"_design/WMStatsErl2","value":{"rev":"1-6487b0fd00b44e8917ac220e92b88bd7"}},
{"id":"_design/WMStatsErl3","key":"_design/WMStatsErl3","value":{"rev":"1-34660b5af4184a140c6ed94faa46eb3b"}},
{"id":"_design/WMStatsErl4","key":"_design/WMStatsErl4","value":{"rev":"1-a25cccdcc0f74738a967e20a0981f089"}},
{"id":"_design/WMStatsErl5","key":"_design/WMStatsErl5","value":{"rev":"1-03068cf6064eedaa78ed078676ee7c05"}},
{"id":"_design/WMStatsErl6","key":"_design/WMStatsErl6","value":{"rev":"1-9b1911098f884cc23bc10dd39d6f7462"}},
{"id":"_design/WMStatsErl7","key":"_design/WMStatsErl7","value":{"rev":"1-8b1a33c355fbb6615d507d702657e01e"}}
]}
  • Let's check content of test5 couchdb
curl -H "Authorization: Bearer $t" https://cmsweb-test5.cern.ch/couchdb/wmstats/_all_docs
{"total_rows":10,"offset":0,"rows":[
{"id":"04a5ccd0ab4d51b4e040874a440001a1","key":"04a5ccd0ab4d51b4e040874a440001a1","value":{"rev":"1-4a7e4ae49c4366eaed8edeaea8f784ad"}},
{"id":"_design/WMStats","key":"_design/WMStats","value":{"rev":"1-cb5fdcaa35f3120dfcf6e3f7ff97eb06"}},
{"id":"_design/WMStatsErl","key":"_design/WMStatsErl","value":{"rev":"1-39ea5ccb71dab2e96f350da2771df338"}},
{"id":"_design/WMStatsErl1","key":"_design/WMStatsErl1","value":{"rev":"1-00e7a1cd6544c9c7edd6fce4e39bcc61"}},
{"id":"_design/WMStatsErl2","key":"_design/WMStatsErl2","value":{"rev":"1-6487b0fd00b44e8917ac220e92b88bd7"}},
{"id":"_design/WMStatsErl3","key":"_design/WMStatsErl3","value":{"rev":"1-34660b5af4184a140c6ed94faa46eb3b"}},
{"id":"_design/WMStatsErl4","key":"_design/WMStatsErl4","value":{"rev":"1-a25cccdcc0f74738a967e20a0981f089"}},
{"id":"_design/WMStatsErl5","key":"_design/WMStatsErl5","value":{"rev":"1-03068cf6064eedaa78ed078676ee7c05"}},
{"id":"_design/WMStatsErl6","key":"_design/WMStatsErl6","value":{"rev":"1-9b1911098f884cc23bc10dd39d6f7462"}},
{"id":"_design/WMStatsErl7","key":"_design/WMStatsErl7","value":{"rev":"1-8b1a33c355fbb6615d507d702657e01e"}}
]}
  • Insert new doc in test10 couchdb
scurl -X POST -H "Content-type: application/json" -d '{"doc":1}' https://cmsweb-test10.cern.ch:8443/couchdb/wmstats
{"ok":true,"id":"04a5ccd0ab4d51b4e040874a440010a7","rev":"1-c0245334c6995ea5686052095c85be51"}
  • Create new replication request on test10
curl -X POST -H "Authorization: Bearer $t" -H "Content-Type: application/json" -d@./replication.json https://cmsweb-test10.cern.ch/couchdb/_replicate
{"ok":true,"session_id":"ad1f59222d69dce585ccf7a81e7b0286","source_last_seq":"11-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kS0XKMBubplobm5mjK4Yh_Y8FiDJ0ACk_kNNYQWbYmZpaZpsaIquJwsAMrwqEw","replication_id_version":4,"history":[{"session_id":"ad1f59222d69dce585ccf7a81e7b0286","start_time":"Wed, 21 Sep 2022 11:50:49 GMT","end_time":"Wed, 21 Sep 2022 11:50:51 GMT","start_last_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kTUXKMBubplobm5mjK4Yh_Y8FiDJ0ACk_qOYYmZpaZpsaIquJwsAMlgqEg","end_last_seq":"11-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kS0XKMBubplobm5mjK4Yh_Y8FiDJ0ACk_kNNYQWbYmZpaZpsaIquJwsAMrwqEw","recorded_seq":"11-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kS0XKMBubplobm5mjK4Yh_Y8FiDJ0ACk_kNNYQWbYmZpaZpsaIquJwsAMrwqEw","missing_checked":11,"missing_found":2,"docs_read":2,"docs_written":2,"doc_write_failures":0},{"session_id":"03e0c28ea456c78f0790bcc338e798bb","start_time":"Wed, 21 Sep 2022 11:41:20 GMT","end_time":"Wed, 21 Sep 2022 11:41:24 GMT","start_last_seq":0,"end_last_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kTUXKMBubplobm5mjK4Yh_Y8FiDJ0ACk_qOYYmZpaZpsaIquJwsAMlgqEg","recorded_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kTUXKMBubplobm5mjK4Yh_Y8FiDJ0ACk_qOYYmZpaZpsaIquJwsAMlgqEg","missing_checked":10,"missing_found":1,"docs_read":1,"docs_written":1,"doc_write_failures":0}]}
  • Let's check content on test5
curl -X POST -H "Authorization: Bearer $t" -H "Content-Type: application/json" -d@./replication.json https://cmsweb-test10.cern.ch/couchdb/_replicate
{"ok":true,"session_id":"ad1f59222d69dce585ccf7a81e7b0286","source_last_seq":"11-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvL{"id":"04a5ccd0ab4d51b4e040874a440001a1","key":"04a5ccd0ab4d51b4e040874a440001a1","value":{"rev":"1-4a7e4ae49c4366eaed8edeaea8f784ad"}},
{"id":"04a5ccd0ab4d51b4e040874a440010a7","key":"04a5ccd0ab4d51b4e040874a440010a7","value":{"rev":"1-c0245334c6995ea5686052095c85be51"}},
{"id":"_design/WMStats","key":"_design/WMStats","value":{"rev":"1-cb5fdcaa35f3120dfcf6e3f7ff97eb06"}},
{"id":"_design/WMStatsErl","key":"_design/WMStatsErl","value":{"rev":"1-39ea5ccb71dab2e96f350da2771df338"}},
{"id":"_design/WMStatsErl1","key":"_design/WMStatsErl1","value":{"rev":"1-00e7a1cd6544c9c7edd6fce4e39bcc61"}},
{"id":"_design/WMStatsErl2","key":"_design/WMStatsErl2","value":{"rev":"1-6487b0fd00b44e8917ac220e92b88bd7"}},
{"id":"_design/WMStatsErl3","key":"_design/WMStatsErl3","value":{"rev":"1-34660b5af4184a140c6ed94faa46eb3b"}},
{"id":"_design/WMStatsErl4","key":"_design/WMStatsErl4","value":{"rev":"1-a25cccdcc0f74738a967e20a0981f089"}},
{"id":"_design/WMStatsErl5","key":"_design/WMStatsErl5","value":{"rev":"1-03068cf6064eedaa78ed078676ee7c05"}},
{"id":"_design/WMStatsErl6","key":"_design/WMStatsErl6","value":{"rev":"1-9b1911098f884cc23bc10dd39d6f7462"}},
{"id":"_design/WMStatsErl7","key":"_design/WMStatsErl7","value":{"rev":"1-8b1a33c355fbb6615d507d702657e01e"}}
]}
  • Let's check content on test10
curl -H "Authorization: Bearer $t" https://cmsweb-test10.cern.ch/couchdb/wmstats/_all_docs
{"total_rows":11,"offset":0,"rows":[
{"id":"04a5ccd0ab4d51b4e040874a440001a1","key":"04a5ccd0ab4d51b4e040874a440001a1","value":{"rev":"1-4a7e4ae49c4366eaed8edeaea8f784ad"}},
{"id":"04a5ccd0ab4d51b4e040874a440010a7","key":"04a5ccd0ab4d51b4e040874a440010a7","value":{"rev":"1-c0245334c6995ea5686052095c85be51"}},
{"id":"_design/WMStats","key":"_design/WMStats","value":{"rev":"1-cb5fdcaa35f3120dfcf6e3f7ff97eb06"}},
{"id":"_design/WMStatsErl","key":"_design/WMStatsErl","value":{"rev":"1-39ea5ccb71dab2e96f350da2771df338"}},
{"id":"_design/WMStatsErl1","key":"_design/WMStatsErl1","value":{"rev":"1-00e7a1cd6544c9c7edd6fce4e39bcc61"}},
{"id":"_design/WMStatsErl2","key":"_design/WMStatsErl2","value":{"rev":"1-6487b0fd00b44e8917ac220e92b88bd7"}},
{"id":"_design/WMStatsErl3","key":"_design/WMStatsErl3","value":{"rev":"1-34660b5af4184a140c6ed94faa46eb3b"}},
{"id":"_design/WMStatsErl4","key":"_design/WMStatsErl4","value":{"rev":"1-a25cccdcc0f74738a967e20a0981f089"}},
{"id":"_design/WMStatsErl5","key":"_design/WMStatsErl5","value":{"rev":"1-03068cf6064eedaa78ed078676ee7c05"}},
{"id":"_design/WMStatsErl6","key":"_design/WMStatsErl6","value":{"rev":"1-9b1911098f884cc23bc10dd39d6f7462"}},
{"id":"_design/WMStatsErl7","key":"_design/WMStatsErl7","value":{"rev":"1-8b1a33c355fbb6615d507d702657e01e"}}
]}
  • Check that we have {"doc":1} in place in both test10/test5 couchdb:
curl -H "Authorization: Bearer $t" https://cmsweb-test10.cern.ch/couchdb/wmstats/04a5ccd0ab4d51b4e040874a440010a7
{"_id":"04a5ccd0ab4d51b4e040874a440010a7","_rev":"1-c0245334c6995ea5686052095c85be51","doc":1}

curl -H "Authorization: Bearer $t" https://cmsweb-test5.cern.ch/couchdb/wmstats/04a5ccd0ab4d51b4e040874a440010a7
{"_id":"04a5ccd0ab4d51b4e040874a440010a7","_rev":"1-c0245334c6995ea5686052095c85be51","doc":1}

Tools

I used lots of short-cuts for k8s commands and will list them here for clarify of following sections:

  • kdp kubectl delete pod
#!/bin/bash
if [ $# ==  2 ]; then
    kubectl -n $1 delete pod --wait=false $2
else
    kubectl delete pod --wait=false $1
fi
  • kds k8s create secrets
#!/bin/bash
ns=$1
secret=$2
files=$3
kubectl -n $ns delete secret $secret
kubectl create secret generic $secret $files --dry-run=client -o yaml | kubectl apply --namespace=$ns -f -
  • kpod k8s get pods
#!/bin/bash
if [ $# ==  1 ]; then
    kubectl get pods -n $1
else
    kubectl get pods
fi
  • klogs k8s logs
#!/bin/bash
if [ $# ==  2 ]; then
    kubectl -n $1 logs $2
else
    kubectl logs $1
fi

Replication using x509

Finally, I managed to make x509 replication works by doing the following steps:

  • get proxy from any existing dmwm pods, e.g. reqmgr2
  • creating new proxy-secrets in couchdb namespce
kds couchdb proxy-secrets --from-file=proxy
  • adjusting local.ini with the following config sections:
[ssl]
enable = true
cert_file = /etc/proxy/proxy
key_file = /etc/proxy/proxy
cacert_file = /etc/proxy/proxy
ssl_certificate_max_depth = 10
verify_ssl_certificates = false

[replicator]
cert_file = /etc/proxy/proxy
key_file = /etc/proxy/proxy
cacert_file = /etc/proxy/proxy
ssl_certificate_max_depth = 10
verify_ssl_certificates = false
; checkpoint setup: 10 minutes interval
use_checkpoints = true
checkpoint_interval = 120000
; performance setup (still to be evaluated in the production nodes)
worker_processes = 4
http_connections = 10
worker_batch_size = 2000
socket_options = [{keepalive, true}, {nodelay, true}]
; don't give up if replication fails; set timeout to 200secs
max_replication_retry_count = infinity
; wait for 300 seconds before timing out (actual timeout is 1/3 of it, since it's used in other parts of the code)
connection_timeout = 900000
  • redeploy couchdb-secrets by using this command:
kds couchdb couchdb-secrets "--from-file=secrets/couchdb/hmackey.ini --from-file=secrets/couchdb/couch_creds --from-file=secrets/couchdb/local.ini"
  • restart couchdb pod
kdp couchdb couchdb-7cfb57488c-jq7l7
  • and, finally check entire workflow
    • insert doc into test10 couchdb
    • create replicate_x509.json with this content:
{ "_id": "replication_job",
    "source": {
       "url": "https://cmsweb-test10.cern.ch:8443/couchdb/wmstats"
    },
    "target": {
       "url": "https://cmsweb-test5.cern.ch:8443/couchdb/wmstats"
    },
    "create_target": false,
    "continuous": false
}
  • create replciation request

Here are all steps I did:

lxplus8s03(16:47:16) cmsweb ⎈ cmsweb-test10 > scurl -X POST -H "Content-Type: application/json" https://cmsweb-test10.cern.ch:8443/couchdb/wmstats -H "Referer: https://cmsweb-test10.cern.ch" -d '{"doc4":4}'
{"ok":true,"id":"7c20fe8a76f1c5827ee89b0300000c2a","rev":"1-c1e98300c7415e4a2f3514f240018919"}
lxplus8s03(16:47:36) cmsweb ⎈ cmsweb-test10 > scurl https://cmsweb-test10.cern.ch:8443/couchdb/wmstats/_all_docs
{"total_rows":10,"offset":0,"rows":[
{"id":"7c20fe8a76f1c5827ee89b0300000c2a","key":"7c20fe8a76f1c5827ee89b0300000c2a","value":{"rev":"1-c1e98300c7415e4a2f3514f240018919"}},
{"id":"_design/WMStats","key":"_design/WMStats","value":{"rev":"1-cb5fdcaa35f3120dfcf6e3f7ff97eb06"}},
{"id":"_design/WMStatsErl","key":"_design/WMStatsErl","value":{"rev":"1-39ea5ccb71dab2e96f350da2771df338"}},
{"id":"_design/WMStatsErl1","key":"_design/WMStatsErl1","value":{"rev":"1-00e7a1cd6544c9c7edd6fce4e39bcc61"}},
{"id":"_design/WMStatsErl2","key":"_design/WMStatsErl2","value":{"rev":"1-6487b0fd00b44e8917ac220e92b88bd7"}},
{"id":"_design/WMStatsErl3","key":"_design/WMStatsErl3","value":{"rev":"1-34660b5af4184a140c6ed94faa46eb3b"}},
{"id":"_design/WMStatsErl4","key":"_design/WMStatsErl4","value":{"rev":"1-a25cccdcc0f74738a967e20a0981f089"}},
{"id":"_design/WMStatsErl5","key":"_design/WMStatsErl5","value":{"rev":"1-03068cf6064eedaa78ed078676ee7c05"}},
{"id":"_design/WMStatsErl6","key":"_design/WMStatsErl6","value":{"rev":"1-9b1911098f884cc23bc10dd39d6f7462"}},
{"id":"_design/WMStatsErl7","key":"_design/WMStatsErl7","value":{"rev":"1-8b1a33c355fbb6615d507d702657e01e"}}
]}
lxplus8s03(16:48:04) cmsweb ⎈ cmsweb-test10 > scurl https://cmsweb-test5.cern.ch:8443/couchdb/wmstats/_all_docs
{"total_rows":9,"offset":0,"rows":[
{"id":"_design/WMStats","key":"_design/WMStats","value":{"rev":"1-cb5fdcaa35f3120dfcf6e3f7ff97eb06"}},
{"id":"_design/WMStatsErl","key":"_design/WMStatsErl","value":{"rev":"1-39ea5ccb71dab2e96f350da2771df338"}},
{"id":"_design/WMStatsErl1","key":"_design/WMStatsErl1","value":{"rev":"1-00e7a1cd6544c9c7edd6fce4e39bcc61"}},
{"id":"_design/WMStatsErl2","key":"_design/WMStatsErl2","value":{"rev":"1-6487b0fd00b44e8917ac220e92b88bd7"}},
{"id":"_design/WMStatsErl3","key":"_design/WMStatsErl3","value":{"rev":"1-34660b5af4184a140c6ed94faa46eb3b"}},
{"id":"_design/WMStatsErl4","key":"_design/WMStatsErl4","value":{"rev":"1-a25cccdcc0f74738a967e20a0981f089"}},
{"id":"_design/WMStatsErl5","key":"_design/WMStatsErl5","value":{"rev":"1-03068cf6064eedaa78ed078676ee7c05"}},
{"id":"_design/WMStatsErl6","key":"_design/WMStatsErl6","value":{"rev":"1-9b1911098f884cc23bc10dd39d6f7462"}},
{"id":"_design/WMStatsErl7","key":"_design/WMStatsErl7","value":{"rev":"1-8b1a33c355fbb6615d507d702657e01e"}}
]}
lxplus8s03(16:48:16) cmsweb ⎈ cmsweb-test10 > scurl -H "Content-Type: application/json" -d@./replication_x509.json https://cmsweb-test10.cern.ch:8443/couchdb/_replicate
{"ok":true,"session_id":"aa80b35eee58cfa1a7424897f63e6b8e","source_last_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kSUXKMBuaZFskWaeiq4Yh_Y8FiDJ0ACk_kNNYQObYmaYnJaYZISuJwsAX8Eq9w","replication_id_version":4,"history":[{"session_id":"aa80b35eee58cfa1a7424897f63e6b8e","start_time":"Wed, 21 Sep 2022 14:48:28 GMT","end_time":"Wed, 21 Sep 2022 14:48:29 GMT","start_last_seq":"9-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kSUXKMBuaZFskWaeiq4Yh_Y8FiDJ0ACk_kNNYQWbYmaYnJaYZISuJwsAX6Mq9g","end_last_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kSUXKMBuaZFskWaeiq4Yh_Y8FiDJ0ACk_kNNYQObYmaYnJaYZISuJwsAX8Eq9w","recorded_seq":"10-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kSUXKMBuaZFskWaeiq4Yh_Y8FiDJ0ACk_kNNYQObYmaYnJaYZISuJwsAX8Eq9w","missing_checked":10,"missing_found":1,"docs_read":1,"docs_written":1,"doc_write_failures":0},{"session_id":"058cbb186446b27582c54d203bc642cc","start_time":"Wed, 21 Sep 2022 14:46:23 GMT","end_time":"Wed, 21 Sep 2022 14:46:25 GMT","start_last_seq":0,"end_last_seq":"9-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kSUXKMBuaZFskWaeiq4Yh_Y8FiDJ0ACk_kNNYQWbYmaYnJaYZISuJwsAX6Mq9g","recorded_seq":"9-g1AAAACLeJzLYWBgYMpgTmHgzcvPy09JdcjLz8gvLskBCScyJNX___8_K4M5kSUXKMBuaZFskWaeiq4Yh_Y8FiDJ0ACk_kNNYQWbYmaYnJaYZISuJwsAX6Mq9g","missing_checked":9,"missing_found":0,"docs_read":0,"docs_written":0,"doc_write_failures":0}]}
lxplus8s03(16:48:29) cmsweb ⎈ cmsweb-test10 >
lxplus8s03(16:48:31) cmsweb ⎈ cmsweb-test10 > scurl https://cmsweb-test5.cern.ch:8443/couchdb/wmstats/_all_docs
{"total_rows":10,"offset":0,"rows":[
{"id":"7c20fe8a76f1c5827ee89b0300000c2a","key":"7c20fe8a76f1c5827ee89b0300000c2a","value":{"rev":"1-c1e98300c7415e4a2f3514f240018919"}},
{"id":"_design/WMStats","key":"_design/WMStats","value":{"rev":"1-cb5fdcaa35f3120dfcf6e3f7ff97eb06"}},
{"id":"_design/WMStatsErl","key":"_design/WMStatsErl","value":{"rev":"1-39ea5ccb71dab2e96f350da2771df338"}},
{"id":"_design/WMStatsErl1","key":"_design/WMStatsErl1","value":{"rev":"1-00e7a1cd6544c9c7edd6fce4e39bcc61"}},
{"id":"_design/WMStatsErl2","key":"_design/WMStatsErl2","value":{"rev":"1-6487b0fd00b44e8917ac220e92b88bd7"}},
{"id":"_design/WMStatsErl3","key":"_design/WMStatsErl3","value":{"rev":"1-34660b5af4184a140c6ed94faa46eb3b"}},
{"id":"_design/WMStatsErl4","key":"_design/WMStatsErl4","value":{"rev":"1-a25cccdcc0f74738a967e20a0981f089"}},
{"id":"_design/WMStatsErl5","key":"_design/WMStatsErl5","value":{"rev":"1-03068cf6064eedaa78ed078676ee7c05"}},
{"id":"_design/WMStatsErl6","key":"_design/WMStatsErl6","value":{"rev":"1-9b1911098f884cc23bc10dd39d6f7462"}},
{"id":"_design/WMStatsErl7","key":"_design/WMStatsErl7","value":{"rev":"1-8b1a33c355fbb6615d507d702657e01e"}}
]}

Summary

  • replication via token based authentication (via APS, port 443) works
  • replication via x509 based authentication (via XPS, port 8443) works
  • data injection via x509 based authentication (via XPS, port 8443) works
  • data injection via token based authentication (via APS, port 554) works but requires Referer: xxx HTTP header which we should add to APS.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment