Skip to content

Commit fc24dfa

Browse files
authored
Merge pull request #7686 from FirebirdSQL/work/gh-7682
Feature #7682 : use ParallelWorkers setting from firebird.conf as default for all parallelised operations
2 parents 7b130a4 + 2b5f7a4 commit fc24dfa

File tree

10 files changed

+25
-4
lines changed

10 files changed

+25
-4
lines changed

src/alice/alice.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ int alice(Firebird::UtilSvc* uSvc)
146146
#ifdef TRUSTED_AUTH
147147
tdgbl->ALICE_data.ua_trusted = false;
148148
#endif
149+
tdgbl->ALICE_data.ua_parallel_workers = uSvc->getParallelWorkers();
149150

150151
// Start by parsing switches
151152

src/alice/exe.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ static void buildDpb(Firebird::ClumpletWriter& dpb, const SINT64 switches)
325325
dpb.insertByte(isc_dpb_set_db_replica, tdgbl->ALICE_data.ua_replica_mode);
326326
}
327327

328-
if (switches & sw_parallel_workers) {
328+
if (tdgbl->ALICE_data.ua_parallel_workers > 0) {
329329
dpb.insertInt(isc_dpb_parallel_workers, tdgbl->ALICE_data.ua_parallel_workers);
330330
}
331331

src/burp/backup.epp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,12 @@ int BACKUP_backup(const TEXT* dbb_file, const TEXT* file_name)
300300
stmt->free(fbStatus);
301301
}
302302

303+
if (tdgbl->gbl_sw_par_workers)
304+
{
305+
BURP_verbose(410, SafeArg() << tdgbl->gbl_sw_par_workers);
306+
// msg 410 use up to @1 parallel workers
307+
}
308+
303309
// decide what type of database we've got
304310

305311
detectRuntimeODS();

src/burp/burp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ int gbak(Firebird::UtilSvc* uSvc)
597597
tdgbl->gbl_sw_old_descriptions = false;
598598
tdgbl->gbl_sw_mode = false;
599599
tdgbl->gbl_sw_skip_count = 0;
600-
tdgbl->gbl_sw_par_workers = 1;
600+
tdgbl->gbl_sw_par_workers = uSvc->getParallelWorkers();
601601
tdgbl->action = NULL;
602602

603603
burp_fil* file = NULL;

src/burp/restore.epp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1019,7 +1019,8 @@ void create_database(BurpGlobals* tdgbl, Firebird::IProvider* provider, const TE
10191019
}
10201020
else
10211021
{
1022-
dpb.insertInt(isc_dpb_parallel_workers, tdgbl->gbl_sw_par_workers);
1022+
if (tdgbl->gbl_sw_par_workers > 0)
1023+
dpb.insertInt(isc_dpb_parallel_workers, tdgbl->gbl_sw_par_workers);
10231024
dpb.insertByte(isc_dpb_shutdown, isc_dpb_shut_multi);
10241025
}
10251026
dpb.insertInt(isc_dpb_shutdown_delay, 0);
@@ -10333,6 +10334,12 @@ bool restore(BurpGlobals* tdgbl, Firebird::IProvider* provider, const TEXT* file
1033310334
*
1033410335
**************************************/
1033510336

10337+
if (tdgbl->gbl_sw_par_workers)
10338+
{
10339+
BURP_verbose(410, SafeArg() << tdgbl->gbl_sw_par_workers);
10340+
// msg 410 use up to @1 parallel workers
10341+
}
10342+
1033610343
// Read burp record first
1033710344

1033810345
MVOL_init_read (file_name, &tdgbl->RESTORE_format);

src/common/UtilSvc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ class StandaloneUtilityInterface : public UtilSvc
147147
virtual void initStatus() { }
148148
virtual bool utf8FileNames() { return false; }
149149
virtual Firebird::ICryptKeyCallback* getCryptCallback() { return NULL; }
150+
virtual int getParallelWorkers() { return 0; };
150151
};
151152

152153

src/common/UtilSvc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ class UtilSvc : public Firebird::GlobalStorage
7777
virtual unsigned int getAuthBlock(const unsigned char** bytes) = 0;
7878
virtual bool utf8FileNames() = 0;
7979
virtual Firebird::ICryptKeyCallback* getCryptCallback() = 0;
80+
virtual int getParallelWorkers() = 0;
8081

8182
void setDataMode(bool value)
8283
{

src/include/firebird/impl/msg/gbak.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,3 +405,4 @@ FB_IMPL_MSG_NO_SYMBOL(GBAK, 406, " @1PAR(ALLEL) parallel workers")
405405
FB_IMPL_MSG_SYMBOL(GBAK, 407, gbak_missing_prl_wrks, "parallel workers parameter missing")
406406
FB_IMPL_MSG_SYMBOL(GBAK, 408, gbak_inv_prl_wrks, "expected parallel workers, encountered \"@1\"")
407407
FB_IMPL_MSG_NO_SYMBOL(GBAK, 409, " @1D(IRECT_IO) direct IO for backup file(s)")
408+
FB_IMPL_MSG_NO_SYMBOL(GBAK, 410, "use up to @1 parallel workers")

src/jrd/svc.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ Service::Service(const TEXT* service_name, USHORT spb_length, const UCHAR* spb_d
701701
svc_username(getPool()), svc_sql_role(getPool()), svc_auth_block(getPool()),
702702
svc_expected_db(getPool()), svc_trusted_role(false), svc_utf8(false),
703703
svc_switches(getPool()), svc_perm_sw(getPool()), svc_address_path(getPool()),
704-
svc_command_line(getPool()),
704+
svc_command_line(getPool()), svc_parallel_workers(0),
705705
svc_network_protocol(getPool()), svc_remote_address(getPool()), svc_remote_process(getPool()),
706706
svc_remote_pid(0), svc_trace_manager(NULL), svc_crypt_callback(crypt_callback),
707707
svc_existence(FB_NEW_POOL(*getDefaultMemoryPool()) SvcMutex(this)),
@@ -731,6 +731,8 @@ Service::Service(const TEXT* service_name, USHORT spb_length, const UCHAR* spb_d
731731
if (svcname == "@@@")
732732
svc_debug = true;
733733
#endif
734+
// Could be overrided in SPB
735+
svc_parallel_workers = Config::getParallelWorkers();
734736

735737
// Process the service parameter block.
736738
ClumpletReader spb(ClumpletReader::spbList, spb_data, spb_length, spbVersionError);

src/jrd/svc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ class Service : public Firebird::UtilSvc, public TypedHandle<type_svc>
146146
virtual bool utf8FileNames();
147147
// get database encryption key transfer callback routine
148148
virtual Firebird::ICryptKeyCallback* getCryptCallback();
149+
virtual int getParallelWorkers() { return svc_parallel_workers; }
149150

150151
virtual TraceManager* getTraceManager()
151152
{
@@ -324,6 +325,7 @@ class Service : public Firebird::UtilSvc, public TypedHandle<type_svc>
324325
Firebird::string svc_perm_sw; // Switches, taken from services table and/or passed using spb_command_line
325326
Firebird::UCharBuffer svc_address_path;
326327
Firebird::string svc_command_line;
328+
int svc_parallel_workers;
327329

328330
Firebird::string svc_network_protocol;
329331
Firebird::string svc_remote_address;

0 commit comments

Comments
 (0)