-
Notifications
You must be signed in to change notification settings - Fork 476
Closed
Description
Current behavior
when upgrading storage from 1.2.1 to the LEGACY branch, storage from an old directory is not being moved/copied over to the new directory... i believe this is happening because on init
when RCTStorageDirectoryMigrate
tries to migrate new data to [root]/data/Containers/Data/Application/[app id]/Library/Application Support/[bundle id]/RCTAsyncLocalStorage_V1
the folder doesn't exist. when i try to run the below code right before the filemanager attempts to copy over the data, migration [NSFileManager copyItemAtPath: toPath: Error:]
runs correctly:
if (!RCTHasCreatedStorageDirectory) {
NSString *storageDirectoryPath = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES).firstObject;
storageDirectoryPath = [storageDirectoryPath stringByAppendingPathComponent:[[NSBundle mainBundle] bundleIdentifier]];
[[NSFileManager defaultManager] createDirectoryAtPath:storageDirectoryPath
withIntermediateDirectories:YES
attributes:nil
error:&error];
RCTHasCreatedStorageDirectory = YES;
}
Expected behavior
We shouldn't get the warning and folder migration should happen correctly.
Repro steps
- check out this repo: https://github.com/frankenthumbs/AsyncStorageUpgradePOC
- run
yarn
on root - run
pod install
on/ios
folder - run ios application
- tap
set storage to 'I Like to Save It'
to save a string to async storage - in package json, upgrade
@react-native-community/async-storage
togit://github.com/react-native-community/async-storage.git#4e49db6308882515a284a183c8e9daf5a50b33ef
- in change lines
pod 'react-native-async-storage', :path => '../node_modules/@react-native-community/async-storage'
to
pod 'RNCAsyncStorage', :path => '../node_modules/@react-native-community/async-storage'
- run
yarn
andpod install
described in step 2 and 3 - run application and notice that async-storage is null (where it should be set to saved string) and we get aforementioned warning.
Environment
- Async Storage version: commit: 4e49db6
- React-Native version: 0.61.5
- Platform tested: iOS
- Logs/Error that are relevant:
2020-02-18 17:00:13.828 [warn][tid:com.facebook.react.JavaScript][RNCAsyncStorage.m:205] Failed to copy old storage directory to new storage directory location during migration: Error Domain=NSCocoaErrorDomain Code=4 "The file “RCTAsyncLocalStorage_V1” doesn’t exist." UserInfo={NSSourceFilePathErrorKey=/Users/joon.son/Library/Developer/CoreSimulator/Devices/A9A28D7F-CDD1-49EC-9138-356C0A9A7C4C/data/Containers/Data/Application/B8CAFA4D-89A5-4EE5-92F0-78B4406870D3/Documents/RCTAsyncLocalStorage_V1, NSUserStringVariant=( Copy ), NSDestinationFilePath=/Users/joon.son/Library/Developer/CoreSimulator/Devices/A9A28D7F-CDD1-49EC-9138-356C0A9A7C4C/data/Containers/Data/Application/B8CAFA4D-89A5-4EE5-92F0-78B4406870D3/Library/Application Support/com.nfl.mobile3/RCTAsyncLocalStorage_V1, NSFilePath=/Users/joon.son/Library/Developer/CoreSimulator/Devices/A9A28D7F-CDD1-49EC-9138-356C0A9A7C4C/data/Containers/Data/Application/B8CAFA4D-89A5-4EE5-92F0-78B4406870D3/Documents/RCTAsyncLocalStorage_V1, NSUnderlyingError=0x60000159a3a0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
sebqq, christianrank and diego-paired
Metadata
Metadata
Assignees
Labels
No labels