<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>With debugger pdb.set_trace();<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>--Call--<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>> /usr/lib/python2.7/dist-packages/sylk/applications/conference/database.py(65)async_save_message()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>-> def async_save_message(sip_from, room_uri, cpim_body, cpim_content_type, cpim_sender, cpim_recipient, cpim_timestamp):(<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>Pdb) s<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>> /usr/lib/python2.7/dist-packages/sylk/applications/conference/database.py(66)async_save_message()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>-> print "Function async_save_message";<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>(Pdb) s<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>Function async_save_message<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>> /usr/lib/python2.7/dist-packages/sylk/applications/conference/database.py(67)async_save_message()<o:p></o:p></span></p><p class=MsoNormal><b><span style='color:#C00000'>-> if db.connection is not Null:<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='color:#C00000'>Pdb) print db<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='color:#C00000'>Null<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-size:10.0pt;color:gray'>(Pdb)<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> sipbeyondvoip-bounces@lists.ag-projects.com [mailto:sipbeyondvoip-bounces@lists.ag-projects.com] <b>On Behalf Of </b>Anil KARADAG<br><b>Sent:</b> Wednesday, October 17, 2012 9:54 AM<br><b>To:</b> sipbeyondvoip@lists.ag-projects.com<br><b>Subject:</b> [SIP Beyond VoIP] Sylk-server "db.connection is null" during thesaving message<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=TR>Hi all,<o:p></o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR>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.<o:p></o:p></span></p><p class=MsoNormal><span lang=TR>I added some debug logs to applications->conference->room.py and applications->conference->database.py<o:p></o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=TR style='color:#C00000'>applications->conference->database.py<o:p></o:p></span></b></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=TR style='font-size:10.0pt;color:black'>def initialize():<o:p></o:p></span></b></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    </span><span lang=TR style='font-size:10.0pt;color:#0070C0'>print "Function conference.database.initialize";<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>    print "ConferenceConfig.db_uri:%s" %(ConferenceConfig.db_uri)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    db = Database(ConferenceConfig.db_uri)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    if db.connection is not Null:<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>        print db.connection.__dict__<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    MessageHistory._connection = db.connection<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    db.create_table(MessageHistory)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=TR style='font-size:10.0pt;color:black'>def _save_message(sip_from, room_uri, cpim_body, cpim_content_type, cpim_sender, cpim_recipient, cpim_timestamp):<o:p></o:p></span></b></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    </span><span lang=TR style='font-size:10.0pt;color:#0070C0'>print "Function _save_message"<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    for x in xrange(0, 3):<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>        try:<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>            return MessageHistory(date              = datetime.datetime.utcnow(),<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>                                room_uri          = room_uri,<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>                                sip_from          = sip_from,<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>                                cpim_body         = cpim_body,<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>                                cpim_content_type = cpim_content_type,<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>                                cpim_sender       = cpim_sender,<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>                                cpim_recipient    = cpim_recipient,<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>                                cpim_timestamp    = cpim_timestamp)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>        except Exception, e:<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>            time.sleep(0.2)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    </span><span lang=TR style='font-size:10.0pt;color:#0070C0'>print "Could not save DB records: %s" %(e)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    log.error('Could not save DB records: %s' % e)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    return<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=TR style='font-size:10.0pt;color:black'>def async_save_message(sip_from, room_uri, cpim_body, cpim_content_type, cpim_sender, cpim_recipient, cpim_timestamp):<o:p></o:p></span></b></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    </span><span lang=TR style='font-size:10.0pt;color:#0070C0'>print "Function async_save_message";<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>    if db.connection is not Null:<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>        print "Function async_save_message: db.connection is not null";<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>        return deferToThread(_save_message, sip_from, room_uri, cpim_body, cpim_content_type, cpim_sender, cpim_recipient, cpim_timestamp)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>    else:<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>        print "db.connection is null"<o:p></o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=TR style='color:#C00000'>applications->conference->room.py<o:p></o:p></span></b></p><p class=MsoNormal><b><span lang=TR style='color:black'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span lang=TR style='font-size:10.0pt;color:black'>def _message_dispatcher(self):<o:p></o:p></span></b></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>        """Read from self.incoming_message_queue and dispatch the messages to other participants"""<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>       while True:<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>            session, message_type, data = self.incoming_message_queue.wait()<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>            print "Chat Message type: %s" %(message_type)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>            if message_type == 'message':<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>                message = data.message<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>                print "message.sender.uri=%s, session.remote_identity.uri=%s" %(message.sender.uri, session.remote_identity.uri)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>           </span><span lang=TR style='font-size:10.0pt;color:gray'> …<o:p></o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR>According to below logs, the variable “db” is set within <b><span style='color:#C00000'>conference.database.initialize</span></b><span style='color:#0070C0'> </span><span style='color:black'>function but the instance is overwritten because db.connection is null within </span><b><span style='color:#C00000'>async_save_message. <o:p></o:p></span></b></span></p><p class=MsoNormal><span lang=TR style='color:black'>So no messages is written to database.<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:black'><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='color:black'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=TR>root@trhtlangley35:/usr/lib/python2.7/dist-packages/sylk/applications/conference# /usr/bin/sylk-server --no-fork<o:p></o:p></span></b></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>Starting SylkServer 2.1.0, config=/etc/sylkserver/config.ini<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>using set_wakeup_fd<o:p></o:p></span></p><p class=MsoNormal><span lang=TR>…<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>Loaded applications: conference, xmppgateway, irc-conference<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>Function conference.database.initialize<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>ConferenceConfig.db_uri:sqlite:///var/lib/sylkserver/conference.sqlite<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>{'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>}<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>[conference] Bonjour publication started for service 'sipfocus'<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>[conference] Bonjour publication started for service 'sipuri'<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>twisted.web.server.Site starting on 58525<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>Starting factory <twisted.web.server.Site instance at 0x2f99680><o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>[conference] ScreenSharing listener started on 47.168.85.98:58525<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'><class 'sylk.applications.xmppgateway.xmpp.XMPPS2SServerFactory'> starting on 5269<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>Starting factory <sylk.applications.xmppgateway.xmpp.XMPPS2SServerFactory object at 0x2f6b810><o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>[xmpp] XMPP listener started on 47.168.85.98:5269<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>[conference] New incoming session from sip:odolu2@nl12taf.com<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>eventlib.twistedutil.protocol.SpawnFactory starting on 60606<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>Starting factory <eventlib.twistedutil.protocol.SpawnFactory instance at 0x2a53bd8><o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>(TCP Port 60606 Closed)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>Stopping factory <eventlib.twistedutil.protocol.SpawnFactory instance at 0x2a53bd8><o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>[conference] test test <sip:test@abc.com> started conference meetme@abc.com with chat<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>Function async_save_message<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>db.connection is null<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>Chat Message type: message<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>message.sender.uri=sip:test@abc.com, session.remote_identity.uri=sip:test@abc.com<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>Function async_save_message<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'>db.connection is null<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='color:black'>I tried the write operation on the python console, there is no problem.<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='color:black'><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='color:black'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=TR style='color:black'>root@trhtlangley35:~# python<o:p></o:p></span></b></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>[GCC 4.5.2] on linux2<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>Type "help", "copyright", "credits" or "license" for more information.<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>>>> import sylk<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>>>> from sylk.applications.conference.database import *<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>using set_wakeup_fd<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>>>> from sylk.applications.conference.configuration import ConferenceConfig<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:#0070C0'>>>> from sylk.database import Database<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>>>> </span><span lang=TR style='font-size:10.0pt;color:#C00000'>db = Database(ConferenceConfig.db_uri)</span><span lang=TR style='font-size:10.0pt;color:gray'><o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>>>> import datetime<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>>>> sylk.applications.conference.database._save_message("odolu2@nl12taf.com", "test", "test", "text", "odolu2@nl12taf.com", "odolu1@nl12taf.com", datetime.datetime.today())<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>error: [conference] Could not save DB records: No connection has been defined for this thread or process<o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>>>><o:p> </o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>>>> </span><span lang=TR style='font-size:10.0pt;color:#0070C0'>sylk.applications.conference.database.MessageHistory._connection = db.connection</span><span lang=TR style='font-size:10.0pt;color:gray'><o:p></o:p></span></p><p class=MsoNormal><span lang=TR style='font-size:10.0pt;color:gray'>>>> </span><span lang=TR style='font-size:10.0pt;color:#0070C0'>sylk.applications.conference.database._save_message("odolu2@nl12taf.com", "test", "test", "text", "odolu2@nl12taf.com", "odolu1@nl12taf.com", datetime.datetime.today())</span><span lang=TR style='font-size:10.0pt;color:gray'><o:p></o:p></span></p><p class=MsoNormal><b><span lang=TR style='color:#C00000'><MessageHistory 2 date='datetime.datetime...)' room_uri=u'test' sip_from="u'odolu2@nl12taf....'" cpim_body=u'test' cpim_content_type=u'text' cpim_sender="u'odolu2@nl12taf....'" cpim_recipient="u'odolu1@nl12taf....'" cpim_timestamp='datetime.datetime...)'><o:p></o:p></span></b></p><p class=MsoNormal><span lang=TR style='color:#0070C0'><o:p> </o:p></span></p></div></body></html>