[New Feature] Queue rework

Discuss newly added features or request new features.
hugbug
Developer & Admin
Posts: 7645
Joined: 09 Sep 2008, 11:58
Location: Germany

[New Feature] Queue rework

Post by hugbug » 21 Jan 2014, 22:59

Not a feature in a common sense but an important change I'd like to inform you about.

In the older versions download queue was holding individual files (contained within nzbs). Example:

Code: Select all

(queue item 1) Dexter.S08E01/dexter.s08e01.part0001.rar
(queue item 2) Dexter.S08E01/dexter.s08e01.part0002.rar
(queue item 3) Dexter.S08E01/dexter.s08e01.part0003.rar
(queue item 4) Breaking.Bad.S05E09/breaking.bad.s05e09.part0001.rar
(queue item 5) Breaking.Bad.S05E09/breaking.bad.s05e09.part0002.rar
In web-interface however the files were shown as groups (nzbs):

Code: Select all

(group 1) Dexter.S08E01
(group 2) Breaking.Bad.S05E09
To move items (groups) in the queue all files from that group must be moved. Example: moving Breaking.Bad to the top:

Code: Select all

(queue item 1) Breaking.Bad.S05E09/breaking.bad.s05e09.part0001.rar
(queue item 2) Breaking.Bad.S05E09/breaking.bad.s05e09.part0002.rar
(queue item 3) Dexter.S08E01/dexter.s08e01.part0001.rar
(queue item 4) Dexter.S08E01/dexter.s08e01.part0002.rar
(queue item 5) Dexter.S08E01/dexter.s08e01.part0003.rar
For large nzb-files consisting of many individual files a lot of elements in the queue has to be moved. For example large season nzbs have more than 1000 individual files. Moving such an nzb in the queue has become a problem in NZBGet especially when it was running on a slow device.

This was one of the reasons for redesign but there were others. The full list including the discussed one:
  1. Slow queue management for big queue and/or nzb-files (explained above);
  2. To show groups in web-interface all individual files in queue has to be grouped. This took CPU time;
  3. Post-processor jobs has to be managed in a separate queue because they refer to nzbs and not to individual files. This could lead to a situation when download doesn't have individual files for a completely downloaded nzb but a post-processing job for that nzb exists. Web-interface needed some tricks to handle this case and still it wasn't perfect;
  4. Enqueued URLs has to be managed in a separate queue as well. This causes several problems:
    • Enqueued URLs are not visible in download queue until the nzb-files are fetched and added to queue;
    • If multiple URLs were added within a short interval they are downloaded simultaneously but the order they are added to download queue is not the same as the order URLs were enqueued. It's rather an order when the fetching of URLs was completed.
Queue was redesigned and now it holds nzbs instead of individual files:

Code: Select all

(queue item 1) Dexter.S08E01
        (file item 1) Dexter.S08E01/dexter.s08e01.part0001.rar
        (file item 2) Dexter.S08E01/dexter.s08e01.part0002.rar
        (file item 3) Dexter.S08E01/dexter.s08e01.part0003.rar
(queue item 2) Breaking.Bad.S05E09
        (file item 1) Breaking.Bad.S05E09/breaking.bad.s05e09.part0001.rar
        (file item 2) Breaking.Bad.S05E09/breaking.bad.s05e09.part0002.rar
File items are now belong to their respective nzbs. To move groups only few elements need to be shifted in queue now. This solves problem one (slow queue management) and problem two (grouping of individual files for each UI update).

A limitation of the new queue design is that individual files cannot be moved beyond group borders. For example and nfo-file can't be moved to the top of queue to be downloaded before other nzbs. But who needs this? Although it was possible via command line commands in older versions it wasn't possible via web-interface. I don't think anyone did ever use this (if you did - let me know).

To test performance I use a set of 30 nzb-files each 40-100GB size with total queue size 1.5TB. Queue managing is now quite fast even on a slow device (PVR which has a two core mipsel 400 MHz CPU).

The integration of post-processor queue and url queue into the main download queue is in TODO and will take time.

If you see any anomalies after update to v13 please report in this thread.

ADVICE: make backup of your queue-directory before trying this (devel) version.

prinz2311
Posts: 466
Joined: 08 Dec 2012, 00:03

Re: [New Feature] Queue rework

Post by prinz2311 » 22 Jan 2014, 11:19

I can't compile it for mips. Just getting errors:

