If it brings the failed it’s because when it was
marked as disabled that node was already in the list, so it will fail and hit the failure
route again and move to next node.
The next call of ds_select_dst (in request route) will populate a list without disabled
nodes, etc.
To summarize:
- In request route call ds_select_dst()
- if it fails, in failed_route call ds_mark_dst() and then ds_next_dst()
Example:
...to keep it easy to understand, let's pretend that dispatcher doesn't load
balance and just failsover, let's say you have a ds group of nodes A, B and C...
- INVITE 1 received. ds_select_dst() (the list contains A, B, C). $du=A
- INVITE 2 received. ds_select_dst() (the list contains A, B, C). $du=A
- A dies.
- INVITE 1 in failure route, A is maked as disabled, ds_next_dst() (updated list contains
B and C). $du=B
- INVITE 3 received, ds_select_dst() (the list contains B, C). $du=B
- INVITE 2 in failure route, A is already marked as disabled, ds_next_dst() (updated list
contains B and C). $du=B
- ...people talk via server B because A failed...
So really you would only send calls that populated the dispather list before dying, after
that the next calls wouldn't even try to hit that server.
Can you give some more details on what kind of failover you are trying to achieve?
Joel.
On Sat, Sep 1, 2018 at 11:06 Igor Olhovskiy
<igorolhovskiy(a)gmail.com> wrote:
> Hi!
> I’ve used
> ds_select_dst() and ds_next_dst() one after another in failure route.
> If use in request/failure it’s working ok.
>
> But again, during the failover in my environment dispatcher list can change. And I
don’t want to rely on ds_next_dst() cause it can bring me absent node.
> So, I’ve been thinking of use xavp variable to get data from it, but still can’t get
it to work.
>
> Regards, Igor
> On Sep 1, 2018, 4:33 PM +0200, Joel Serrano <joel(a)textplus.com>om>, wrote:
> > I think you are confused between:
> >
> > ds_select_dst() = get a node from the dispatcher group based on weight and
priority. Use in request_route.
> >
> > ds_next_dst() = get the next node from the list previously created with
ds_select_dst(). Use this in failure_route.
> >
> > Give it a try and let us know.
> >
> > > On Sat, Sep 1, 2018 at 00:27 Igor Olhovskiy
<igorolhovskiy(a)gmail.com> wrote:
> > > > Is there any way to select not first destination from
ds_select_dst()?
> > > > Could not find any way to do this...
> > > >
> > > > Regards, Igor
> > > > On Sep 1, 2018, 12:13 AM +0200, Joel Serrano
<joel(a)textplus.com>om>, wrote:
> > > > > Sorry, hit sent too soon.
> > > > >
> > > > > I meant ds_next_dst() or ds_next_domain():
> > > > >
> > > > >
https://kamailio.org/docs/modules/5.1.x/modules/dispatcher.html#idp44172212
> > > > >
> > > > > > On Fri, Aug 31, 2018 at 3:06 PM, Joel Serrano
<joel(a)textplus.com> wrote:
> > > > > > > Try with ds_select_next() in failure_route[]
> > > > > > >
> > > > > > > > On Fri, Aug 31, 2018 at 06:17 Igor Olhovskiy
<igorolhovskiy(a)gmail.com> wrote:
> > > > > > > > > Tried other way round
> > > > > > > > > All of this is happening in FAILURE ROUTE.
> > > > > > > > >
> > > > > > > > > ds_mark_dst("d");
> > > > > > > > > ds_select_dst("1", "0")
> > > > > > > > >
> > > > > > > > > But ds_select_dst still selecting for me
gateway already marked with "d" on previous step. Seems, it applying states
after packet sent. And any other way I can select new dst from set?
> > > > > > > > >
> > > > > > > > > Idea why I'm using ds_select_dst in
FAILURE_ROUTE and not ds_next_dst() that during failover timer dispatcher list could
change (yes, it could be extensive process) and I want to use most fresh version.
> > > > > > > > >
> > > > > > > > > > 2018-08-31 13:05 GMT+02:00 Igor
Olhovskiy <igorolhovskiy(a)gmail.com>om>:
> > > > > > > > > > > Made a pv_xavp_print() afrer
ds_select_dst
> > > > > > > > > > >
> > > > > > > > > > > Seems both destinations are
there.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc835288
(level=0)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: _dsctx_
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 1427193258
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 6
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:571]: xavp_print_list_content(): XAVP value:
<xavp:0x7f8bfc834ed8>
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc834ed8
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: cnt
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 7279890
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:555]: xavp_print_list_content(): XAVP value: 2
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc834ed8
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: _dispacher_dst_list_
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 508490514
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 6
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:571]: xavp_print_list_content(): XAVP value:
<xavp:0x7f8bfc834d78>
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc834d78
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: grp
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 7056653
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:555]: xavp_print_list_content(): XAVP value: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: uri
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 8122237
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 2
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:558]: xavp_print_list_content(): XAVP value: sip:172.28.0.12:5060
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc834d78
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: _dispacher_dst_list_
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 508490514
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 6
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:571]: xavp_print_list_content(): XAVP value:
<xavp:0x7f8bfc834f80>
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc834f80
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: grp
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 7056653
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:555]: xavp_print_list_content(): XAVP value: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: uri
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 8122237
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 2
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:558]: xavp_print_list_content(): XAVP value: sip:172.28.0.19:5060
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc834f80
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: _dsctx_
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 1427193258
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 6
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:571]: xavp_print_list_content(): XAVP value:
<xavp:0x7f8bfc833db0>
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc833db0
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: cnt
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 7279890
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:555]: xavp_print_list_content(): XAVP value: 2
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc833db0
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: _dispacher_dst_list_
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 508490514
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 6
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:571]: xavp_print_list_content(): XAVP value:
<xavp:0x7f8bfc833b80>
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc833b80
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: grp
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 7056653
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:555]: xavp_print_list_content(): XAVP value: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: uri
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 8122237
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 2
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:558]: xavp_print_list_content(): XAVP value: sip:172.28.0.19:5060
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc833b80
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: _dispacher_dst_list_
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 508490514
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 6
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:571]: xavp_print_list_content(): XAVP value:
<xavp:0x7f8bfc833960>
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc833960
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: grp
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 7056653
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:555]: xavp_print_list_content(): XAVP value: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: uri
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 8122237
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 2
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:558]: xavp_print_list_content(): XAVP value: sip:172.28.0.12:5060
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc833960
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: _dsctx_
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 1427193258
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 6
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:571]: xavp_print_list_content(): XAVP value:
<xavp:0x7f8bfc835670>
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc835670
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: cnt
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 7279890
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:555]: xavp_print_list_content(): XAVP value: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc835670
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: _dispacher_dst_list_
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 508490514
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 6
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:571]: xavp_print_list_content(): XAVP value:
<xavp:0x7f8bfc833580>
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:543]: xavp_print_list_content(): +++++ start XAVP list: 0x7f8bfc833580
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: grp
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 7056653
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 1
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:555]: xavp_print_list_content(): XAVP value: 2
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:547]: xavp_print_list_content(): *** XAVP name: uri
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:548]: xavp_print_list_content(): XAVP id: 8122237
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:549]: xavp_print_list_content(): XAVP value type: 2
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:558]: xavp_print_list_content(): XAVP value: sip:172.28.0.46:5060
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc833580
(level=1)
> > > > > > > > > > > 13(23) INFO: <core>
[core/xavp.c:583]: xavp_print_list_content(): ----- end XAVP list: 0x7f8bfc835288
(level=0)
> > > > > > > > > > > …
> > > > > > > > > > > call ds_next_dst() here
> > > > > > > > > > > …
> > > > > > > > > > > 13(23) WARNING: dispatcher
[dispatch.c:2285]: ds_update_dst(): no xavp uri field in next destination record
> > > > > > > > > > >
> > > > > > > > > > > > 2018-08-31 12:33 GMT+02:00
Daniel Tryba <d.tryba(a)pocos.nl>nl>:
> > > > > > > > > > > > > On Fri, Aug 31, 2018 at
12:11:53PM +0200, Igor Olhovskiy wrote:
> > > > > > > > > > > > > > Can I somehow dump
xavp_dst var to check if ds_select_dst is correct?
> > > > > > > > > > > > >
> > > > > > > > > > > > > You could use
pv_xavp_print():
> > > > > > > > > > > > >
https://www.kamailio.org/docs/modules/5.1.x/modules/pv.html#pv.f.pv_xavp_pr…
> > > > > > > > > > > > >
> > > > > > > > > > > > > If there is a better way
I'd like to know myself.
> > > > > > > > > > > > >
> > > > > > > > > > > > >
_______________________________________________
> > > > > > > > > > > > > Kamailio (SER) - Users
Mailing List
> > > > > > > > > > > > >
sr-users(a)lists.kamailio.org
> > > > > > > > > > > > >
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> > > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > Best regards,
> > > > > > > > > > > Igor
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Best regards,
> > > > > > > > > Igor
> > > > > > > > >
_______________________________________________
> > > > > > > > > Kamailio (SER) - Users Mailing List
> > > > > > > > > sr-users(a)lists.kamailio.org
> > > > > > > > >
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> > > > >
> > > > > _______________________________________________
> > > > > Kamailio (SER) - Users Mailing List
> > > > > sr-users(a)lists.kamailio.org
> > > > >
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> > > > _______________________________________________
> > > > Kamailio (SER) - Users Mailing List
> > > > sr-users(a)lists.kamailio.org
> > > >
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> > _______________________________________________
> > Kamailio (SER) - Users Mailing List
> > sr-users(a)lists.kamailio.org
> >
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users(a)lists.kamailio.org
>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users(a)lists.kamailio.org