[asterisk-bugs] [Asterisk 0015624]: res_ais, communication ok, but wrong state send and receive.

Asterisk Bug Tracker noreply at bugs.digium.com
Sat Aug 1 05:43:54 CDT 2009


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=15624 
====================================================================== 
Reported By:                ffossard
Assigned To:                russell
====================================================================== 
Project:                    Asterisk
Issue ID:                   15624
Category:                   Resources/General
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     assigned
Asterisk Version:           1.6.1.1 
Regression:                 No 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2009-07-31 09:33 CDT
Last Modified:              2009-08-01 05:43 CDT
====================================================================== 
Summary:                    res_ais, communication ok, but wrong state send and
receive.
Description: 
I try to use res_ais for sharing devstate between two Asterisk.
Servers communicate, but the devstate don’t change on « other »
server, because the first server sends a wrong state.


There is two identical test servers, vm-test1 and vm-test2.

Configuration files :

vm-test1:~# cat /etc/asterisk/ais.conf
[device_state]
type=event_channel
publish_event=device_state
subscribe_event=device_state

vm-test2:~# cat /etc/asterisk/ais.conf
[device_state]
type=event_channel
publish_event=device_state
subscribe_event=device_state
 

vm-test1:~# cat /etc/asterisk/extensions.conf
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
language=fr

[globals]

[devstate_test]
exten => 1234,hint,Custom:mystate

exten => set_inuse,1,Set(DEVICE_STATE(Custom:mystate)=INUSE)
exten => set_not_inuse,1,Set(DEVICE_STATE(Custom:mystate)=NOT_INUSE)
exten => check,1,NoOp(Custom:mystate is ${DEVICE_STATE(Custom:mystate)})

 

vm-test2:~# cat /etc/asterisk/extensions.conf
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
language=fr

[globals]

[devstate_test]
exten => 1234,hint,Custom:mystate
 
exten => set_inuse,1,Set(DEVICE_STATE(Custom:mystate)=INUSE)
exten => set_not_inuse,1,Set(DEVICE_STATE(Custom:mystate)=NOT_INUSE)
exten => check,1,NoOp(Custom:mystate is ${DEVICE_STATE(Custom:mystate)})
 


After, I verify « connection » between servers :

vm-test1:~# asterisk -vvvvvvvvvvvvvr
vm-test1*CLI> ais clm show members
vm-test1*CLI>
=============================================================
=== Cluster Members =========================================
=============================================================
===
=== ---------------------------------------------------------
=== Node Name: 10.78.99.253
=== ==> ID: 0xfd634e0a
=== ==> Address: 10.78.99.253
=== ==> Member: Yes
=== ---------------------------------------------------------
===
=== ---------------------------------------------------------
=== Node Name: 10.78.99.252
=== ==> ID: 0xfc634e0a
=== ==> Address: 10.78.99.252
=== ==> Member: Yes
=== ---------------------------------------------------------
===
=============================================================
 

vm-test1*CLI> ais evt show event channels
vm-test1*CLI>
=============================================================
=== Event Channels ==========================================
=============================================================
===
=== ---------------------------------------------------------
=== Event Channel Name: device_state
=== ==> Publishing Event Type: device_state
=== ==> Subscribing to Event Type: device_state
=== ---------------------------------------------------------
===
=============================================================

vm-test1*CLI> core show settings
Entity ID:                   00:0c:29:ef:e5:63

 
 

vm-test2:~# asterisk -vvvvvvvvvvvvvr
vm-test2*CLI> ais clm show members
vm-test2*CLI>
=============================================================
=== Cluster Members =========================================
=============================================================
===
=== ---------------------------------------------------------
=== Node Name: 10.78.99.252
=== ==> ID: 0xfc634e0a
=== ==> Address: 10.78.99.252
=== ==> Member: Yes
=== ---------------------------------------------------------
===
=== ---------------------------------------------------------
=== Node Name: 10.78.99.253
=== ==> ID: 0xfd634e0a
=== ==> Address: 10.78.99.253
=== ==> Member: Yes
=== ---------------------------------------------------------
===
=============================================================
 
 
 
vm-test2*CLI> ais evt show event channels
vm-test2*CLI>
=============================================================
=== Event Channels ==========================================
=============================================================
===
=== ---------------------------------------------------------
=== Event Channel Name: device_state
=== ==> Publishing Event Type: device_state
=== ==> Subscribing to Event Type: device_state
=== ---------------------------------------------------------
===
=============================================================
 
vm-test2*CLI> core show settings
Entity ID:                   00:0c:29:e9:1b:81
 
 


vm-test1*CLI> core show hints
vm-test1*CLI>
    -= Registered Asterisk Dial Plan Hints =-
                   1234 at devstate_test       : Custom:mystate       
State:Idle     Watchers  0
----------------
1 hints registered

 

vm-test2*CLI> core show hints
vm-test2*CLI>
    -= Registered Asterisk Dial Plan Hints =-
                   1234 at devstate_test       : Custom:mystate     
State:Idle     Watchers  0
----------------
1 hints registered

 
Same devstate in same state, ok.

I modify the devstate on first server:

vm-test1*CLI> console dial set_inuse at devstate_test
[Jul 23 17:39:56] WARNING[3112]: chan_oss.c:492 setformat: Unable to
re-open DSP device /dev/dsp: No such file or directory
[Jul 23 17:39:56] DEBUG[3119]: pbx.c:3179 pbx_extension_helper: Launching
'Set'
    -- Executing [set_inuse at devstate_test:1] Set("Console/dsp",
"DEVICE_STATE(Custom:mystate)=INUSE") in new stack
[Jul 23 17:39:56] NOTICE[3112]: console_video.c:133 console_video_start:
voice only, console video support not present
    -- Auto fallthrough, channel 'Console/dsp' status is 'UNKNOWN'
[Jul 23 17:39:56] DEBUG[3119]: channel.c:1549 ast_softhangup_nolock:
Soft-Hanging up channel 'Console/dsp'
[Jul 23 17:39:56] DEBUG[3119]: channel.c:1644 ast_hangup: Hanging up
channel 'Console/dsp'
 << Hangup on console >>
[Jul 23 17:39:56] DEBUG[3087]: devicestate.c:680 handle_devstate_change:
Processing device state change for 'Custom:mystate'
[Jul 23 17:39:56] DEBUG[3087]: devicestate.c:637 process_collection:
Aggregate devstate result is 1
[Jul 23 17:39:56] DEBUG[3087]: devicestate.c:659 process_collection:
Aggregate state for device 'Custom:mystate' has changed to 'Not in use'
[Jul 23 17:39:56] DEBUG[3066]: ais/evt.c:184 ast_event_cb: Got an event to
forward
[Jul 23 17:39:56] DEBUG[3066]: ais/evt.c:239 ast_event_cb: Returning here
(event_free)
[Jul 23 17:39:56] DEBUG[3066]: ais/evt.c:184 ast_event_cb: Got an event to
forward
[Jul 23 17:39:56] DEBUG[3087]: devicestate.c:680 handle_devstate_change:
Processing device state change for 'Console/dsp'
[Jul 23 17:39:56] DEBUG[3087]: devicestate.c:637 process_collection:
Aggregate devstate result is 1
[Jul 23 17:39:56] DEBUG[3087]: devicestate.c:659 process_collection:
Aggregate state for device 'Console/dsp' has changed to 'Not in use'
[Jul 23 17:39:56] DEBUG[3066]: ais/evt.c:239 ast_event_cb: Returning here
(event_free)

 
vm-test1*CLI> core show hints
vm-test1*CLI>
    -= Registered Asterisk Dial Plan Hints =-
                   1234 at devstate_test       : Custom:mystate       
State:InUse           Watchers  0
----------------
- 1 hints registered

 

Ok for server test1, but strange message « Aggregate state for device
'Custom:mystate' has changed to 'Not in use' »
 

At the same time, on serveur vm-test2 :

vm-test2*CLI>
[Jul 23 17:38:40] DEBUG[7589]: devicestate.c:680 handle_devstate_change:
Processing device state change for 'Custom:mystate'
[Jul 23 17:38:40] DEBUG[7589]: devicestate.c:637 process_collection:
Aggregate devstate result is 1
[Jul 23 17:38:40] DEBUG[7589]: devicestate.c:659 process_collection:
Aggregate state for device 'Custom:mystate' has changed to 'Not in use'
[Jul 23 17:38:40] DEBUG[7572]: ais/evt.c:184 ast_event_cb: Got an event to
forward
[Jul 23 17:38:40] DEBUG[7572]: ais/evt.c:188 ast_event_cb: Returning here
[Jul 23 17:38:40] DEBUG[7572]: ais/evt.c:184 ast_event_cb: Got an event to
forward
[Jul 23 17:38:40] DEBUG[7572]: ais/evt.c:188 ast_event_cb: Returning here
[Jul 23 17:38:40] DEBUG[7589]: devicestate.c:680 handle_devstate_change:
Processing device state change for 'Console/dsp'
[Jul 23 17:38:40] DEBUG[7589]: devicestate.c:637 process_collection:
Aggregate devstate result is 1
[Jul 23 17:38:40] DEBUG[7589]: devicestate.c:659 process_collection:
Aggregate state for device 'Console/dsp' has changed to 'Not in use'
 

vm-test2*CLI> core show hints
vm-test2*CLI>
    -= Registered Asterisk Dial Plan Hints =-
                   1234 at devstate_test       : Custom:mystate        
State:Idle            Watchers  0
----------------
-  1 hints registered



Same wrong state is receive, then no change.

====================================================================== 

---------------------------------------------------------------------- 
 (0108489) svnbot (reporter) - 2009-08-01 05:43
 https://issues.asterisk.org/view.php?id=15624#c108489 
---------------------------------------------------------------------- 
Repository: asterisk
Revision: 209835

U   trunk/main/event.c

------------------------------------------------------------------------
r209835 | russell | 2009-08-01 05:43:54 -0500 (Sat, 01 Aug 2009) | 6 lines

Fix ast_event_queue_and_cache() to actually do the cache() part.

(closes issue https://issues.asterisk.org/view.php?id=15624)
Reported by: ffossard
Tested by: russell

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=209835 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-08-01 05:43 svnbot         Checkin                                      
2009-08-01 05:43 svnbot         Note Added: 0108489                          
======================================================================




More information about the asterisk-bugs mailing list