GetStream / stream-chat-flutter

Flutter Chat SDK - Build your own chat app experience using Dart, Flutter and the Stream Chat Messaging API.
https://getstream.io/chat/sdk/flutter/
Other
906 stars 334 forks source link

Race condition with persist when creating a channel and deleting it right away #1974

Open hajajmaor opened 2 months ago

hajajmaor commented 2 months ago

Which packages are you using?

stream_chat_flutter, stream_chat_persistance

On what platforms did you experience the issue?

iOS, Android, MacOS

What version are you using?

7.2.2

What happened?

We are developing a feature like ChatGPT channels. We create a channel and push the page. If the user doesn't send a message in the channel, we call it channel.delete(). Problem: When using the StreamChannelListView, we see the deleted channels, and then the page es, refreshes, and they are gone because of the way the StreamChannelListController works with the doInitialLoad method. Furthermore, logging this method:

  @override
  Future<void> deleteChannels(List<String> cids) {
    assert(_debugIsConnected, '');
    _logger.info('deleteChannels');
    return db!.channelDao.deleteChannelByCids(cids);
  }

deleteChannelByCids returned an integer with the number of affected rows, and the amount is 0. This means that the delete event arrives before the insert persists.

Steps to reproduce

1. Use the StreamChannelListView widget to view the channels; sort by creation time to see the channel first.
2. Create a new channel and push it to view.
3. Pop, and on dispose, delete the channel if no messages are sent to this channel.
4. Hot-reload the app and see the channel, or hot-reload while offline to fetch from persist only.
5. Not happening - pop the page earlier.

Supporting info to reproduce

No response

Relevant log output

No response

Flutter analyze output

No response

Flutter doctor output

[✓] Flutter (Channel stable, 3.13.9, on macOS 14.4.1 23E224 darwin-arm64, locale en-IL)
    • Flutter version 3.13.9 on channel stable at /Users/XXXX/fvm/versions/3.13.9
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision d211f42860 (8 months ago), 2023-10-25 13:42:25 -0700
    • Engine revision 0545f8705d
    • Dart version 3.1.5
    • DevTools version 2.25.0

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/XXXX/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/XXXX/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15F31d
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] VS Code (version 1.90.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.90.0

[✓] Connected device (4 available)

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Code of Conduct

github-actions[bot] commented 1 month ago

This issue is stale because it has been open for 20 days with no activity.

hajajmaor commented 1 month ago

Any updates?

github-actions[bot] commented 3 weeks ago

This issue is stale because it has been open for 20 days with no activity.

github-actions[bot] commented 2 weeks ago

This issue was closed because it has been inactive for 7 days since being marked as stale.