Closed Quba1 closed 1 year ago
Did you copy the new service? Are you sure it's using the launcher? If you updated from an older service file, make sure to try the following:
Did you copy the new service? Are you sure it's using the launcher? If you updated from an older service file, make sure to try the following:
* service cake-autorate disable * copy the new cake-autorate service file to /etc/init.d * enable cake-autorate
I used the installer for updating to master as suggested in #156, but I will try your suggestion.
I have just noticed that secondary interface stopped logging DATA
. From logs its seems that this issue occurs after connection becomes idle, and after that some non-standard things happen.
I used the installer for updating to master as suggested in #156, but I will try your suggestion.
I've made sure that I am using latest cake-autorate
and _launcher
files and starting/stopping service worked well couple times. After stopping it the third time, these are leftover processes:
4267 root 2644 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.secondary.sh
4295 root 2520 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.secondary.sh
4317 root 2520 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.secondary.sh
4353 root 2560 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.secondary.sh
4418 root 2664 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.secondary.sh
6353 root 2524 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.secondary.sh
#!/bin/bash
cake_instances=(/root/cake-autorate/cake-autorate_config*sh)
cake_instance_pids=()
trap kill_cake_instances INT TERM EXIT
kill_cake_instances()
{
trap true INT TERM EXIT
echo "Killing all instances of cake one-by-one now."
for ((cake_instance=0; cake_instance<${#cake_instances[@]}; cake_instance++))
do
kill "${cake_instance_pids[${cake_instance}]}" 2>/dev/null || true
done
wait
trap - INT TERM EXIT
}
for cake_instance in "${cake_instances[@]}"
do
/root/cake-autorate/cake-autorate.sh "${cake_instance}" &
cake_instance_pids+=(${!})
done
wait
can you try this instead?
Trying the updated version leaves those processes running after the first try:
8953 root 2644 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.primary.sh
8960 root 2520 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.primary.sh
8976 root 2520 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.primary.sh
9016 root 2560 R {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.primary.sh
9081 root 2700 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.primary.sh
10520 root 2608 S {cake-autorate.s} /bin/bash /root/cake-autorate/cake-autorate.sh /root/cake-autorate/cake-autorate_config.primary.sh
#!/bin/bash
cake_instances=(/root/cake-autorate/cake-autorate_config*sh)
cake_instance_pids=()
trap kill_cake_instances INT TERM EXIT
kill_cake_instances()
{
trap true INT TERM EXIT
echo "Killing all instances of cake one-by-one now."
kill "${cake_instance_pids[@]}" 2>/dev/null || true
wait "${cake_instance_pids[@]}"
trap - INT TERM EXIT
}
for cake_instance in "${cake_instances[@]}"
do
/root/cake-autorate/cake-autorate.sh "${cake_instance}" &
cake_instance_pids+=(${!})
done
wait
How about this variant?
Still the same thing :( cake-autorate_launcher.sh
stayed active for a little while but the processes didn't stop
Last chance, if this doesn't work I'll look deeper into this:
#!/bin/bash
set -eu
export PROC_STATE_FILE=/var/run/cake-autorate-launcher
export PROC_STATE_FILE_LOCK="${PROC_STATE_FILE}.lock"
. /root/cake-autorate/cake-autorate_lib.sh
cake_instances=(/root/cake-autorate/cake-autorate_config*sh)
trap kill_cake_instances INT TERM EXIT
kill_cake_instances()
{
trap true INT TERM EXIT
echo "Killing all instances of cake one-by-one now."
for cake_instance in "${cake_instances[@]}"
do
proc_man_stop "${cake_instance}"
done
trap - INT TERM EXIT
}
for cake_instance in "${cake_instances[@]}"
do
proc_man_start "${cake_instance}" bash /root/cake-autorate/cake-autorate.sh "${cake_instance}"
done
wait
Unfortunately, no good news - cake-autorate
service now doesn't start at all.
Thanks a lot tho for your effort in trying to solve that.
Anything interesting if you run the launcher directly? (no service)
root@OpenWrt:~/cake-autorate# ./cake-autorate_launcher.sh
Killing all instances of cake one-by-one now.
Replace that final wait
with proc_man_wait ${cake_instances[0]}
Still the same result
Oh very sorry, you need cake_instances=(/root/cake-autorate/cake-autorate_config*sh)
at the top. I have no idea why I removed that
Currently it is in line 8, should I move it before the exports?
Oh nevermind, I thought I removed it. It's not the issue, will have to take a look later then
Could you quickly try to remove the set -eu line at the very top? Edit: also delete /var/run/cake-autorate-launcher if it exists
Now it worked.
Should I try running it as a service as well?
Sure
Now it worked.
After that message I noticed your edit about removing /var/run/cake-autorate-launcher
. It contained:
root@OpenWrt:/tmp/run# cat cake-autorate-launcher
/root/cake-autorate/cake-autorate_config.primary.sh=-1
/root/cake-autorate/cake-autorate_config.secondary.sh=-1
After deleting it, cake-autorate_launcher
started but I couldn't kill it with Ctrl+C and it left some cake-autorate
processes alive.
Edit: Also after trying Ctrl+C for the first time, the script started printing only LOAD
statements, which is a similar behaviour to what I have seen previously in logs. Supposedly, those two issues are related...?
Yes that's normal, I meant to delete it before running the launcher
Success 🎉 cake-autorate
service started and stopped correctly consecutively for several times.
Thanks a lot for your help.
I will update if issue with logging persists.
Then final version of the script is
#!/bin/bash
export PROC_STATE_FILE=/var/run/cake-autorate-launcher
export PROC_STATE_FILE_LOCK="${PROC_STATE_FILE}.lock"
. /root/cake-autorate/cake-autorate_lib.sh
cake_instances=(/root/cake-autorate/cake-autorate_config*sh)
trap kill_cake_instances INT TERM EXIT
kill_cake_instances()
{
trap true INT TERM EXIT
echo "Killing all instances of cake one-by-one now."
for cake_instance in "${cake_instances[@]}"
do
proc_man_stop "${cake_instance}"
done
trap - INT TERM EXIT
}
for cake_instance in "${cake_instances[@]}"
do
proc_man_start "${cake_instance}" bash /root/cake-autorate/cake-autorate.sh "${cake_instance}"
done
proc_man_wait ${cake_instances[0]}
Edit: The issue with logging unfortunately still persists.
Edit: The issue with logging unfortunately still persists.
What issue with logging are you referring to?
What issue with logging are you referring to?
I have just noticed that secondary interface stopped logging
DATA
. From logs its seems that this issue occurs after connection becomes idle, and after that some non-standard things happen.
This one. But I don't think it's related to launcher, rather to running cake-autorate with mwan in general.
@patrakov do you have experience running multiple instances at the same time or did you only ever test running one with your mwan3 setup?
For testing, in the past, I did run two instances, and found that it worked as expected. However, I did not test recent code in this situation.
By re-reading the bug description, I arrived at the following impression: the root cause of the complaint is that fping is not being killed. mwan3 is irrelevant. I have already complained about this, see https://forum.openwrt.org/t/cake-w-adaptive-bandwidth/135379/2245?u=patrakov - and that's why I am on the older version now.
@Quba1 Please test version 1.2.0.
@patrakov See #164
@Quba1 please can you test the latest code in 'master' since I think the last few commits may have resolved the issue you identified.
The latest push to the master has indeed resolved the issue. Thank you for your help.
Yay!
Answering @lynxthecat from #161 about running
cake-autorate
as a service with multi wan, there seems to be some inconsistencies.I just had following chain of events happen:
cake-autorate
service running correctlyservice cake-autorate stop
cake-autorate
became disabled and processes didn't stop (output ofps | grep -e bash -e fping
remained the same)cake-autorate
processes disappearedcake-autorate
service, it started and worked correctly for both interfacescake-autorate
service started automatically, but this time secondary interface didn't logDATA
service cake-autorate stop
cake-autorate
processes stopped, and service didn't become disabled (just stopped)service cake-autorate start
cake-autorate
started but secondary instance still don't logDATA
service cake-autorate stop
, all processes stopped, executedservice cake-autorate start
and both interfaces are logging correctlyFor me, this behavior shows no logic, and I'm wondering is it
cake-autorate
or my device.