> On Jan. 22, 2016, 9:34 a.m., Adam B wrote: > > src/master/master.hpp, line 1547 > > <https://reviews.apache.org/r/41681/diff/29/?file=1203159#file1203159line1547> > > > > It's a shame we can't store the weights as a map in the registry, so we > > don't have to iterate through all the registry's weights for each weight > > being updated.
Cannot agree with you more, maybe we can collect these similar flaws, and improve them before Mesos reach 1.0. > On Jan. 22, 2016, 9:34 a.m., Adam B wrote: > > src/master/master.cpp, lines 1544-1550 > > <https://reviews.apache.org/r/41681/diff/29/?file=1203160#file1203160line1544> > > > > Why not combine these two loops rather than iterating twice? I have updated the logic in recovering the weights, you can have a look. > On Jan. 22, 2016, 9:34 a.m., Adam B wrote: > > src/master/master.hpp, line 1568 > > <https://reviews.apache.org/r/41681/diff/29/?file=1203159#file1203159line1568> > > > > Technically, the bool returned represents whether the registry was > > mutated. If there were no weights, or all weights are "updated" to their > > existing values, then there is no mutation, so you should return false. > > I'm not sure if these use cases are common enough to want to prevent a > > registrar update (and replication) though. What do you think? Agree with you. To improve the performance of replication, I have updated the logic to consider the cases you refered as above. - Yongqiao ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/41681/#review115815 ----------------------------------------------------------- On Jan. 24, 2016, 5 a.m., Yongqiao Wang wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/41681/ > ----------------------------------------------------------- > > (Updated Jan. 24, 2016, 5 a.m.) > > > Review request for mesos, Adam B, Neil Conway, and Qian Zhang. > > > Bugs: MESOS-4214 > https://issues.apache.org/jira/browse/MESOS-4214 > > > Repository: mesos > > > Description > ------- > > Introduce HTTP endpoint /weights for updating weight. > > > Diffs > ----- > > include/mesos/authorizer/authorizer.hpp > 5ee3c7afadd131802c93febbb6b4dbad069c2d81 > include/mesos/authorizer/authorizer.proto > 226441f8cbd6d0828bf1636cc08c21ffcc75e6a7 > src/CMakeLists.txt 47d0a7c0fe73b9297cd7dde6086b5e6e9e1f9e4e > src/Makefile.am 19bf3a7c2e43ca04ed6e6d506e052de5537f7c2f > src/authorizer/local/authorizer.hpp > c7321c276d566eca6a91f45c546468bea1b0da15 > src/authorizer/local/authorizer.cpp > 9557bbdf68ff182c4538bbf70cee576d717abc05 > src/master/http.cpp 12c1fe5a514903f657911302e8770e9b245fdbb7 > src/master/master.hpp 3a7e18232323a1c051bcc97915484b1195fffe58 > src/master/master.cpp 9ee56277c8a472be9e683d5db505becfb5f7c422 > src/master/registry.proto 9958f9c2bdb785390fca2f292b65d5a9310434d5 > src/master/weights_handler.cpp PRE-CREATION > src/tests/mesos.hpp ce6a12d480197d22529b4b50f1c72ce52d271917 > src/tests/mesos.cpp 365ebe8335c37bfdb983a5424d4c995fa9b76a22 > > Diff: https://reviews.apache.org/r/41681/diff/ > > > Testing > ------- > > Make & Make check successfully! > > $ (./mesos-master.sh --ip=127.0.0.1 --work_dir=/tmp/mesos-master > --weights="role1=4.2,role2=3.1" --authenticate_http > --credentials=/opt/credentials.json >> /tmp/mesos-master.log 2>&1 &) > $ curl http://localhost:5050/roles | python -mjson.tool > { > "roles": [ > { > "frameworks": [ ], > "name": "*", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 1 > }, > { > "frameworks": [ ], > "name": "role1", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 4.2 > }, > { > "frameworks": [ ], > "name": "role2", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 3.1 > } > ] > } > > Test update: > $ curl --user framework1:secret_string1 --data > weights="[{\"weight\":1.8,\"role\":\"role1\"},{\"weight\":1.0,\"role\":\"role2\"},{\"weight\":3.4,\"role\":\"role3\"}]" > -X PUT http://127.0.0.1:5050/weights > $ curl http://localhost:5050/roles | python -mjson.tool > { > "roles": [ > { > "frameworks": [], > "name": "*", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 1.0 > }, > { > "frameworks": [], > "name": "role1", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 1.8 > }, > { > "frameworks": [], > "name": "role2", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 1.0 > }, > { > "frameworks": [], > "name": "role3", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 3.4 > } > ] > } > > Test recovuery: > $ ps -ef | grep mesos-master > 501 56292 1 0 6:18PM ttys001 0:00.31 > /Users/yqwyq/Desktop/mesos/build/src/.libs/mesos-master --ip=127.0.0.1 > --work_dir=/tmp/mesos-master --weights=role1=4.2,role2=3.1 > --authenticate_http --credentials=/opt/credentials.json > $ kill -9 56292 > > $ (./mesos-master.sh --ip=127.0.0.1 --work_dir=/tmp/mesos-master > --weights="role1=4.2,role2=3.1,role6=9.0" --authenticate_http > --credentials=/opt/credentials.json >> /tmp/mesos-master.log 2>&1 &) > $ curl http://localhost:5050/roles | python -mjson.tool > { > "roles": [ > { > "frameworks": [], > "name": "*", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 1.0 > }, > { > "frameworks": [], > "name": "role1", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 1.8 > }, > { > "frameworks": [], > "name": "role2", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 1.0 > }, > { > "frameworks": [], > "name": "role3", > "resources": { > "cpus": 0, > "disk": 0, > "mem": 0 > }, > "weight": 3.4 > } > ] > } > > > Thanks, > > Yongqiao Wang > >
