You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by GitBox <gi...@apache.org> on 2018/09/21 17:25:19 UTC

[GitHub] nickva commented on issue #1619: Implement replicator forced session refresh

nickva commented on issue #1619: Implement replicator forced session refresh
URL: https://github.com/apache/couchdb/pull/1619#issuecomment-423612552
 
 
   For another test besides the unit test can try this script
   
   ```
   #!/bin/bash
   
   S=localhost:15984
   SA=adm:pass@${S}
   JSON="Content-Type: application/json"
   
   curl -s -XDELETE $SA/db > /dev/null
   curl -s -XDELETE $SA/srcdb > /dev/null
   curl -s -XDELETE $SA/_replicator > /dev/null
   curl -s -XPUT $SA/db > /dev/null
   curl -s -XPUT $SA/srcdb > /dev/null
   
   echo "Setting [couch_httpd_auth] timeout = 5"
   curl -s -XPUT adm:pass@localhost:15986/_config/couch_httpd_auth/timeout -d '"5"' > /dev/null
   curl -s -XPUT adm:pass@localhost:25986/_config/couch_httpd_auth/timeout -d '"5"' > /dev/null
   curl -s -XPUT adm:pass@localhost:35986/_config/couch_httpd_auth/timeout -d '"5"' > /dev/null
   
   echo "Set session force refresh = 4"
   curl -s -XPUT adm:pass@localhost:15986/_config/replicator/session_force_refresh_interval_sec -d '"4"' > /dev/null
   curl -s -XPUT adm:pass@localhost:25986/_config/replicator/session_force_refresh_interval_sec -d '"4"' > /dev/null
   curl -s -XPUT adm:pass@localhost:35986/_config/replicator/session_force_refresh_interval_sec -d '"4"' > /dev/null
   
   echo "Adding VDU to target"
   cat <<EOF > /tmp/vdu.json
     {
       "_id": "_design/vdu",
       "validate_doc_update":"function(newDoc, oldDoc, userCtx) { log(userCtx); if (newDoc.name != userCtx.name) { throw({'forbidden': 'VDU failed'}); } }"
     }
   EOF
   curl -s -XPUT $SA/db/_design/vdu -H "$JSON" -T /tmp/vdu.json > /dev/null
   
   echo "Replicating from srcdb to db"
   curl -s XDELETE $SA/_replicate -H "$JSON" -d '{"source":"http://adm:pass@localhost:15984/srcdb", "target":"http://adm:pass@localhost:15984/db", "worker_proceses":1, "continuous":true}' > /dev/null
   curl -s XPOST   $SA/_replicate -H "$JSON" -d '{"source":"http://adm:pass@localhost:15984/srcdb", "target":"http://adm:pass@localhost:15984/db", "worker_proceses":1, "continuous":true}' > /dev/null
   
   sleep 3
   
   DOCID=0
   
   echo "With frequent enough updates, session is getting refreshed"
   while [ $DOCID -lt 2 ]; do
       let DOCID++
       echo ""
       echo "DocID: $DOCID"
       curl -s -XPUT $SA/srcdb/$DOCID -H "$JSON" -d '{"name":"adm"}' > /dev/null
       echo "Doc added to source, sleeping 2 seconds"
       sleep 2
       echo "Getting doc from target:"
       curl $SA/db/$DOCID
   done
   
   echo "Now trying with longer sleeps"
   sleep 10
   
   while [ $DOCID -lt 10 ]; do
       let DOCID++
       echo ""
       echo "DocID: $DOCID"
       curl -s -XPUT $SA/srcdb/$DOCID -H "$JSON" -d '{"name":"adm"}' > /dev/null
       echo "Doc added to source, sleeping 7 seconds"
       sleep 7
       echo "Getting doc from target:"
       curl $SA/db/$DOCID
   done
   ```
   
   Comment the part where the force refresh setting is set to 4 seconds and docs 5,6,7... etc should fail with 
   ```
   DocID: 5
   Doc added to source, sleeping 7 seconds
   Getting doc from target:
   {"error":"not_found","reason":"missing"}
   
   DocID: 6
   Doc added to source, sleeping 7 seconds
   Getting doc from target:
   {"error":"not_found","reason":"missing"}
   ```
   
   Uncomment the setting and they should be replicating
   
   ```
   
   DocID: 5
   Doc added to source, sleeping 7 seconds
   Getting doc from target:
   {"_id":"5","_rev":"1-66e95cbbe626e928747ecc225341b2d6","name":"adm"}
   
   DocID: 6
   Doc added to source, sleeping 7 seconds
   Getting doc from target:
   {"_id":"6","_rev":"1-66e95cbbe626e928747ecc225341b2d6","name":"adm"}
   
   DocID: 7
   Doc added to source, sleeping 7 seconds
   Getting doc from target:
   {"_id":"7","_rev":"1-66e95cbbe626e928747ecc225341b2d6","name":"adm"}
   ```
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services