Maybe something has gone wrong on my system...

Code: Select all

ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `ParChecker::signal_done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int)':
/home/prinz/nzbget-svn-new/ParChecker.cpp:872: undefined reference to `Par2RepairerSourceFile::TargetFileName() const'
/home/prinz/nzbget-svn-new/ParChecker.cpp:873: undefined reference to `Par2RepairerSourceFile::GetTargetExists() const'
ParChecker.o: In function `Repairer::PreProcess(char const*)':
/home/prinz/nzbget-svn-new/ParChecker.cpp:110: undefined reference to `CommandLine::Parse(int, char**)'
/home/prinz/nzbget-svn-new/ParChecker.cpp:102: undefined reference to `CommandLine::Parse(int, char**)'
/home/prinz/nzbget-svn-new/ParChecker.cpp:116: undefined reference to `Par2Repairer::PreProcess(CommandLine const&)'
ParChecker.o: In function `Repairer::Process(bool)':
/home/prinz/nzbget-svn-new/ParChecker.cpp:121: undefined reference to `Par2Repairer::Process(CommandLine const&, bool)'
ParChecker.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o:/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: more undefined references to `pthread_cancel' follow
ParChecker.o: In function `ParChecker::DeleteLeftovers()':
/home/prinz/nzbget-svn-new/ParChecker.cpp:982: undefined reference to `Par2RepairerSourceFile::GetTargetFile() const'
ParChecker.o: In function `~Repairer':
/home/prinz/nzbget-svn-new/ParChecker.cpp:70: undefined reference to `Par2Repairer::~Par2Repairer()'
ParChecker.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `Repairer':
/home/prinz/nzbget-svn-new/ParChecker.cpp:70: undefined reference to `Par2Repairer::Par2Repairer()'
/home/prinz/nzbget-svn-new/ParChecker.cpp:70: undefined reference to `CommandLine::CommandLine()'
ParChecker.o: In function `slot_rep':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot_base.h:84: undefined reference to `sigc::trackable::trackable()'
ParChecker.o: In function `slot1<sigc::bound_mem_functor1<void, ParChecker, std::basic_string<char> > >':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:526: undefined reference to `sigc::slot_base::slot_base(sigc::internal::slot_rep*)'
ParChecker.o: In function `sigc::signal1<void, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, sigc::nil>::connect(sigc::slot<void, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/signal.h:2764: undefined reference to `sigc::signal_base::connect(sigc::slot_base const&)'
ParChecker.o: In function `~slot1':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:493: undefined reference to `sigc::slot_base::~slot_base()'
ParChecker.o: In function `slot_rep':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot_base.h:84: undefined reference to `sigc::trackable::trackable()'
ParChecker.o: In function `slot1<sigc::bound_mem_functor1<void, ParChecker, double> >':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:526: undefined reference to `sigc::slot_base::slot_base(sigc::internal::slot_rep*)'
ParChecker.o: In function `sigc::signal1<void, double, sigc::nil>::connect(sigc::slot<void, double, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/signal.h:2764: undefined reference to `sigc::signal_base::connect(sigc::slot_base const&)'
ParChecker.o: In function `~slot1':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:493: undefined reference to `sigc::slot_base::~slot_base()'
ParChecker.o: In function `slot_rep':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot_base.h:84: undefined reference to `sigc::trackable::trackable()'
ParChecker.o: In function `slot3<sigc::bound_mem_functor3<void, ParChecker, std::basic_string<char>, int, int> >':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:685: undefined reference to `sigc::slot_base::slot_base(sigc::internal::slot_rep*)'
ParChecker.o: In function `sigc::signal3<void, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int, sigc::nil>::connect(sigc::slot<void, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int, sigc::nil, sigc::nil, sigc::nil, sigc::nil> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/signal.h:2984: undefined reference to `sigc::signal_base::connect(sigc::slot_base const&)'
ParChecker.o: In function `~slot3':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:648: undefined reference to `sigc::slot_base::~slot_base()'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:648: undefined reference to `sigc::slot_base::~slot_base()'
ParChecker.o: In function `Repairer':
/home/prinz/nzbget-svn-new/ParChecker.cpp:70: undefined reference to `Par2Repairer::~Par2Repairer()'
ParChecker.o: In function `~slot1':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:493: undefined reference to `sigc::slot_base::~slot_base()'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot.h:493: undefined reference to `sigc::slot_base::~slot_base()'
ParChecker.o: In function `ParChecker::AddSplittedFragments(char const*)':
/home/prinz/nzbget-svn-new/ParChecker.cpp:682: undefined reference to `CommandLine::ExtraFile::ExtraFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long)'
ParChecker.o: In function `__gnu_cxx::new_allocator<CommandLine::ExtraFile>::construct(CommandLine::ExtraFile*, CommandLine::ExtraFile const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/new_allocator.h:108: undefined reference to `CommandLine::ExtraFile::ExtraFile(CommandLine::ExtraFile const&)'
ParChecker.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `ParChecker::AddSplittedFragments(char const*)':
/home/prinz/nzbget-svn-new/ParChecker.cpp:695: undefined reference to `Par2Repairer::VerifyExtraFiles(std::list<CommandLine::ExtraFile, std::allocator<CommandLine::ExtraFile> > const&)'
ParChecker.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `ParChecker::CheckSplittedFragments()':
/home/prinz/nzbget-svn-new/ParChecker.cpp:640: undefined reference to `Par2RepairerSourceFile::TargetFileName() const'
ParChecker.o: In function `ParChecker::AddMissingFiles()':
/home/prinz/nzbget-svn-new/ParChecker.cpp:741: undefined reference to `CommandLine::ExtraFile::ExtraFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long)'
ParChecker.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `__gnu_cxx::new_allocator<CommandLine::ExtraFile>::construct(CommandLine::ExtraFile*, CommandLine::ExtraFile const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/new_allocator.h:108: undefined reference to `CommandLine::ExtraFile::ExtraFile(CommandLine::ExtraFile const&)'
ParChecker.o: In function `ParChecker::AddMissingFiles()':
/home/prinz/nzbget-svn-new/ParChecker.cpp:771: undefined reference to `Par2Repairer::VerifyExtraFiles(std::list<CommandLine::ExtraFile, std::allocator<CommandLine::ExtraFile> > const&)'
/home/prinz/nzbget-svn-new/ParChecker.cpp:772: undefined reference to `Par2Repairer::UpdateVerificationResults()'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `ParChecker::LoadMorePars()':
/home/prinz/nzbget-svn-new/ParChecker.cpp:602: undefined reference to `Par2Repairer::LoadPacketsFromFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `ParChecker::ProcessMorePars()':
/home/prinz/nzbget-svn-new/ParChecker.cpp:582: undefined reference to `Par2Repairer::UpdateVerificationResults()'
ParChecker.o: In function `ParChecker::RunParCheck(char const*)':
/home/prinz/nzbget-svn-new/ParChecker.cpp:326: undefined reference to `Par2Repairer::UpdateVerificationResults()'
ParChecker.o: In function `slot_rep':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot_base.h:84: undefined reference to `sigc::trackable::trackable()'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot_base.h:84: undefined reference to `sigc::trackable::trackable()'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/sigc++-2.0/sigc++/functors/slot_base.h:84: undefined reference to `sigc::trackable::trackable()'
ParChecker.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParChecker.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParChecker.o:/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: more undefined references to `pthread_cancel' follow
ParRenamer.o: In function `ParRenamer::CheckFile(char const*, char const*)':
/home/prinz/nzbget-svn-new/ParRenamer.cpp:308: undefined reference to `MD5Context::MD5Context()'
/home/prinz/nzbget-svn-new/ParRenamer.cpp:309: undefined reference to `MD5Context::Update(void const*, unsigned int)'
/home/prinz/nzbget-svn-new/ParRenamer.cpp:310: undefined reference to `MD5Context::Final(MD5Hash&)'
/home/prinz/nzbget-svn-new/ParRenamer.cpp:319: undefined reference to `MD5Hash::print() const'
ParRenamer.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParRenamer.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParRenamer.o: In function `ParRenamerRepairer':
/home/prinz/nzbget-svn-new/ParRenamer.cpp:60: undefined reference to `Par2Repairer::Par2Repairer()'
ParRenamer.o: In function `ParRenamer::LoadParFile(char const*)':
/home/prinz/nzbget-svn-new/ParRenamer.cpp:233: undefined reference to `Par2Repairer::LoadPacketsFromFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/home/prinz/nzbget-svn-new/ParRenamer.cpp:249: undefined reference to `MD5Hash::print() const'
ParRenamer.o: In function `~ParRenamerRepairer':
/home/prinz/nzbget-svn-new/ParRenamer.cpp:60: undefined reference to `Par2Repairer::~Par2Repairer()'
ParRenamer.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParRenamer.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParRenamer.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_dispose(std::allocator<char> const&)':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/bits/basic_string.h:235: undefined reference to `pthread_cancel'
ParRenamer.o: In function `__exchange_and_add_dispatch':
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: undefined reference to `pthread_cancel'
ParRenamer.o:/home/prinz/opendreambox/tmp/sysroots/dm8000/usr/include/c++/ext/atomicity.h:80: more undefined references to `pthread_cancel' follow
FeedFile.o: In function `FeedFile::SAX_getEntity(FeedFile*, char const*)':
/home/prinz/nzbget-svn-new/FeedFile.cpp:580: undefined reference to `xmlGetPredefinedEntity'
FeedFile.o: In function `FeedFile::Create(char const*)':
/home/prinz/nzbget-svn-new/FeedFile.cpp:388: undefined reference to `xmlSAXUserParseFile'
NCursesFrontend.o: In function `curses_clear()':
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:70: undefined reference to `clear'
NCursesFrontend.o: In function `NCursesFrontend':
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:168: undefined reference to `initscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:174: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:174: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:174: undefined reference to `keypad'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:175: undefined reference to `nodelay'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:176: undefined reference to `noecho'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:177: undefined reference to `curs_set'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:178: undefined reference to `has_colors'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:184: undefined reference to `start_color'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:186: undefined reference to `init_pair'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:187: undefined reference to `init_pair'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:188: undefined reference to `init_pair'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:189: undefined reference to `init_pair'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:190: undefined reference to `init_pair'
NCursesFrontend.o:/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:191: more undefined references to `init_pair' follow
NCursesFrontend.o: In function `NCursesFrontend::CalcWindowSizes()':
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:345: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:345: undefined reference to `stdscr'
NCursesFrontend.o: In function `NCursesFrontend::PlotText(char const*, int, int, int, bool)':
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:432: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:440: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:440: undefined reference to `wmove'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:440: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:440: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:440: undefined reference to `waddnstr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:443: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:443: undefined reference to `wattr_off'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:444: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:446: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:446: undefined reference to `wattr_off'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:434: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:434: undefined reference to `wattr_on'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:437: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:437: undefined reference to `wattr_on'
NCursesFrontend.o: In function `NCursesFrontend::RefreshScreen()':
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:479: undefined reference to `wmove'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:482: undefined reference to `refresh'
NCursesFrontend.o: In function `NCursesFrontend::ReadConsoleKey()':
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:1496: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:1496: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:1496: undefined reference to `wgetch'
NCursesFrontend.o: In function `~NCursesFrontend':
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:216: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:216: undefined reference to `stdscr'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:216: undefined reference to `keypad'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:217: undefined reference to `echo'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:218: undefined reference to `curs_set'
/home/prinz/nzbget-svn-new/NCursesFrontend.cpp:219: undefined reference to `endwin'
NZBFile.o: In function `NZBFile::SAX_getEntity(NZBFile*, char const*)':
/home/prinz/nzbget-svn-new/NZBFile.cpp:867: undefined reference to `xmlGetPredefinedEntity'
NZBFile.o: In function `NZBFile::Create(char const*, char const*)':
/home/prinz/nzbget-svn-new/NZBFile.cpp:680: undefined reference to `xmlSAXUserParseFile'
TLS.o: In function `TLSSocket::Init()':
/home/prinz/nzbget-svn-new/TLS.cpp:215: undefined reference to `CRYPTO_num_locks'
/home/prinz/nzbget-svn-new/TLS.cpp:222: undefined reference to `SSL_load_error_strings'
/home/prinz/nzbget-svn-new/TLS.cpp:223: undefined reference to `SSL_library_init'
/home/prinz/nzbget-svn-new/TLS.cpp:224: undefined reference to `OPENSSL_add_all_algorithms_noconf'
/home/prinz/nzbget-svn-new/TLS.cpp:226: undefined reference to `CRYPTO_set_locking_callback'
/home/prinz/nzbget-svn-new/TLS.cpp:228: undefined reference to `CRYPTO_set_dynlock_create_callback'
/home/prinz/nzbget-svn-new/TLS.cpp:229: undefined reference to `CRYPTO_set_dynlock_destroy_callback'
/home/prinz/nzbget-svn-new/TLS.cpp:230: undefined reference to `CRYPTO_set_dynlock_lock_callback'
TLS.o: In function `TLSSocket::Final()':
/home/prinz/nzbget-svn-new/TLS.cpp:253: undefined reference to `CRYPTO_num_locks'
TLS.o: In function `TLSSocket::ReportError(char const*)':
/home/prinz/nzbget-svn-new/TLS.cpp:302: undefined reference to `ERR_get_error'
/home/prinz/nzbget-svn-new/TLS.cpp:305: undefined reference to `ERR_error_string_n'
TLS.o: In function `TLSSocket::Close()':
/home/prinz/nzbget-svn-new/TLS.cpp:475: undefined reference to `SSL_free'
/home/prinz/nzbget-svn-new/TLS.cpp:488: undefined reference to `SSL_CTX_free'
/home/prinz/nzbget-svn-new/TLS.cpp:473: undefined reference to `SSL_shutdown'
TLS.o: In function `TLSSocket::Start()':
/home/prinz/nzbget-svn-new/TLS.cpp:396: undefined reference to `SSLv23_method'
/home/prinz/nzbget-svn-new/TLS.cpp:396: undefined reference to `SSL_CTX_new'
/home/prinz/nzbget-svn-new/TLS.cpp:406: undefined reference to `SSL_CTX_use_certificate_file'
/home/prinz/nzbget-svn-new/TLS.cpp:412: undefined reference to `SSL_CTX_use_PrivateKey_file'
/home/prinz/nzbget-svn-new/TLS.cpp:420: undefined reference to `SSL_new'
/home/prinz/nzbget-svn-new/TLS.cpp:428: undefined reference to `SSL_set_cipher_list'
/home/prinz/nzbget-svn-new/TLS.cpp:435: undefined reference to `SSL_set_fd'
/home/prinz/nzbget-svn-new/TLS.cpp:442: undefined reference to `SSL_connect'
/home/prinz/nzbget-svn-new/TLS.cpp:442: undefined reference to `SSL_accept'
TLS.o: In function `TLSSocket::Send(char const*, int)':
/home/prinz/nzbget-svn-new/TLS.cpp:504: undefined reference to `SSL_write'
/home/prinz/nzbget-svn-new/TLS.cpp:510: undefined reference to `ERR_peek_error'
TLS.o: In function `TLSSocket::Recv(char*, int)':
/home/prinz/nzbget-svn-new/TLS.cpp:532: undefined reference to `SSL_read'
/home/prinz/nzbget-svn-new/TLS.cpp:538: undefined reference to `ERR_peek_error'
Thread.o: In function `Thread::Start()':
/home/prinz/nzbget-svn-new/Thread.cpp:204: undefined reference to `pthread_create'
Thread.o: In function `SpinLock':
/home/prinz/nzbget-svn-new/Thread.cpp:109: undefined reference to `pthread_spin_init'
Thread.o: In function `~SpinLock':
/home/prinz/nzbget-svn-new/Thread.cpp:118: undefined reference to `pthread_spin_destroy'
Thread.o: In function `SpinLock::Lock()':
/home/prinz/nzbget-svn-new/Thread.cpp:128: undefined reference to `pthread_spin_lock'
Thread.o: In function `SpinLock::Unlock()':
/home/prinz/nzbget-svn-new/Thread.cpp:137: undefined reference to `pthread_spin_unlock'
Thread.o: In function `Thread::Kill()':
/home/prinz/nzbget-svn-new/Thread.cpp:227: undefined reference to `pthread_cancel'
Util.o: In function `ZLib::GZipLen(int)':
/home/prinz/nzbget-svn-new/Util.cpp:2152: undefined reference to `deflateBound'
Util.o: In function `ZLib::GZip(void const*, int, void*, int)':
/home/prinz/nzbget-svn-new/Util.cpp:2167: undefined reference to `deflateInit2_'
/home/prinz/nzbget-svn-new/Util.cpp:2173: undefined reference to `deflate'
/home/prinz/nzbget-svn-new/Util.cpp:2178: undefined reference to `deflateEnd'
Util.o: In function `GUnzipStream':
/home/prinz/nzbget-svn-new/Util.cpp:2192: undefined reference to `inflateInit2_'
Util.o: In function `~GUnzipStream':
/home/prinz/nzbget-svn-new/Util.cpp:2204: undefined reference to `inflateEnd'
Util.o: In function `GUnzipStream::Read(void const**, int*)':
/home/prinz/nzbget-svn-new/Util.cpp:2228: undefined reference to `inflate'
collect2: ld returned 1 exit status
make[1]: *** [nzbget] Fehler 1
make[1]: Leaving directory `/home/prinz/nzbget-svn-new'
make: *** [all] Fehler 2

