mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-23 10:26:44 +00:00
Other: Read sync workers setting from vault
This commit is contained in:
@ -21,7 +21,6 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@ -95,7 +94,17 @@ func (user *User) sync(ctx context.Context) error {
|
||||
if !user.vault.SyncStatus().HasMessages {
|
||||
user.log.Debug("Syncing messages")
|
||||
|
||||
if err := syncMessages(ctx, user.ID(), user.client, user.vault, addrKRs, user.updateCh, user.eventCh); err != nil {
|
||||
if err := syncMessages(
|
||||
ctx,
|
||||
user.ID(),
|
||||
user.client,
|
||||
user.vault,
|
||||
addrKRs,
|
||||
user.updateCh,
|
||||
user.eventCh,
|
||||
user.syncWorkers,
|
||||
user.syncBuffer,
|
||||
); err != nil {
|
||||
return fmt.Errorf("failed to sync messages: %w", err)
|
||||
}
|
||||
|
||||
@ -176,6 +185,7 @@ func syncMessages( //nolint:funlen
|
||||
addrKRs map[string]*crypto.KeyRing,
|
||||
updateCh map[string]*queue.QueuedChannel[imap.Update],
|
||||
eventCh *queue.QueuedChannel[events.Event],
|
||||
syncWorkers, syncBuffer int,
|
||||
) error {
|
||||
// Determine which messages to sync.
|
||||
metadata, err := client.GetAllMessageMetadata(ctx, nil)
|
||||
@ -195,7 +205,7 @@ func syncMessages( //nolint:funlen
|
||||
|
||||
// Fetch and build each message.
|
||||
buildCh := stream.Map(
|
||||
client.GetFullMessages(ctx, runtime.NumCPU(), runtime.NumCPU(), messageIDs...),
|
||||
client.GetFullMessages(ctx, syncWorkers, syncBuffer, messageIDs...),
|
||||
func(_ context.Context, full liteapi.FullMessage) (*buildRes, error) {
|
||||
return buildRFC822(full, addrKRs[full.AddressID])
|
||||
},
|
||||
|
||||
@ -74,6 +74,8 @@ type User struct {
|
||||
abortable async.Abortable
|
||||
goSync func()
|
||||
|
||||
syncWorkers int
|
||||
syncBuffer int
|
||||
showAllMail uint32
|
||||
}
|
||||
|
||||
@ -85,6 +87,7 @@ func New(
|
||||
encVault *vault.User,
|
||||
client *liteapi.Client,
|
||||
apiUser liteapi.User,
|
||||
syncWorkers, syncBuffer int,
|
||||
showAllMail bool,
|
||||
) (*User, error) { //nolint:funlen
|
||||
logrus.WithField("userID", apiUser.ID).Debug("Creating new user")
|
||||
@ -158,6 +161,8 @@ func New(
|
||||
|
||||
tasks: xsync.NewGroup(context.Background()),
|
||||
|
||||
syncWorkers: syncWorkers,
|
||||
syncBuffer: syncBuffer,
|
||||
showAllMail: b32(showAllMail),
|
||||
}
|
||||
|
||||
|
||||
@ -182,7 +182,7 @@ func withUser(tb testing.TB, ctx context.Context, _ *server.Server, m *liteapi.M
|
||||
vaultUser, err := vault.AddUser(apiUser.ID, username, apiAuth.UID, apiAuth.RefreshToken, saltedKeyPass)
|
||||
require.NoError(tb, err)
|
||||
|
||||
user, err := New(ctx, vaultUser, client, apiUser, true)
|
||||
user, err := New(ctx, vaultUser, client, apiUser, vault.SyncWorkers(), vault.SyncBuffer(), true)
|
||||
require.NoError(tb, err)
|
||||
defer user.Close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user