-
Notifications
You must be signed in to change notification settings - Fork 291
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Streamlit Version
1.51.0
Streamlit Authenticator Version
0.4.2
Environment
macOS 15.6.1
What happened?
After a logout/login cycle, Streamlit throws MediaFileStorageError when pages contain st.file_uploader widgets:
Traceback (most recent call last): File "/opt/miniconda3/envs/yeast-env/lib/python3.11/site-packages/streamlit/runtime/memory_media_file_storage.py", line 140, in get_file return self._files_by_id[file_id] KeyError: '2e3f1d0f5ebf77bb11f48b27b629b28921a06edf3401d36e32e95a5f' streamlit.runtime.media_file_storage.MediaFileStorageError: Bad filename '2e3f1d0f5ebf77bb11f48b27b629b28921a06edf3401d36e32e95a5f.jpg'. (No media file with id '2e3f1d0f5ebf77bb11f48b27b629b28921a06edf3401d36e32e95a5f')
Root Cause:
Streamlit widget state persists file uploader media references across logout/login cycles. When the user logs back in after logging out, Streamlit tries to restore orphaned file IDs from the previous session that no longer exist in media storage.
Attempted Workarounds:
- Cache clearing on logout - Doesn't resolve the issue:
st.cache_data.clear()
st.cache_resource.clear()- Clearing media storage on login - Causes SSL errors:
from streamlit.runtime.memory_media_file_storage import get_default_media_file_storage
get_default_media_file_storage().clear()- Clearing widget state before login - Breaks login functionality:
for key in list(st.session_state.keys()):
if 'FileUploader' in key:
del st.session_state[key]- Clearing widget state in logout callback - Doesn't resolve the issue:
def logout_callback():
# Clear auth keys
for k in ["roles", "username", "name", "email", "authentication_status", "authenticator"]:
if k in st.session_state:
del st.session_state[k]
# Clear widget state
keys_to_delete = [k for k in st.session_state.keys()
if k.startswith(('FormSubmitter', 'FileUploader', 'UploadedFile'))]
for k in keys_to_delete:
del st.session_state[k]
st.rerun()Current Impact: Cosmetic - spams terminal logs but doesn't affect functionality.
What did you expect to happen?
File uploader state should be cleared when user logs out, or media file references should be validated before restoration to prevent KeyError.
Steps to reproduce
- Set up
streamlit-authenticatorwith login page - Add
st.file_uploaderto any authenticated page - Login → navigate to page with file uploader
- Logout → login again
- Error appears in terminal on the second login
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working