hugbug
Developer & Admin
Posts: 7645
Joined: 09 Sep 2008, 11:58
Location: Germany

Re: [New Feature] Queue rework

Post by hugbug » 22 Jan 2014, 11:40

May be a missing include in one unit (like the known "tolower()"-problem).

Can you try if you can compile the previous version?

prinz2311
Posts: 466
Joined: 08 Dec 2012, 00:03

Re: [New Feature] Queue rework

Post by prinz2311 » 22 Jan 2014, 12:22

I have tested the older version and now the new also works. So something must have gone wrong the first time on my system.

prinz2311
Posts: 466
Joined: 08 Dec 2012, 00:03

Re: [New Feature] Queue rework

Post by prinz2311 » 24 Jan 2014, 10:23

Strange thing happened today (r934):

All of the sudden priority's weren't shown anymore for newly added nzb's in the webif. I tried to restart nzbget, shutdown but nzbget didn't restart. I logged into my pvr via shh (extremely slow shh reaction) and tried to stop it via commandline, nothing happened. I had to use killall and restart nzbget after that. The interesting thing: Now after the restart the 2 added download that didn't display any priority in the WebIF now showed the correct "very high" priority and the shh reaction was fast again. So something must have hung...

Don't know if it's related to the queue change or no. But never had that before the new queue.

