Describe the bug
The current flow of updating the user profile image inside Open Event Android is:
POST /v1/upload/image (This works fine)PATCH /v1/users/{user_id} (This returns 500 INTERNAL SERVER ERROR)Please take a look
Stacktrace
V/InputMethodManager: Reporting focus gain, without startInput
V/AudioManager: playSoundEffect effectType: 0
D/OkHttp: --> POST https://api.eventyay.com/v1/upload/image
D/OkHttp: Content-Type: application/json; charset=UTF-8
Content-Length: 7104
Authorization: JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NTc3ODMyNzYsImlhdCI6MTU1NzY5Njg3NiwibmJmIjoxNTU3Njk2ODc2LCJpZGVudGl0eSI6NzYyMn0.TfG7lbkevyVBdFzEyBpvUPzy8WT2eabH_CgdgSSou3U
D/OkHttp: {"data":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAB4AHgDASIA\nAhEBAxEB/8QAHwABAAIDAAMAAwAAAAAAAAAAAAkKBwgLAQMGAgQF/8QANxAAAgICAgEDAwIEAwcF\nAAAABAUDBgIHAAEICRMUERIVCiIWFxgkGSEyIzlYh6e31yUxNDVW/8QAFAEBAAAAAAAAAAAAAAAA\nAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AOf/AMcccBxxxwHHMlao05tT\nelvEoWn6Badi20zGGb8NVlJLOQACZkvUZOnhUWHwa9XBGLZaO0sr4pbX1HzYJWrIODP3eTaaM/T/\nAG+Lgvhcb42rTtL4EihlQVWuLM9qW8efsqfBgqsMwjisU5PPGLHDMGwr1ovQs2RP2zwwZD54SBAD\nxy6BQPQl8Fqc0lYWOLcG1xZB+4cUV92EOtUjy99Zf3cEur67rd53P13l13jgQ6IF/Zj1kPl+/wC/\nMX+Dl6cP/Dn/ANXd7/8Ak/gUXeOXQL/6EvgtcWkTCuR7g1QLGN1DkjoWwR2ameXrrH+8nl2hXdjv\nPf77677ywHdji9/dl1iPh+z7Iu95/p/t9U5fM40RtSnbqwGEKJnq1hW56rt5BHzIYgVdekNc2amt\n5OxJZSTWFhtdHHi7GywHHIznjjxCAPjmSNq6e2lo23l0Pb9BtOuraHjNN2mtSgpXMcBExPU4uUxE\n2HQb+vFsFbEdZZEZLBC2+HPKrYlw4e5zG/AccccBxxxwHHHHAclx9On0pr75owfzQvjdpq3x8BZ4\ngi2MddFNa9nlr2WI9gV67gY49rw1aqMc9Wy2CzFapl1n6jSKUNuPVW8SsefSm9OeDzRvbe/bQ7ZA\n+PmrWq8axCA9MQDdn2yWLFlDrxW/G6gwUqgl+QjPYLNafjZgE7ZCpRRqz7YNb6tdTSJE1aTKK5XF\nCxBXkCwBIhQpABVSZImVCxAq1ChWBFACtWLQYIAwAA4IRQxYYhx4o4Y8MMQxjo/QGnPG2kQ650hQ\nUuvqjEaUzmXq8jjDWbQ3Lrsho+fuS2VhsbPuHCAKJi+asjR1Ya9SPPEsXACD5h4565poR4ZSCJY4\nIII85p55s8YoYYYse85JZZM+8cI448Mcs8888uscMeu8su+uuu++B7OOVU/NP119gubEzo3hnEJS\nakkcFDd7osKRbYLPd4A8hY4S6xT7UoMR1KuGTxs+8M7Ire2ZyqITnZDUNlCxTyQ9/wBc3mj+R/Kf\n1Z+R3yfm/P8Aa/nRsPtd7/v/ACPb/Ed2H8T8L3P2/jfhfjvY/tfi/G/2XA6GHHKrHhR66t/VWRXQ\n/MyMK5VV44EFj3UgTK67Y6VEbIXHMVbKlWFQSC0VsWaVX1lPXFaCwpFYzY7MW9MCAVo9qXDPCTDC\nSPPGSOTHHPDPDLrLDPDLrrLHPDLHvvHLHLHvrvHLrvvrvrvrvrvvrvgYc3n4+aZ8laRNrvd9BTX+\nqSGDMRxGORoTFSzEkxzhZ1+wpy11hrjLvDqQMg5E1XkmKyT05shCpieETT59RP0ptg+F0Gez6O3Y\nbT8fDW8gM1llXYQWzWUzBj3BXFexxgMfx5S9ngSCnX7BVDrEjSzY5qmiGmnuqgtsV2vn8x2kTWVM\n3rljULLBXrAsPSPkLsARqmdpmokoDRQ3VnxTgsljIGecM8AyCYQwSaUciKSGTPDIOZ1xyWr1WfTv\ng8LtiqLrrCJyb497SOYY1nA6Jgxz1nbIOszi9bNLJN2TixBIX+821+wdGR2VsjXvVbLF6fS29ufR\nK8BxxxwHMl6a1Ncd7bVoGnaAH0Zbti2hVV0/vQM5wF+bEjHAx877TLm7IStVtf0XYLO0GWG/h68s\nZtph84ApeY05YG/T+6HCt279q+QDoWKeDTtTXVSoYFqysusLjs3tpCwfJ3PREQkR1fpteeV9muyH\nMllA2IORlmF1HB2WFnTQekqR44adoOktdQGQ1DXyTpSulYkdFM2ZZJZTZ6+az4YQwZtrG/YNH7TE\nIYJdGwZExrAF6/AYKDL3HHAciZ9andLvT/gxalte+cOy3TcK5paRuvP6BlUJH4D+12r3sPjzdsAb\nFVaU6pLADGQXuQK0zkdkd4jZDESzcib9afSzjcPgvbWKD55DPS1urm6e1K8HAyRsnr4T2q2v5OeU\n8PYAFdqN0fXU47DAnPAaryD+x9hOU8IUi+OOOA5d79F/djXcvgvTAHvbAltpWz2DScrVhOPN+UVV\noJJZaj0FGPBB8VfXqTca3TRoJ/eIy6rWZUs8nycfpSE5d39FvSjfTngvT2L7547XdVrsO68lLAOI\nXJQosQSOr1P4kkRBHZwFiptMr11DMlxGl9q0dCZD9dC4yzBLDxxxwMK+RWiqZ5MaU2Ho6/YEdVvY\nCPtdIaHLPEclbgliuazZAe4CBfeNrVkXKXwoRMma1lMuxXNxjVJRoRHPR2vrO16Y2Ze9T3gTAO26\n8tTqovY4OivhTnJDpgsmCuU0UIgtK0jijZpGGYkGLJSWEwij6hJj+vSY5UW9fzRa6keRGtN5qIwh\nY960s9VZR4pmk7Ay6al/BJiLAb0XLMvEGOpFjoSBeGp+NF3nU2BpYfRhkxpwQIccccBy6V6FmvTa\nX4ILrIUeOZBtzbGxdhLR4Ys45FQS3NNqiQArPLPPGciRjrE9pjLHjFhiKyGg7w7khzkkpa8vRejl\n/u4PHP8A5u/999n8CTbjjjgOeuaGIiKUciKOeCePOGaGbDGWKaKXHvCSKWPPrLCSOTDLLDPDPHvH\nPHvvHLrvrvvrns44FVHzT9CnYaWxs7z4aSCXeovHJRP8mH7tZX7RRhzOxpYhK1b7U4DR26thkZs8\nY8bE0R2dOrhTAZT3tjKydRw+deDPmjkw6WdeJnkf8ns3oDqXvS2xMV/v9z/H9ztvlXulWIXufu7Y\n5G9L+oP7nsrob/a86GPHAqseFXoU35tYll78zZQ6bVUjcUrDStedLLDZLpEFIZnMLa7fV2piGrVw\nuaJX33DWmj+xO1RbYLIyiMRgWU9qSOOOKPCKLDCKKLDGOOOPHHCOOPDHrHDDDDHrrHDDDHrrHHHH\nrrHHHrrrrrrrrn58cBxxxwHIV/XkobW2eES+zKxBpoNYboo1vsJUvWGJIldbqrXr36C594d55dEW\ne61bCeDHLDCTDHGbP7sho+upqORk+sb/ALuDyM/5Rf8AffWHAou8cccBy6B6Et/aXHwWirjCIeMX\nVG4NhUJHlD9OpZ1LIeu7QlnL+mOPfc/TzY7ofDLvvP6jDj49Z/TH7MKX/J/f0/8AvUCnb52loVzO\nMPFumnrrFVZiSje5p7jqztwbNX1YEUEofuuKZY7TYGJxMoveA9FFGwynkniixC23xxzWrzD8gYfF\nrxn2/vjJb23NodZwzr6zMXIwM24WRstqFJhcQRslBHde7tz9J3ZJQ2EDAdB0yIXdTnRDjyh+l5P+\nZXj14gVeOx7tvQyY5iMwlq1IUQZvL9cygV55uAderQffvRjlzAfiMbM/nR0lY5OVg2C0Ju2Iskle\nvfv6gjab4hkn8btR1jX6TPGyLhrls2ae6XQkUr2oKzY1dcUFJqlT3qyLok41M6I2qkIOmDHynICA\nJxbwL7N2bfdy320bQ2faGdzvtzZyN7HY28keRZxeUcQ8EUUA8UAK1YtBgFVpEisUJMhT
BAJUoACk\n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\n"}
--> END POST (7104-byte body)
D/OkHttp: <-- 200 OK https://api.eventyay.com/v1/upload/image (458ms)
Server: nginx/1.14.0 (Ubuntu)
Date: Sun, 12 May 2019 22:03:24 GMT
Content-Type: application/json
Transfer-Encoding: chunked
D/OkHttp: Connection: keep-alive
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
D/OkHttp: {"url":"https://api.eventyay.com/static/media/temp/images/6d7c271f-fa4a-47b2-9e03-cc0b637e0b0e/TlBHdTQ1ak/94e0bff4-3356-45b3-ab79-23cb08229df0.jpeg"}
D/OkHttp: <-- END HTTP (150-byte body)
D/OkHttp: --> PATCH https://api.eventyay.com/v1/users/7622
Content-Type: application/vnd.api+json
Content-Length: 581
Authorization: JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NTc3ODMyNzYsImlhdCI6MTU1NzY5Njg3NiwibmJmIjoxNTU3Njk2ODc2LCJpZGVudGl0eSI6NzYyMn0.TfG7lbkevyVBdFzEyBpvUPzy8WT2eabH_CgdgSSou3U
D/OkHttp: {"data":{"type":"user","id":"7622","attributes":{"first-name":"膼峄ヽ","last-name":"L锚","email":null,"contact":null,"details":null,"thumbnail-image-url":null,"icon-image-url":null,"small-image-url":null,"avatar-url":"https://api.eventyay.com/static/media/temp/images/6d7c271f-fa4a-47b2-9e03-cc0b637e0b0e/TlBHdTQ1ak/94e0bff4-3356-45b3-ab79-23cb08229df0.jpeg","facebook-url":null,"twitter-url":null,"instagram-url":null,"google-plus-url":null,"original-image-url":null,"created-at":null,"last-accessed-at":null,"deleted-at":null,"admin":false,"super-admin":false,"verified":false}}}
--> END PATCH (581-byte body)
D/EditProfileViewModel$updateProfile: Image uploaded https://api.eventyay.com/static/media/temp/images/6d7c271f-fa4a-47b2-9e03-cc0b637e0b0e/TlBHdTQ1ak/94e0bff4-3356-45b3-ab79-23cb08229df0.jpeg
D/OkHttp: <-- 500 INTERNAL SERVER ERROR https://api.eventyay.com/v1/users/7622 (1035ms)
D/OkHttp: Server: nginx/1.14.0 (Ubuntu)
Date: Sun, 12 May 2019 22:03:25 GMT
Content-Type: application/vnd.api+json
D/OkHttp: Content-Length: 140
Connection: keep-alive
Access-Control-Allow-Origin: *
X-Sentry-ID: 00b1fa5f792d4ad392532088f1e118d4
D/OkHttp: {"errors": [{"detail": "Unknown error", "source": {"pointer": ""}, "status": 500, "title": "Unknown error"}], "jsonapi": {"version": "1.0"}}
D/OkHttp: <-- END HTTP (140-byte body)
E/EditProfileViewModel$updateUser: Error updating user!
retrofit2.adapter.rxjava2.HttpException: HTTP 500 INTERNAL SERVER ERROR
at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:54)
at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:37)
at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:44)
at io.reactivex.Observable.subscribe(Observable.java:12267)
at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
at io.reactivex.Observable.subscribe(Observable.java:12267)
at io.reactivex.internal.operators.observable.ObservableSingleSingle.subscribeActual(ObservableSingleSingle.java:35)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:784)
Additional details (please complete the following information):
@anhanh11001 @CosmicCoder96 This could be due to the recent POSTGRES bug, please try updating now?
@uds5501 yes it works now. Thanks.
Can you also have a look at this endpoint:
PATCH /v1/users/{user_id}
So currently, if I want to clear the user profile image, then I would put avatar-url inside the body of the request to be null. But it seems like the server handles it by ignoring the null avatar-url and keep the previous avatar-url. Can you take a look at it as well?
@anhanh11001 Sure, I will look into it too
@uds5501 Still on it? Would like to work on this.
@prateekj117 Sure, go ahead. Although heads up : on my investigation, I found out it is an error in the flask-rest-jsonapi dependency :sweat_smile:
The library simply filters out the null values.
@uds5501 Thanks for the info. I will see how clear functionality is implemented in other parts of the application, like clearly Event Image, etc.
@uds5501 There is no solution implemented in the events PATCH as well. @iamareebjamal What should be the way to go here according to you?
???
@iamareebjamal What's the way to go if someone wants to delete the logo-Url or the profile picture Url? We will have to send a NULL string respective to what we want to delete. But it returns Status Code 422 when trying to pass a NULL value.
@uds5501 There is no solution implemented in the events
PATCHas well. @iamareebjamal What should be the way to go here according to you?
@prateekj117 AFAIK, this is all about PATCH at the moment, of course there is no solution implemented for it.
@uds5501 Yaa, but what should be the way to go if we want to implement this?
@iamareebjamal @uds5501 Tried passing null, it doesn't throw any error but doesn't update the respective null fields.
@prateekj117 How are we gonna handle it ?
@iamareebjamal So, should I make changes in flask-rest-jsonapi?
@prateekj117 Yes, please
@uds5501 @prateekj117 @kushthedude I updated my profile image and there was no error. Can you guys please check again?
@shreyanshdwivedi Did you try patching it this way:
attribute from non-null to null value?
Okay. I tried from null to non-null. Will check out what you mentioned.
Btw @prateekj117 any update?
@shreyanshdwivedi Will have a look today.
@iamareebjamal Let's close this issue.