Description
Some users are not abble to change profile picture.
opened 02:00PM - 04 Jan 22 UTC
<!--
Please see our guide for opening issues: https://rocket.chat/docs/contr… ibuting/reporting-issues
If you have questions or are looking for help/support please see: https://rocket.chat/docs/getting-support
If you are experiencing a bug please search our issues to be sure it is not already present: https://github.com/RocketChat/Rocket.Chat/issues
-->
### Description:
Unable to either include a new profile picture or change the currente profile picture
### Steps to reproduce:
1. Go to "My Account"
2. Upload a profile picture
3. Click on "Save changes"
4. Get messages "Profile saved successfully" and "Avatar changed successfully"
### Expected behavior:
Show new profile picture to the user
### Actual behavior:
Shows de default profile picture or the previous profile picture.
### Server Setup Information:
- Version of Rocket.Chat Server: 4.2.2
- Operating System: Ubuntu 18.04 LTS
- Deployment Method: snap
- Number of Running Instances: 1
- DB Replicaset Oplog: Enabled
- NodeJS Version: 12.22.7 x64
- MongoDB Version: 3.6.23
### Client Setup Information
- Desktop App or Browser Version:
- Firefox 95,
- Rocket Chat Desktop 3.2 e 3.1
- App Rocket Chat Experimental
- Operating System:
- Ubuntu
- Android
- Windows
### Additional context
### Relevant logs:
Browser log
```
g_CS[e] is null 2 background.js:1
receiveCS moz-extension://2a50df9f-fcf6-43b1-889b-c0565fe2891b/background.js:1
onconnect_listener moz-extension://2a50df9f-fcf6-43b1-889b-c0565fe2891b/background.js:1
e moz-extension://2a50df9f-fcf6-43b1-889b-c0565fe2891b/lpfulllib.js:1
apply self-hosted:2718
applySafeWithoutClone resource://gre/modules/ExtensionCommon.jsm:635
asyncWithoutClone resource://gre/modules/ExtensionCommon.jsm:2421
```
```
I20220104-13:50:03.177(0) Exception in setTimeout callback: TypeError: Cannot read property 'etag' of undefined at app/lib/server/functions/setUserAvatar.js:67:58 at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12) at packages/meteor.js:550:25 at runWithEnvironment (packages/meteor.js:1286:24)
{"level":50,"time":"2022-01-04T13:55:53.936Z","pid":18051,"hostname":"optimus-rocket-chat","name":"System","err":{"type":"ApiError","message":"No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ","stack":"Error: No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ<br> at Util.parseHttpRespBody (/snap/rocketchat-server/1502/programs/server/npm/node_modules/@google-cloud/common/build/src/util.js:191:38)<br> at Util.handleResp (/snap/rocketchat-server/1502/programs/server/npm/node_modules/@google-cloud/common/build/src/util.js:135:117)<br> at /snap/rocketchat-server/1502/programs/server/npm/node_modules/@google-cloud/common/build/src/util.js:423:22<br> at onResponse (/snap/rocketchat-server/1502/programs/server/npm/node_modules/retry-request/index.js:214:7)<br> at /snap/rocketchat-server/1502/programs/server/npm/node_modules/teeny-request/build/src/index.js:222:13<br> at /snap/rocketchat-server/1502/programs/server/npm/node_modules/meteor/promise/node_modules/meteor-promise/fiber_pool.js:43:40","code":404,"errors":[{"message":"No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ","domain":"global","reason":"notFound"}]},"msg":"No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ"}
I20220104-13:55:54.321(0) Exception in setTimeout callback: TypeError: Cannot read property 'etag' of undefined at app/lib/server/functions/setUserAvatar.js:67:58 at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12) at packages/meteor.js:550:25 at runWithEnvironment (packages/meteor.js:1286:24)
```
Server Setup Information
Rocket.Chat Version: 4.3.1
NodeJS Version: 12.22.8 - x64
MongoDB Version: 4.2.17
MongoDB Engine: wiredTiger
Platform: linux
Process Port: 3000
ReplicaSet OpLog: Enabled
Commit Hash: 21045735b2
Commit Branch: HEAD
Any additional Information
{“level”:50,“time”:“2022-01-10T21:31:42.530Z”,“pid”:17566,“hostname”:“optimus-rocket-chat”,“name”:“System”,“err”:{“type”:“ApiError”,“message”:“No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ”,“stack”:“Error: No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ at Util.parseHttpRespBody (/snap/rocketchat-server/1505/programs/server/npm/node_modules/@google-cloud /common/build/src/util.js:191:38) at Util.handleResp (/snap/rocketchat-server/1505/programs/server/npm/node_modules/@google-cloud /common/build/src/util.js:135:117) at /snap/rocketchat-server/1505/programs/server/npm/node_modules/@google-cloud /common/build/src/util.js:423:22 at onResponse (/snap/rocketchat-server/1505/programs/server/npm/node_modules/retry-request/index.js:214:7) at /snap/rocketchat-server/1505/programs/server/npm/node_modules/teeny-request/build/src/index.js:222:13 at /snap/rocketchat-server/1505/programs/server/npm/node_modules/meteor/promise/node_modules/meteor-promise/fiber_pool.js:43:40”,“code”:404,“errors”:[{“message”:“No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ”,“domain”:“global”,“reason”:“notFound”}]},“msg”:“No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ”}
I20220110-21:31:42.965(0) Exception in setTimeout callback: TypeError: Cannot read property ‘etag’ of undefined at app/lib/server/functions/setUserAvatar.js:67:58 at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12) at packages/meteor.js:550:25 at runWithEnvironment (packages/meteor.js:1286:24)
Hi!
Are you storing uploads in Google Cloud Storage?
In order to replicate, we need to set up a similar environment.
THanks!
Yes. We are using Google Cloud Storage.
Further analysis indicates that the new user can in fact choose a profile picture, but when he/she tries to change that, the rocket.chat uploads the new profile picture to the storage and then deletes the same file. I think that the program should delete before uploads.
Seems that after update the profile picture using Google Cloud Storage rocket.chat deletes the file.
Hi!
Sorry for the late response.
Can you check if those issues are related?
opened 02:00PM - 04 Jan 22 UTC
<!--
Please see our guide for opening issues: https://rocket.chat/docs/contr… ibuting/reporting-issues
If you have questions or are looking for help/support please see: https://rocket.chat/docs/getting-support
If you are experiencing a bug please search our issues to be sure it is not already present: https://github.com/RocketChat/Rocket.Chat/issues
-->
### Description:
Unable to either include a new profile picture or change the currente profile picture
### Steps to reproduce:
1. Go to "My Account"
2. Upload a profile picture
3. Click on "Save changes"
4. Get messages "Profile saved successfully" and "Avatar changed successfully"
### Expected behavior:
Show new profile picture to the user
### Actual behavior:
Shows de default profile picture or the previous profile picture.
### Server Setup Information:
- Version of Rocket.Chat Server: 4.2.2
- Operating System: Ubuntu 18.04 LTS
- Deployment Method: snap
- Number of Running Instances: 1
- DB Replicaset Oplog: Enabled
- NodeJS Version: 12.22.7 x64
- MongoDB Version: 3.6.23
### Client Setup Information
- Desktop App or Browser Version:
- Firefox 95,
- Rocket Chat Desktop 3.2 e 3.1
- App Rocket Chat Experimental
- Operating System:
- Ubuntu
- Android
- Windows
### Additional context
### Relevant logs:
Browser log
```
g_CS[e] is null 2 background.js:1
receiveCS moz-extension://2a50df9f-fcf6-43b1-889b-c0565fe2891b/background.js:1
onconnect_listener moz-extension://2a50df9f-fcf6-43b1-889b-c0565fe2891b/background.js:1
e moz-extension://2a50df9f-fcf6-43b1-889b-c0565fe2891b/lpfulllib.js:1
apply self-hosted:2718
applySafeWithoutClone resource://gre/modules/ExtensionCommon.jsm:635
asyncWithoutClone resource://gre/modules/ExtensionCommon.jsm:2421
```
```
I20220104-13:50:03.177(0) Exception in setTimeout callback: TypeError: Cannot read property 'etag' of undefined at app/lib/server/functions/setUserAvatar.js:67:58 at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12) at packages/meteor.js:550:25 at runWithEnvironment (packages/meteor.js:1286:24)
{"level":50,"time":"2022-01-04T13:55:53.936Z","pid":18051,"hostname":"optimus-rocket-chat","name":"System","err":{"type":"ApiError","message":"No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ","stack":"Error: No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ<br> at Util.parseHttpRespBody (/snap/rocketchat-server/1502/programs/server/npm/node_modules/@google-cloud/common/build/src/util.js:191:38)<br> at Util.handleResp (/snap/rocketchat-server/1502/programs/server/npm/node_modules/@google-cloud/common/build/src/util.js:135:117)<br> at /snap/rocketchat-server/1502/programs/server/npm/node_modules/@google-cloud/common/build/src/util.js:423:22<br> at onResponse (/snap/rocketchat-server/1502/programs/server/npm/node_modules/retry-request/index.js:214:7)<br> at /snap/rocketchat-server/1502/programs/server/npm/node_modules/teeny-request/build/src/index.js:222:13<br> at /snap/rocketchat-server/1502/programs/server/npm/node_modules/meteor/promise/node_modules/meteor-promise/fiber_pool.js:43:40","code":404,"errors":[{"message":"No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ","domain":"global","reason":"notFound"}]},"msg":"No such object: storage-chat/QK9v8EyTKFgxmR9YZ/avatars/Z3TxCYJ9LCZuo4GuJ"}
I20220104-13:55:54.321(0) Exception in setTimeout callback: TypeError: Cannot read property 'etag' of undefined at app/lib/server/functions/setUserAvatar.js:67:58 at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12) at packages/meteor.js:550:25 at runWithEnvironment (packages/meteor.js:1286:24)
```
opened 12:35PM - 30 Sep 19 UTC
### Description:
RocketChat is configured to use AmazonS3 (but not with AWS S… 3 Service) as FileUpload storage type. Setting a new user avatar (upload or gravatar) works when the current avatar is the initial avatar (1st letter of name). When the avatar is set and a user uploads a new avatar, the new avatar is not stored in the S3 bucket and a broken image is shown. MongoDB entry is fine but object does not exist in S3 bucket. Reverting to initial avatar, does remove the MongoDB entry.
### Steps to reproduce:
1. Go to Account / Profile
2. Set a profile picture (upload one or use gravatar) and save the changes
3. Profile picture shows a broken Image -> NOK
4. Change to initial avatar and save changes
5. Profile Picture shows initial avatar
6. Set a Profile Picture (upload one or use gravatar) and save the changes
7. Profile picture shows the new image corrrectly. -> OK
### Expected behaviour:
the new user avatar should be store correctly no matter what previous avatar was used
### Actual behavior:
MongoDB entry with initial avatar set:
```
db.rocketchat_avatars.find({name: "splattner"})
# No Result
```
MongoDB Entry when changing from initial avatar to a new profile picture. S3 Object exists
```
db.rocketchat_avatars.find({name: "splattner"})
{ "_id" : "YTb345cKGtLrBcGQZ", "userId" : "oEEnfd378rh8H83is", "type" : "image/jpeg", "size" : 5273, "AmazonS3" : { "path" : "4a4C7dfyuCXH4yygw/avatars/oEEnfd378rh8H83is" }, "store" : "AmazonS3:Avatars", "_updatedAt" : ISODate("2019-09-30T12:03:08.529Z"), "instanceId" : "jgvePrpWxRKB3nWvH", "name" : "splattner", "complete" : true, "etag" : "PiNKXiEnMweZzCSZm", "path" : "/ufs/AmazonS3:Avatars/YTb345cKGtLrBcGQZ/undefined", "progress" : 1, "token" : "f8Bbdb292a", "uploadedAt" : ISODate("2019-09-30T12:03:08.642Z"), "uploading" : false, "url" : "https://chat.****/ufs/AmazonS3:Avatars/YTb345cKGtLrBcGQZ/undefined" }
```
MongoDB after changing profile picture again. S3 Object does not exist
```
db.rocketchat_avatars.find({name: "splattner"})
{ "_id" : "ipJmTQHT9tSYjaG3a", "userId" : "oEEnfd378rh8H83is", "type" : "image/png", "size" : 4585, "AmazonS3" : { "path" : "4a4C7dfyuCXH4yygw/avatars/oEEnfd378rh8H83is" }, "store" : "AmazonS3:Avatars", "_updatedAt" : ISODate("2019-09-30T12:04:05.906Z"), "instanceId" : "jgvePrpWxRKB3nWvH", "name" : "splattner", "complete" : true, "etag" : "ShuGmnzAookwNSSb3", "path" : "/ufs/AmazonS3:Avatars/ipJmTQHT9tSYjaG3a/undefined", "progress" : 1, "token" : "BB28d80B88", "uploadedAt" : ISODate("2019-09-30T12:04:06.059Z"), "uploading" : false, "url" : "https://chat.****/ufs/AmazonS3:Avatars/ipJmTQHT9tSYjaG3a/undefined" }
```
### Server Setup Information:
- Version of Rocket.Chat Server: 2.1.0
- Operating System: CentOS
- Deployment Method: docker (kubernetes / helm)
- Number of Running Instances: 2
- DB Replicaset Oplog: Enabled
- NodeJS Version: v8.11.4
- MongoDB Version: v4.0.12
### Additional context
### Relevant logs:
```
server.js:212 Meteor ➔ method setAvatarFromService -> userId: oEEnfd378rh8H83is , arguments: [ 'data:image/jpeg;base64,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',
'image/jpeg',
'gravatar' ]
```
I think is best to close this as a discussion and move it to an issue!
Thanks!