[SIP Beyond VoIP] Sylk-server "db.connection is null" during the saving message
Saúl Ibarra Corretgé
saul at ag-projects.com
Wed Oct 17 10:28:13 CEST 2012
Hi,
This is the applied patch: http://sylkserver.ag-projects.com/projects/sylkserver/repository/revisions/387/diff/sylk/applications/conference/database.py
You can get it with darcs pull if you already fetched SylkServer through darcs.
Regards,
On Oct 17, 2012, at 9:59 AM, Anil KARADAG wrote:
> Hi Saúl,
>
>
> Thanks for reply, please sent me the bug info;
>
> - issue number
> - issue link
>
>
> to see diff for verification.
>
>
> -----Original Message-----
> From: Saúl Ibarra Corretgé [mailto:saul at ag-projects.com]
> Sent: Wednesday, October 17, 2012 10:56 AM
> To: Anil KARADAG
> Cc: sipbeyondvoip at lists.ag-projects.com
> Subject: Re: [SIP Beyond VoIP] Sylk-server "db.connection is null" during the saving message
>
> Hi Anil,
>
> Thanks for the report! I pushed a fix for this to our darcs repository, it will be part of the next release. Can you confirm it works as expected for you?
>
>
> Regards,
>
>
> On Oct 17, 2012, at 8:54 AM, Anil KARADAG wrote:
>
>> Hi all,
>>
>>
>>
>> I use sylk-server 2.1.0 on ubuntu 11.04. I realize that sylk-server does not write chat message to the pre-defined database.
>> I added some debug logs to applications->conference->room.py and applications->conference->database.py
>>
>>
>> applications->conference->database.py
>>
>> def initialize():
>> print "Function conference.database.initialize";
>> print "ConferenceConfig.db_uri:%s" %(ConferenceConfig.db_uri)
>> db = Database(ConferenceConfig.db_uri)
>> if db.connection is not Null:
>> print db.connection.__dict__
>> MessageHistory._connection = db.connection
>> db.create_table(MessageHistory)
>>
>>
>> def _save_message(sip_from, room_uri, cpim_body, cpim_content_type, cpim_sender, cpim_recipient, cpim_timestamp):
>> print "Function _save_message"
>> for x in xrange(0, 3):
>> try:
>> return MessageHistory(date = datetime.datetime.utcnow(),
>> room_uri = room_uri,
>> sip_from = sip_from,
>> cpim_body = cpim_body,
>> cpim_content_type = cpim_content_type,
>> cpim_sender = cpim_sender,
>> cpim_recipient = cpim_recipient,
>> cpim_timestamp = cpim_timestamp)
>> except Exception, e:
>> time.sleep(0.2)
>> print "Could not save DB records: %s" %(e)
>> log.error('Could not save DB records: %s' % e)
>> return
>>
>> def async_save_message(sip_from, room_uri, cpim_body, cpim_content_type, cpim_sender, cpim_recipient, cpim_timestamp):
>> print "Function async_save_message";
>> if db.connection is not Null:
>> print "Function async_save_message: db.connection is not null";
>> return deferToThread(_save_message, sip_from, room_uri, cpim_body, cpim_content_type, cpim_sender, cpim_recipient, cpim_timestamp)
>> else:
>> print "db.connection is null"
>>
>>
>> applications->conference->room.py
>>
>> def _message_dispatcher(self):
>> """Read from self.incoming_message_queue and dispatch the messages to other participants"""
>> while True:
>> session, message_type, data = self.incoming_message_queue.wait()
>> print "Chat Message type: %s" %(message_type)
>> if message_type == 'message':
>> message = data.message
>> print "message.sender.uri=%s, session.remote_identity.uri=%s" %(message.sender.uri, session.remote_identity.uri)
>>
>> ...
>>
>>
>>
>> According to below logs, the variable "db" is set within conference.database.initialize function but the instance is overwritten because db.connection is null within async_save_message.
>> So no messages is written to database.
>>
>>
>> root at trhtlangley35:/usr/lib/python2.7/dist-packages/sylk/applications/conference# /usr/bin/sylk-server --no-fork
>> Starting SylkServer 2.1.0, config=/etc/sylkserver/config.ini
>> using set_wakeup_fd
>> ...
>> Loaded applications: conference, xmppgateway, irc-conference
>> Function conference.database.initialize
>> ConferenceConfig.db_uri:sqlite:///var/lib/sylkserver/conference.sqlite
>> {'debugThreading': False, 'module': <module 'sqlite3' from '/usr/lib/python2.7/sqlite3/__init__.pyc'>, 'debugOutput': False, 'style': None, 'debugWriter': <sqlobject.dbconnection.ConsoleWriter instance at 0x2f6a3f8>, '_connectionCount': 1, 'cache': <sqlobject.cache.CacheSet object at 0x2f96990>, 'filename': '/var/lib/sylkserver/conference.sqlite', 'autoCommit': True, '_connOptions': {'isolation_level': None, 'detect_types': 1}, '_threadPool': {}, 'registry': None, '_threadOrigination': {}, 'SQLObject': <sqlobject.dbconnection.ConnWrapper object at 0x2f96a10>, 'name': None, 'using_sqlite2': True, '_pool': [], 'MessageHistory': <sqlobject.dbconnection.ConnWrapper object at 0x2f96a50>, 'doCache': True, '_memory': False, 'debug': False, 'use_table_info': False, '_binaryType': <type 'buffer'>, '_connectionNumbers': {}, '_poolLock': <thread.lock object at 0x213aeb0>}
>> [conference] Bonjour publication started for service 'sipfocus'
>> [conference] Bonjour publication started for service 'sipuri'
>> twisted.web.server.Site starting on 58525
>> Starting factory <twisted.web.server.Site instance at 0x2f99680>
>> [conference] ScreenSharing listener started on 47.168.85.98:58525
>> <class 'sylk.applications.xmppgateway.xmpp.XMPPS2SServerFactory'> starting on 5269
>> Starting factory <sylk.applications.xmppgateway.xmpp.XMPPS2SServerFactory object at 0x2f6b810>
>> [xmpp] XMPP listener started on 47.168.85.98:5269
>> [conference] New incoming session from sip:odolu2 at nl12taf.com
>> eventlib.twistedutil.protocol.SpawnFactory starting on 60606
>> Starting factory <eventlib.twistedutil.protocol.SpawnFactory instance at 0x2a53bd8>
>> (TCP Port 60606 Closed)
>> Stopping factory <eventlib.twistedutil.protocol.SpawnFactory instance at 0x2a53bd8>
>> [conference] test test <sip:test at abc.com> started conference meetme at abc.com with chat
>> Function async_save_message
>> db.connection is null
>> Chat Message type: message
>> message.sender.uri=sip:test at abc.com, session.remote_identity.uri=sip:test at abc.com
>> Function async_save_message
>> db.connection is null
>>
>>
>>
>>
>> I tried the write operation on the python console, there is no problem.
>>
>>
>> root at trhtlangley35:~# python
>> Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
>> [GCC 4.5.2] on linux2
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> import sylk
>>>>> from sylk.applications.conference.database import *
>> using set_wakeup_fd
>>>>> from sylk.applications.conference.configuration import ConferenceConfig
>>>>> from sylk.database import Database
>>>>> db = Database(ConferenceConfig.db_uri)
>>>>> import datetime
>>>>> sylk.applications.conference.database._save_message("odolu2 at nl12taf.com", "test", "test", "text", "odolu2 at nl12taf.com", "odolu1 at nl12taf.com", datetime.datetime.today())
>> error: [conference] Could not save DB records: No connection has been defined for this thread or process
>>>>>
>>>>> sylk.applications.conference.database.MessageHistory._connection = db.connection
>>>>> sylk.applications.conference.database._save_message("odolu2 at nl12taf.com", "test", "test", "text", "odolu2 at nl12taf.com", "odolu1 at nl12taf.com", datetime.datetime.today())
>> <MessageHistory 2 date='datetime.datetime...)' room_uri=u'test' sip_from="u'odolu2 at nl12taf....'" cpim_body=u'test' cpim_content_type=u'text' cpim_sender="u'odolu2 at nl12taf....'" cpim_recipient="u'odolu1 at nl12taf....'" cpim_timestamp='datetime.datetime...)'>
>>
>> _______________________________________________
>> SIPBeyondVoIP mailing list
>> SIPBeyondVoIP at lists.ag-projects.com
>> http://lists.ag-projects.com/mailman/listinfo/sipbeyondvoip
>
> --
> Saúl Ibarra Corretgé
> AG Projects
>
>
>
--
Saúl Ibarra Corretgé
AG Projects
More information about the SIPBeyondVoIP
mailing list