SkygearIO / chat

Skygear Plugin - Chat SDK
Apache License 2.0
17 stars 18 forks source link

Delete message api doesn't work #191

Closed carmenlau closed 6 years ago

carmenlau commented 6 years ago

version: 1.3.1 It looks like the lambda fail to serialize the records

NSErrorFailingURLKey=https://carmenlau.staging.skygeario.com/chat/delete_message, trace=Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/skygear/transmitter/common.py", line 40, in wrapper
    return dict(result=f(self, *args, **kwargs))
  File "/usr/lib/python3.6/site-packages/skygear/transmitter/common.py", line 100, in call_func
    return self.op(obj, param.get('args', {}))
  File "/usr/lib/python3.6/site-packages/skygear/transmitter/common.py", line 174, in op
    return func(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/chat/message_handlers.py", line 306, in delete_message_lambda
    return delete_message(message_id)
  File "/usr/lib/python3.6/site-packages/chat/message_handlers.py", line 272, in delete_message
    serialized_message = __serialize_message_record(record)
  File "/usr/lib/python3.6/site-packages/chat/message_handlers.py", line 27, in __serialize_message_record
    output = serialize_record(message)
  File "/usr/lib/python3.6/site-packages/skygear/encoding.py", line 48, in serialize_record
    return _RecordEncoder().encode(record)
  File "/usr/lib/python3.6/site-packages/skygear/encoding.py", line 160, in encode
    d = self.encode_dict(record.data)
AttributeError: 'dict' object has no attribute 'data'
, SKYOperationErrorHTTPStatusCodeKey=500, SKYErrorName=UnexpectedError, SKYErrorMessage='dict' object has no attribute 'data'}

When deleting message the last message in conversation

{
    "error": {
        "code": 10000,
        "info": {
            "trace": "Traceback (most recent call last):\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 1193, in _execute_context\n    context)\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/engine/default.py\", line 507, in do_execute\n    cursor.execute(statement, parameters)\npsycopg2.IntegrityError: insert or update on table \"conversation\" violates foreign key constraint \"fk_last_message_message__id\"\nDETAIL:  Key (last_message)=(message/DFF0FC6E-0227-4DD9-8E34-35469D0A49A0) is not present in table \"message\".\n\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n  File \"/usr/lib/python3.6/site-packages/skygear/transmitter/common.py\", line 40, in wrapper\n    return dict(result=f(self, *args, **kwargs))\n  File \"/usr/lib/python3.6/site-packages/skygear/transmitter/common.py\", line 100, in call_func\n    return self.op(obj, param.get('args', {}))\n  File \"/usr/lib/python3.6/site-packages/skygear/transmitter/common.py\", line 174, in op\n    return func(*args, **kwargs)\n  File \"/usr/lib/python3.6/site-packages/chat/message_handlers.py\", line 306, in delete_message_lambda\n    return delete_message(message_id)\n  File \"/usr/lib/python3.6/site-packages/chat/message_handlers.py\", line 266, in delete_message\n    new_last_message_id)\n  File \"/usr/lib/python3.6/site-packages/chat/message_handlers.py\", line 232, in _update_conversation_last_message\n    'new_last_message_id': 'message/' + new_last_message_id\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 942, in execute\n    return self._execute_text(object, multiparams, params)\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 1104, in _execute_text\n    statement, parameters\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 1200, in _execute_context\n    context)\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 1413, in _handle_dbapi_exception\n    exc_info\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/util/compat.py\", line 203, in raise_from_cause\n    reraise(type(exception), exception, tb=exc_tb, cause=cause)\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/util/compat.py\", line 186, in reraise\n    raise value.with_traceback(tb)\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 1193, in _execute_context\n    context)\n  File \"/usr/lib/python3.6/site-packages/sqlalchemy/engine/default.py\", line 507, in do_execute\n    cursor.execute(statement, parameters)\nsqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) insert or update on table \"conversation\" violates foreign key constraint \"fk_last_message_message__id\"\nDETAIL:  Key (last_message)=(message/DFF0FC6E-0227-4DD9-8E34-35469D0A49A0) is not present in table \"message\".\n [SQL: '\\n        UPDATE %(schema_name)s.conversation\\n        SET last_message = %(new_last_message_id)s\\n        WHERE _id = %(conversation_id)s\\n        '] [parameters: {'schema_name': <psycopg2.extensions.AsIs object at 0x7f8635429870>, 'conversation_id': 'a2cbe584-7160-4851-844e-f514801759c3', 'new_last_message_id': 'message/DFF0FC6E-0227-4DD9-8E34-35469D0A49A0'}] (Background on this error at: http://sqlalche.me/e/gkpj)\n"
        },
        "message": "(psycopg2.IntegrityError) insert or update on table \"conversation\" violates foreign key constraint \"fk_last_message_message__id\"\nDETAIL:  Key (last_message)=(message/DFF0FC6E-0227-4DD9-8E34-35469D0A49A0) is not present in table \"message\".\n [SQL: '\\n        UPDATE %(schema_name)s.conversation\\n        SET last_message = %(new_last_message_id)s\\n        WHERE _id = %(conversation_id)s\\n        '] [parameters: {'schema_name': <psycopg2.extensions.AsIs object at 0x7f8635429870>, 'conversation_id': 'a2cbe584-7160-4851-844e-f514801759c3', 'new_last_message_id': 'message/DFF0FC6E-0227-4DD9-8E34-35469D0A49A0'}] (Background on this error at: http://sqlalche.me/e/gkpj)",
        "name": "UnexpectedError"
    }
}