1. Kayako Download customers: we will continue to develop and support Kayako Download beyond July 2017, alongside the new Kayako for existing customers.

    Find out more.

Single Email Queue causing Critical error GETPROPERTY

Discussion in 'Technical chat' started by cesarin, Oct 19, 2016.

  1. cesarin

    cesarin Member

    Hello!

    Something went goofy 5 days ago in our support center.

    Out of nowhere, a single queue just plain refuses to work.

    I have 9 queues. 5 local ones connected to a local email server, and 4 remote ones located in a remote email server.

    Now, no account in the queues were loading. I suspected there was something preventing the queue from downloading and processing. and I was right.

    But first, I decided to Check the credentials and test under the QUEUE options. All worked fine. It detects 31 emails, 20 emails..etc..etc.. but they were not being downloaded.

    I decided to run the tasks manually to see which one fails. All worked fine until...

    Running the Scheduled task to "process" the emails via the support center.. freezes the process with a
    "[19-Oct-2016 17:23:06 America/Toronto] PHP Fatal error: Call to a member function GetProperty() on a non-object in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529" Error on the error.log file

    Using the direct url to process the parser( http://www.XXXXX.XXX/support/cron/index.php?/Parser/ParserMinute/POP3IMAP also froze the script after processing only one queue.

    I noticed that only one queue was mentioned in the list..
    I then proceeded to remove this problematic queue by deleting it and then recreating it.

    All the other queues suddenly started to work properly and to load the emails as expected.
    Except one... the problematic account that was recreated after deleting it.

    The Schedule task in the admin end still freezes and creates the same ticketemailparser.php error in the error.log
    The cron url works fine apart from the problematic email queue which is not processed.
    The passwords are fine, the usernames are fine, the settings are fine.

    What could be the problem?
    Any suggestions?

    Note that the logs do not show any errors.
    The only errors visible are the PHP file ( error_log )in the basedir.


    *edit*
    addenum to the error.

    Tried creating a ticket using that queue to force an email out of that queue towards a personal email account.
    The ticket system froze and then spit this error:
    Code:
    Uncaught Exception
    Connection to localhost:465 Timed Out in ./__swift/thirdparty/SwiftMailer/classes/SwiftMailer/Transport/StreamBuffer.php:169
    =================================================================================================================================
    
    #0 ./__swift/thirdparty/SwiftMailer/classes/SwiftMailer/Transport/AbstractSmtpTransport.php(400): SwiftMailer_Transport_StreamBuffer->readLine(0)
    #1 ./__swift/thirdparty/SwiftMailer/classes/SwiftMailer/Transport/AbstractSmtpTransport.php(291): SwiftMailer_Transport_AbstractSmtpTransport->_getFullResponse(0)
    #2 ./__swift/thirdparty/SwiftMailer/classes/SwiftMailer/Transport/AbstractSmtpTransport.php(119): SwiftMailer_Transport_AbstractSmtpTransport->_readGreeting()
    #3 ./__swift/thirdparty/SwiftMailer/classes/SwiftMailer/Mailer.php(80): SwiftMailer_Transport_AbstractSmtpTransport->start()
    #4 ./__swift/library/Mail/class.SWIFT_Mail.php(588): SwiftMailer_Mailer->send(Object(SwiftMailer_Message))
    #5 ./__apps/tickets/library/Ticket/class.SWIFT_TicketEmailDispatch.php(1288): SWIFT_Mail->SendMail(false, 20)
    #6 ./__apps/tickets/library/Ticket/class.SWIFT_TicketEmailDispatch.php(338): SWIFT_TicketEmailDispatch->Dispatch(2, '<font face="Ver...', 'test\n\n\n\n\nTicket...', 'support@XXXXX...', 'support@XXXXX...', 'cesar@XXXXX...', '', Array, Array, '', '')
    #7 ./__apps/tickets/staff/class.Controller_Ticket.php(4690): SWIFT_TicketEmailDispatch->DispatchStaffReply(Object(SWIFT_Staff), 'test\n', false, 'support@cranber...', Array)
    #8 [internal function]: Controller_Ticket->NewTicketSubmit('sendmail')
    #9 ./__swift/library/MVC/class.SWIFT_Controller.php(371): call_user_func_array(Array, Array)
    #10 ./__swift/library/App/class.SWIFT_App.php(176): SWIFT_Controller::Load(Object(SWIFT_Interface), Object(SWIFT_App), Object(SWIFT_Router), false)
    #11 ./__swift/library/class.SWIFT.php(16): SWIFT_App->ExecuteController(Object(SWIFT_Router))
    #12 ./__swift/library/class.SWIFT.php(16): SWIFT->Initialize()
    #13 ./__swift/swift.php(16): SWIFT::GetInstance()
    #14 ./staff/index.php(29): require_once('/home/cranberr/...')
    #15 {main}
    *edit 2*

    On further studies, It doesnt matter if I turn off SSL or not, the support center insists in using port 465 to send emails. Something is wrong here!
    Changing the global settings resolve the issues. Its like the support center is ignoring the queue's settings..

    Still the queue is not being processed and still hangs the FETCHEMAILS POP3/IMAP scheduled task.
     
    Last edited: Oct 19, 2016
  2. cesarin

    cesarin Member

    Update #2, I have updates Kayako to the latest version. It now spits these errors:
    Code:
    [20-Oct-2016 07:04:19 GMT] PHP Warning:  require_once(./__swift/config/config.php): failed to open stream: No such file or directory in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:19 GMT] PHP Fatal error:  require_once(): Failed opening required './__swift/config/config.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:20 GMT] PHP Warning:  require_once(./__swift/config/config.php): failed to open stream: No such file or directory in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:20 GMT] PHP Fatal error:  require_once(): Failed opening required './__swift/config/config.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:21 GMT] PHP Warning:  require_once(./__swift/config/config.php): failed to open stream: No such file or directory in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:21 GMT] PHP Fatal error:  require_once(): Failed opening required './__swift/config/config.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:22 GMT] PHP Warning:  require_once(./__swift/config/config.php): failed to open stream: No such file or directory in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:22 GMT] PHP Fatal error:  require_once(): Failed opening required './__swift/config/config.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:26 GMT] PHP Warning:  require_once(./__swift/config/config.php): failed to open stream: No such file or directory in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:26 GMT] PHP Fatal error:  require_once(): Failed opening required './__swift/config/config.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:26 GMT] PHP Warning:  require_once(./__swift/config/config.php): failed to open stream: No such file or directory in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:26 GMT] PHP Fatal error:  require_once(): Failed opening required './__swift/config/config.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:38 GMT] PHP Warning:  require_once(./__swift/config/config.php): failed to open stream: No such file or directory in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:38 GMT] PHP Fatal error:  require_once(): Failed opening required './__swift/config/config.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/XXXX/public_html/support/__swift/library/class.SWIFT.php on line 16
    [20-Oct-2016 07:04:45 GMT] PHP Fatal error:  Call to a member function Get() on a non-object in /home/XXXX/public_html/support/__swift/models/Settings/class.SWIFT_Settings.php on line 53
    [20-Oct-2016 07:04:55 GMT] PHP Fatal error:  Call to a member function Get() on a non-object in /home/XXXX/public_html/support/__swift/models/Settings/class.SWIFT_Settings.php on line 53
    [20-Oct-2016 07:05:02 GMT] PHP Fatal error:  Call to a member function Get() on a non-object in /home/XXXX/public_html/support/__swift/models/Settings/class.SWIFT_Settings.php on line 53
    any ideas?


    Edit #2.

    The problem is Kayako, I downloaded a simple PHP script for sending via SMTP with SSL.
    And it sends the email fine with no issues.
     
    Last edited: Oct 20, 2016
  3. supportskins

    supportskins Kayako Guru

    The error says the config.php is not found. Check if the file exists under __swift/config directory and if found check if the database settings are correct.
     
  4. cesarin

    cesarin Member

    That error was during the installation/update to the latest version. What worries me is the next error. (sorry for not being clear)
    the "configuration not found" no longer appears.

    The particular error is the "get property" error.
     
  5. supportskins

    supportskins Kayako Guru

    Did you check the MySQL access information? Which version of PHP and MySQL are you running? And on which version of Kayako are you getting this error?
     
  6. Phil R

    Phil R Established Member

  7. cesarin

    cesarin Member

    Running version 4.75.1
    PHP version was 5.5.X , Server has been updated and is now running 5.6.27. MySql is running on 5.5 (planning on updating tonight)
    This is baffling because I have not changed any settings other than the default ones that worked before. (note, we have not updated from Classic. We always had Version 4.X and upgrade finished with no errors)

    its currently running MYSQLi. Changed to MYSQL and the error changed to:

    Code:
    [21-Oct-2016 11:10:09 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    [21-Oct-2016 11:15:07 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    [21-Oct-2016 11:20:07 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    [21-Oct-2016 11:25:07 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    [21-Oct-2016 11:29:39 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    Changed MYSQL layer to ADODB.
    Error code still the same..

    Code:
    [21-Oct-2016 11:35:06 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    [21-Oct-2016 11:35:47 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    
    on Config also changed 127.0.0.1 address to localhost. No change in errors (still fails to process the Fetch emails (POP3/IMAP) with the above error).
     
    Last edited: Oct 21, 2016
  8. cesarin

    cesarin Member

    More info on MYSQL:

    MySQL Support
    enabled
    Active Persistent Links 0
    Active Links 0
    Client API version 5.5.52
    MYSQL_MODULE_TYPE external
    MYSQL_SOCKET /var/lib/mysql/mysql.sock
    MYSQL_INCLUDE -I/usr/include/mysql
    MYSQL_LIBS -L/usr/lib64 -lmysqlclient

    Directive Local Value Master Value
    mysql.allow_local_infile On On
    mysql.allow_persistent On On
    mysql.connect_timeout 60 60
    mysql.default_host no value no value
    mysql.default_password no value no value
    mysql.default_port no value no value
    mysql.default_socket /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock
    mysql.default_user no value no value
    mysql.max_links Unlimited Unlimited
    mysql.max_persistent Unlimited Unlimited
    mysql.trace_mode Off Off

    mysqli
    MysqlI Support enabled
    Client API library version 5.5.52
    Active Persistent Links 0
    Inactive Persistent Links 0
    Active Links 0
    Client API header version 5.5.52
    MYSQLI_SOCKET /var/lib/mysql/mysql.sock
    Directive Local Value Master Value
    mysqli.allow_local_infile On On
    mysqli.allow_persistent On On
    mysqli.default_host no value no value
    mysqli.default_port 3306 3306
    mysqli.default_pw no value no value
    mysqli.default_socket /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock
    mysqli.default_user no value no value
    mysqli.max_links Unlimited Unlimited
    mysqli.max_persistent Unlimited Unlimited
    mysqli.reconnect Off Off
    mysqli.rollback_on_cached_plink Off Off

    mysqlnd
    mysqlnd enabled
    Version mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
    Compression supported
    core SSL supported
    extended SSL supported
    Command buffer size 4096
    Read buffer size 32768
    Read timeout 31536000
    Collecting statistics Yes
    Collecting memory statistics No
    Tracing n/a
    Loaded plugins mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password
    API Extensions pdo_mysq
     
    Last edited: Oct 21, 2016
  9. supportskins

    supportskins Kayako Guru

  10. cesarin

    cesarin Member

  11. Gary McGrath

    Gary McGrath Staff Member

    Hey Cesarin,

    Have you created a case with us at support.kayako.com about this? that error generally means there was an issue with connectivity between Kayako and your SQL server. But it is also possible that maybe your MySQL "went away" while trying to update a table. We can login to your server and see if we can spot what is happening in your case

    Gary
     
  12. cesarin

    cesarin Member

    I Gary, unfortunately Kayako is now asking for an exorbitant fee for the renewal of the support service (1000 USD+). And my boss decided to discontinue.
    Anyway, I found that there are serious problems with the server.
    Our host had installed a flawed and exploitable shell version of REDHAT 6.X
    cPanel found out that some repositories have been removed along the subscription key for REDHAT's repos. Meaning our server has been unable to update critical stuff.
    I'm now in the process of finding a better host (had way too much problems with this one already)
     
  13. cesarin

    cesarin Member

    Just to update.. I'm still receiving errors, but only on 2 specified Queues. I have no idea why its only on these two queues, the passwords are fine, the other queues work fine. Something is preventing only THESE specified accounts!
    If I disable these 2 accounts, the support center processes the email queues perfectly fine with no error.
    But If I enable any of these accounts. The POP fetching always freezes. Even the output window cuts down after the email address...

    Example, instead of saying: Running parser for Queue ID '16':Mydude@gmail.com Queue Total: 0, Accepted: 0, Rejected: 0
    It just cuts down to:
    Running parser for Queue ID '16':MyDyde @gmail.com (note the missing queue total, accepted, rejected..etc..) The emails have more than 20 emails. And testing the accounts in the email queue setup, connects correctly and checks the PROPER number of emails.
     
  14. Gary McGrath

    Gary McGrath Staff Member

    If it is cutting out like that, your PHP error logs should be listing the error PHP had?

    Gary
     
  15. cesarin

    cesarin Member

    Same as above..
    Code:
    31-Oct-2016 13:35:09 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    [31-Oct-2016 15:38:36 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    [31-Oct-2016 15:47:25 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    [31-Oct-2016 15:51:45 America/Toronto] PHP Fatal error:  Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529
    
    The weird part..
    I have 7 local email accounts, this only happens with 2, on 2 different domains (cpanel WHM)
    if any of these two are enabled, the Parser simply cuts down and stops processing the rest of the emails in the queue.
    No emails are downloaded.
    I can check just fine in the QUEUE settings (admin interface -> email queues -> POP3/IMAP ). The check settings work fine and return the number of emails.
    I have tried both IMAP, SSL, TLS, SSL2, SSL3, POP. All act the same.

    Its like Kayako just out of nowhere hates these 2 accounts.
     
  16. Gary McGrath

    Gary McGrath Staff Member

    are there any emails in those queues? have you tried to clear them out, and run it when it's empty?

    Gary
     
  17. cesarin

    cesarin Member

    Yes, they have a ton of emails.
    And... No?, because these emails are very important for the company I manage them?
     
  18. cesarin

    cesarin Member

    Update on the emails.. something very strange is going on.

    I've made a backup of the emails in one of the affected accounts.

    things that are strange:

    1. courierimapuiddb file is missing.
    2. Deleting some of the emails until ONE or TWO emails are there.. makes the email queue work and process said single email.
    3. I have made some combinations and deleted some emails there and here.. and restored others.. same error until there is ONLY A SINGLE or TWO EMAILs are the inbox of the affected box.
    It seems like the QUEUE system cant make a list of the emails contained in the inbox. Why only these two accounts? is the missing courierimap file affect this?
     
  19. cesarin

    cesarin Member

    Update on the upper problem.

    I finally found what causes the issue.

    Our system uses "numeric increasing" ticket ID numbers (1, 2 , 3 ,4 etc..)

    So heres the deal, that single email that was failing? I had a VALID TICKET NUMBER. but the number was not a TICKED ID .

    Example, client was saying "My client number is 56464"
    If there is a ticket with this ID number AND the client/queue mismatches (aka, is not the same ) .. it causes the error of:
    31-Oct-2016 13:35:09 America/Toronto] PHP Fatal error: Call to a member function GetProperty() on boolean in /home/XXXXXX/public_html/support/__apps/tickets/library/EmailParser/class.SWIFT_TicketEmailParser.php on line 529

    Eliminating this email in question resolves the issue and the QUEUE proceeds as expected.

    So what I think it happens:

    1. Client/Member emails ANY queue with any numeric value in the subject.
    2. The ticket system HAS A MATCHING TICKET ID with said numeric value.
    3. The queue on the matching ticket ID is DIFFERENT from the receiving queue.
    4. ERROR with GET PROPERTY.
    5. To mitigate.. change to random long form numbers.
     
    Last edited: Nov 1, 2016
  20. Gary McGrath

    Gary McGrath Staff Member

    hmm.. yeah, that is what I suspected ( an email in the queue was causing the problem )

    So for this, you could alter the ticket ID matching line to stop looking for those simple ID's.

    This is one of the things we improved in the new Kayako, where the case ID is part of the email header, and not required in the subject/body of the contents

    gary
     

Share This Page