prinz2311
Posts: 466
Joined: 08 Dec 2012, 00:03

Re: [New Feature] Queue rework

Post by prinz2311 » 24 Jan 2014, 10:47

Just happened again. So no coincidence.

Download added including Dupkey/score, but no priority. nzbget had to be killed via killall, after restart priority was displayed...

prinz2311
Posts: 466
Joined: 08 Dec 2012, 00:03

Re: [New Feature] Queue rework

Post by prinz2311 » 24 Jan 2014, 12:34

Additional Info:

Changing the Priority via WebIf for such a download works also. After changing the correct Priority is displayed without a restart.

hugbug
Developer & Admin
Posts: 7645
Joined: 09 Sep 2008, 11:58
Location: Germany

Re: [New Feature] Queue rework

Post by hugbug » 25 Jan 2014, 10:34

prinz2311 wrote:Download added, but no priority.
Fixed in r937. The priority wasn't show correctly (until restart) but it was working correctly.

The problem with not being able to shutdown NZBGet must be unrelated to this issue. It's probably not related to rework of queue too. Do you think the unresponsiveness of device was caused by NZBGet and not by other programs (enigma etc.)?

Thanks for reporting.

prinz2311
Posts: 466
Joined: 08 Dec 2012, 00:03

Re: [New Feature] Queue rework

