Skip to content

Commit 09df98a

Browse files
authored
Bump to v2.3.2 (#192)
1 parent cfa8db8 commit 09df98a

File tree

24 files changed

+332
-63
lines changed

24 files changed

+332
-63
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "kodo-browser",
3-
"version": "2.3.1",
3+
"version": "2.3.2",
44
"license": "Apache-2.0",
55
"author": {
66
"name": "Rong Zhou",
@@ -111,7 +111,7 @@
111111
"form-data": "^4.0.0",
112112
"js-base64": "^3.4.5",
113113
"js-md5": "^0.7.3",
114-
"kodo-s3-adapter-sdk": "0.6.1",
114+
"kodo-s3-adapter-sdk": "0.7.0",
115115
"lockfile": "^1.0.4",
116116
"lodash": "^4.17.21",
117117
"mime": "^2.3.1",

src/common/ipc-actions/upload.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export interface DestInfo {
1515
}
1616

1717
export interface UploadOptions {
18+
accelerateUploading: boolean,
1819
isOverwrite: boolean,
1920
storageClassName: StorageClass["kodoName"],
2021
storageClasses: StorageClass[],
@@ -36,6 +37,7 @@ export enum UploadAction {
3637
StopJobsByOffline = "StopJobsByOffline",
3738
StartJobsByOnline = "StartJobsByOnline",
3839
RemoveAllJobs = "RemoveAllJobs",
40+
ClearRegionsCache = "ClearRegionsCache",
3941

4042
// common
4143
UpdateUiData = "UpdateUiData",
@@ -177,6 +179,11 @@ export interface RemoveAllJobsMessage {
177179
data?: {},
178180
}
179181

182+
export interface ClearRegionsCacheMessage {
183+
action: UploadAction.ClearRegionsCache,
184+
data?: {},
185+
}
186+
180187
export interface JobCompletedReplyMessage {
181188
action: UploadAction.JobCompleted,
182189
data: {
@@ -207,6 +214,7 @@ export type UploadMessage = UpdateConfigMessage
207214
| StopJobsByOfflineMessage
208215
| StartJobsByOnlineMessage
209216
| RemoveAllJobsMessage
217+
| ClearRegionsCacheMessage
210218

211219
export type UploadReplyMessage = UpdateUiDataReplyMessage
212220
| AddedJobsReplyMessage
@@ -318,4 +326,12 @@ export class UploadActionFns {
318326
data: {},
319327
});
320328
}
329+
330+
clearRegionsCache() {
331+
// if only ucUrl and s3RegionId are provided,
332+
// it will clear all regions cache
333+
this.sender.send(this.channel, {
334+
action: UploadAction.ClearRegionsCache,
335+
});
336+
}
321337
}

src/common/models/job/upload-job.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ interface RequiredOptions {
2727
}
2828

2929
interface UploadOptions {
30+
accelerateUploading: boolean,
3031
multipartUploadThreshold: number, // Bytes
3132
multipartUploadSize: number, // Bytes
3233
multipartUploadConcurrency: number,
@@ -65,6 +66,7 @@ export type Options = RequiredOptions & Partial<OptionalOptions>
6566
const DEFAULT_OPTIONS: OptionalOptions = {
6667
id: "",
6768

69+
accelerateUploading: false,
6870
multipartUploadThreshold: 10 * ByteSize.MB,
6971
multipartUploadSize: 4 * ByteSize.MB,
7072
multipartUploadConcurrency: 1,
@@ -100,6 +102,7 @@ type PersistInfo = {
100102
// But It's also a risk, if business logic changes. Because we may get errors
101103
// when restart job from break point with different backendMode.
102104
backendMode: RequiredOptions["clientOptions"]["backendMode"],
105+
accelerateUploading: OptionalOptions["accelerateUploading"],
103106
prog: OptionalOptions["prog"],
104107
status: Exclude<OptionalOptions["status"], Status.Waiting | Status.Running>,
105108
message: OptionalOptions["message"],
@@ -137,6 +140,7 @@ export default class UploadJob extends TransferJob {
137140
prog: persistInfo.prog,
138141

139142
clientOptions,
143+
accelerateUploading: persistInfo.accelerateUploading,
140144
storageClasses: persistInfo.storageClasses,
141145

142146
overwrite: persistInfo.overwrite,
@@ -162,6 +166,9 @@ export default class UploadJob extends TransferJob {
162166
protected readonly options: Readonly<RequiredOptions & OptionalOptions>
163167
private isForceOverwrite: boolean = false
164168

169+
// - for accelerate uploading
170+
accelerateUploading: boolean = false
171+
165172
// - for resume from break point -
166173
uploadedId: string
167174
uploadedParts: UploadedPart[]
@@ -174,6 +181,7 @@ export default class UploadJob extends TransferJob {
174181

175182
this.options = lodash.merge({}, DEFAULT_OPTIONS, config);
176183

184+
this.accelerateUploading = this.options.accelerateUploading;
177185
this.uploadedId = this.options.uploadedId;
178186
this.uploadedParts = [
179187
...this.options.uploadedParts,
@@ -193,6 +201,7 @@ export default class UploadJob extends TransferJob {
193201
...super.uiData,
194202
from: this.options.from,
195203
to: this.options.to,
204+
accelerateUploading: this.accelerateUploading,
196205
};
197206
}
198207

@@ -276,6 +285,7 @@ export default class UploadJob extends TransferJob {
276285
header: {
277286
contentType: mime.getType(this.options.from.path),
278287
},
288+
accelerateUploading: this.accelerateUploading,
279289
recovered: this.uploadedId && this.uploadedParts
280290
? {
281291
uploadId: this.uploadedId,
@@ -419,6 +429,7 @@ export default class UploadJob extends TransferJob {
419429
overwrite: this.options.overwrite,
420430
storageClassName: this.options.storageClassName,
421431
backendMode: this.options.clientOptions.backendMode,
432+
accelerateUploading: this.options.accelerateUploading,
422433

423434
// real-time info
424435
prog: {
@@ -480,6 +491,12 @@ export default class UploadJob extends TransferJob {
480491
this.uploadedId = "";
481492
this.uploadedParts = [];
482493
}
494+
// handle accelerate uploading is not available
495+
if (err.toString().includes("transfer acceleration is not configured")) {
496+
this.accelerateUploading = false;
497+
await this.retry();
498+
return;
499+
}
483500

484501
this._status = Status.Failed;
485502
this.message = err.toString();

src/common/qiniu/_mock-helpers_/data.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { Region } from "kodo-s3-adapter-sdk";
88

99
const mockDataOfRegionBase = {
1010
upUrls: [],
11+
upAccUrls: [],
1112
ucUrls: [],
1213
rsUrls: [],
1314
rsfUrls: [],

src/main/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,9 @@ ipcMain.on("UploaderManager", (event, message) => {
257257
{
258258
cwd: root,
259259
silent: false,
260+
execArgv: process.env.NODE_ENV === "development"
261+
? ["--inspect=9222"]
262+
: [],
260263
},
261264
);
262265
forkedWorkers.set(processName, uploaderProcess);
@@ -294,6 +297,9 @@ ipcMain.on("DownloaderManager", (event, message) => {
294297
{
295298
cwd: root,
296299
silent: false,
300+
execArgv: process.env.NODE_ENV === "development"
301+
? ["--inspect=9223"]
302+
: [],
297303
},
298304
);
299305
forkedWorkers.set(processName, downloaderProcess);

src/main/kv-store/data-store.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ export class DataStore<T> {
4545

4646
constructor({
4747
workingDirectory,
48-
thresholdDuration,
49-
thresholdSize,
50-
thresholdChangesSize,
48+
thresholdDuration, // ms, trigger compact when thresholdDuration elapsed after last compact
49+
thresholdSize, // trigger compact when memTable size exceeds thresholdSize
50+
thresholdChangesSize, // trigger compact when memTable changes size exceeds thresholdChangesSize
5151

5252
memTable,
5353
memTableReadOnly,

src/main/transfer-managers/upload-manager.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ describe("test createUploadJobs", () => {
7171
};
7272

7373
const MOCKED_UPLOAD_OPTIONS: UploadOptions = {
74+
accelerateUploading: false,
7475
isOverwrite: true,
7576
storageClassName: "Standard",
7677
storageClasses: [

src/main/transfer-managers/upload-manager.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ export default class UploadManager extends TransferManager<UploadJob, Config> {
244244
},
245245

246246
clientOptions,
247+
accelerateUploading: uploadOptions.accelerateUploading,
247248
storageClasses: uploadOptions.storageClasses,
248249

249250
overwrite: uploadOptions.isOverwrite,

src/main/upload-worker.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {Region} from "kodo-s3-adapter-sdk";
2+
import {KodoHttpClient} from "kodo-s3-adapter-sdk/dist/kodo-http-client";
23

34
import {
45
AddedJobsReplyMessage,
@@ -139,6 +140,10 @@ process.on("message", (message: UploadMessage) => {
139140
uploadManager.removeAllJobs();
140141
break;
141142
}
143+
case UploadAction.ClearRegionsCache: {
144+
KodoHttpClient.clearCache();
145+
break;
146+
}
142147
default: {
143148
console.warn("Upload Manager received unknown action, message:", message);
144149
}

src/renderer/components/forms/change-storage-class-form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const ChangeStorageClassForm: React.FC<ChangeStorageClassFormProps> = ({
5252

5353
useEffect(() => {
5454
reset({
55-
storageClassKodoName: availableStorageClasses[0].kodoName,
55+
storageClassKodoName: availableStorageClasses[0].kodoName ?? "Standard",
5656
});
5757
}, []);
5858

0 commit comments

Comments
 (0)