MCPcopy Index your code
hub / github.com/OpenListTeam/OpenList / initStorage

Function initStorage

internal/op/storage.go:98–151  ·  view source on GitHub ↗

initStorage initialize the driver and store to storagesMap

(ctx context.Context, storage model.Storage, storageDriver driver.Driver)

Source from the content-addressed store, hash-verified

96
97// initStorage initialize the driver and store to storagesMap
98func initStorage(ctx context.Context, storage model.Storage, storageDriver driver.Driver) (err error) {
99 storageDriver.SetStorage(storage)
100 driverStorage := storageDriver.GetStorage()
101 defer func() {
102 if err := recover(); err != nil {
103 errInfo := fmt.Sprintf("[panic] err: %v\nstack: %s\n", err, getCurrentGoroutineStack())
104 log.Errorf("panic init storage: %s", errInfo)
105 driverStorage.SetStatus(errInfo)
106 MustSaveDriverStorage(storageDriver)
107 storagesMap.Store(driverStorage.MountPath, storageDriver)
108 }
109 }()
110 // Unmarshal Addition
111 err = utils.Json.UnmarshalFromString(driverStorage.Addition, storageDriver.GetAddition())
112 if err == nil {
113 if ref, ok := storageDriver.(driver.Reference); ok {
114 if strings.HasPrefix(driverStorage.Remark, "ref:/") {
115 refMountPath := driverStorage.Remark
116 i := strings.Index(refMountPath, "\n")
117 if i > 0 {
118 refMountPath = refMountPath[4:i]
119 } else {
120 refMountPath = refMountPath[4:]
121 }
122 var refStorage driver.Driver
123 refStorage, err = GetStorageByMountPath(refMountPath)
124 if err != nil {
125 err = fmt.Errorf("ref: %w", err)
126 } else {
127 err = ref.InitReference(refStorage)
128 if err != nil && errs.IsNotSupportError(err) {
129 err = fmt.Errorf("ref: storage is not %s", storageDriver.Config().Name)
130 }
131 }
132 }
133 }
134 }
135 if err == nil {
136 err = storageDriver.Init(ctx)
137 }
138 storagesMap.Store(driverStorage.MountPath, storageDriver)
139 if err != nil {
140 if IsUseOnlineAPI(storageDriver) {
141 driverStorage.SetStatus(utils.SanitizeHTML(err.Error()))
142 } else {
143 driverStorage.SetStatus(err.Error())
144 }
145 err = errors.Wrap(err, "failed init storage")
146 } else {
147 driverStorage.SetStatus(WORK)
148 }
149 MustSaveDriverStorage(storageDriver)
150 return err
151}
152
153func IsUseOnlineAPI(storageDriver driver.Driver) bool {
154 v := reflect.ValueOf(storageDriver.GetAddition())

Callers 3

CreateStorageFunction · 0.85
LoadStorageFunction · 0.85
UpdateStorageFunction · 0.85

Calls 15

IsNotSupportErrorFunction · 0.92
SanitizeHTMLFunction · 0.92
MustSaveDriverStorageFunction · 0.85
IsUseOnlineAPIFunction · 0.85
getCurrentGoroutineStackFunction · 0.70
GetStorageByMountPathFunction · 0.70
SetStorageMethod · 0.65
GetStorageMethod · 0.65
GetAdditionMethod · 0.65
IndexMethod · 0.65
InitReferenceMethod · 0.65
ConfigMethod · 0.65

Tested by

no test coverage detected