Post by prinz2311 » 25 Jan 2014, 12:12

hugbug wrote:The problem with not being able to shutdown NZBGet must be unrelated to this issue. It's probably not related to rework of queue too. Do you think the unresponsiveness of device was caused by NZBGet and not by other programs (enigma etc.)?
That was only the first time. The other times I could restart nzbget.

But at that first time I only could shutdown nzbget via killall command (restart/shutdown didn't work). And after I did the killall the responsiveness was back to normal immediately. And I think it's not the first time that I think nzbget got unresponsive. I generally have to restart my box at least once a month because it's so unresponsive that I can't even get in via shh anymore. Even when I never used the pvr for anything during that time besides nzbget with Sickbeard. Because I only watched thing via PC Media Player during that time on my TV (and my TV has also a Tuner which I use most of the time for Live TV). So it's unlikely related to enigma, only thing that it could be alternatively would be Sickbeard which is running on the device.

prinz2311
Posts: 466
Joined: 08 Dec 2012, 00:03

Re: [New Feature] Queue rework

Post by prinz2311 » 04 Feb 2014, 11:45

r942

Bug splitting Collections.

I added a nzb paused. Then split one File from it and the new collection was added as queued (not paused), but didn't download... Only after a reload of nzbget it was displayed as paused and i could resume it.

Post Reply

Who is online

Users browsing this forum: No registered users and 19 guests