asterisk / asterisk

The official Asterisk Project repository.
https://www.asterisk.org
Other
1.97k stars 924 forks source link

[bug]: ODBC_STORAGE not found in Asterisk 20.7 #698

Closed lukeescude closed 1 month ago

lukeescude commented 1 month ago

Severity

Major

Versions

20.7.0

Components/Modules

ODBC_STORAGE

Operating Environment

CentOS 7 x64

Frequency of Occurrence

Constant

Issue Description

I am unable to get ODBC_STORAGE to select in Menuselect, even though we have unixODBC, and sql connector packages installed (including the devel packages) in Asterisk 20.

Is there another dependency needed?

Relevant log output

No response

Asterisk Issue Guidelines

jcolp commented 1 month ago

How exactly are you trying to enable it? It was moved to appear as a separate module (app_voicemail_odbc) ages ago for building.

lukeescude commented 1 month ago

Ahhhh, trying that now.

We had it set like this: make menuselect.makeopts menuselect/menuselect \ --enable ODBC_STORAGE \ ... etc

We're having to go from Asterisk 16 to Asterisk 20 because of the new stir-shaken updates, and I suppose I didn't notice that in the path of changes between versions. Our newer platform doesn't use ODBC or anything native to asterisk for voicemail, so we hadn't run into the issue on new platform dev.

I will test that now.

lukeescude commented 1 month ago

Well, almost there... it doesn't load on start.

[Apr 8 15:35:11] NOTICE[357]: loader.c:1241 ast_unload_resource: Unloading module 'app_voicemail_odbc.so' that previously declined to load [Apr 8 15:35:11] WARNING[357]: app_voicemail_odbc.c:14689 actual_load_config: maxsilence should be less than minsecs or you may get empty messages

Registered application 'VoiceMail' Registered application 'VoiceMailMain' Registered application 'VMAuthenticate' Registered application 'VoiceMailPlayMsg' Registered application 'VMSayName' [Apr 8 15:35:11] ERROR[357]: pbx_functions.c:394 __ast_custom_function_register: Function VM_INFO already registered. Manager registered action VoicemailUsersList Manager registered action VoicemailUserStatus Manager registered action VoicemailRefresh Manager registered action VoicemailBoxSummary Manager registered action VoicemailMove Manager registered action VoicemailRemove Manager registered action VoicemailForward [Apr 8 15:35:11] ERROR[357]: app_voicemail_odbc.c:15939 load_module: Failure registering applications, functions or tests Unregistered application 'VoiceMail' Unregistered application 'VoiceMailMain' Unregistered application 'VMAuthenticate' Unregistered application 'VoiceMailPlayMsg' Unregistered application 'VMSayName' Manager unregistered action VoicemailUsersList Manager unregistered action VoicemailUserStatus Manager unregistered action VoicemailRefresh Manager unregistered action VoicemailBoxSummary Manager unregistered action VoicemailMove Manager unregistered action VoicemailRemove Manager unregistered action VoicemailForward

lukeescude commented 1 month ago

Apparently I have to unload app_voicemail first, that gives this error:

   > Unloading app_voicemail.so
   > Unregistered custom function VM_INFO

[Apr 8 15:37:41] WARNING[357]: loader.c:1265 ast_unload_resource: Firm unload failed for app_voicemail.so

But it does succeed and allow me to load app_voicemail_odbc.so afterward.

InterLinked1 commented 1 month ago

Apparently I have to unload app_voicemail first, that gives this error:

   > Unloading app_voicemail.so
   > Unregistered custom function VM_INFO

[Apr 8 15:37:41] WARNING[357]: loader.c:1265 ast_unload_resource: Firm unload failed for app_voicemail.so

But it does succeed and allow me to load app_voicemail_odbc.so afterward.

The issue here is that VM_INFO was still registered by app_voicemail, and even though the unload failed partially, it got past the part where it unregistered that, allowing you to proceed.

I feel like there is a mechanism for preventing modules from being simultaneously loaded, <conflicts> in the xmldocs? but not sure about that. Since this module is symlinked maybe that's why it's not there.

lukeescude commented 1 month ago

That makes sense, and adding noload => app_voicemail.so to modules.conf has now enabled app_voicemail_odbc to load on start.

OK so there's not really a bug here, just my lack of testing and RTFM-ing.

lukeescude commented 1 month ago

Do you guys think I can simply compile asterisk without app_voicemail entirely (but with app_voicemail_odbc), so that I don't have to modify modules.conf? This would allow us to implement a solution in production more safely.

seanbright commented 1 month ago

This might be more appropriate for https://community.asterisk.org/

lukeescude commented 1 month ago

@seanbright yep you're right, I'll close this.

Reference: https://www.asterisk.org/announcing-a-new-compile-option-for-app_voicemail-storage/