pan-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Pan-users] pan cmd line things


From: Duncan
Subject: Re: [Pan-users] pan cmd line things
Date: Tue, 3 Sep 2013 12:19:46 +0000 (UTC)
User-agent: Pan/0.140 (Chocolate Salty Balls; GIT 3b8c3f7 /usr/src/portage/src/egit-src/pan2)

markballard posted on Mon, 02 Sep 2013 15:47:14 -0400 as excerpted:

> I'm using linux (amd64/gentoo) and pan r0.139.

Greetings, fellow gentooer! =:^)

(~amd64 here, with layman and several overlays, and running a number of 
masked for testing prereleases and live-9999 ebuilds, including kde 4.11 
live-branch 4.11.49.9999 from the kde overlay, and pan-9999, my own ebuild 
based upon the (masked-as-live) pan-9999 ebuild available in the gentoo 
tree.)

> a couple things about cmd line/"--no-gui --verbose" for nzb files:
> 
> a)  I have primary and one fallback set in servers.xml but if I put an
> invalid port in for primary before starting pan (to test if cmd line
> mode handles multiple servers like gui apparently does) pan seems to
> ignore there's a backup and just sits there not d/l anything.

The standard way to temporarily disable a server is to set its 
connections to 0.  That disables it, without removing it entirely.

In theory, what pan does (at least in GUI mode, barring bugs) with an 
invalid port but non-zero connections set, is attempt connection to that 
server, but those tasks will remain in the task list, as it can't contact 
the server to execute them.  It SHOULD fallback to the other server, but 
the attempted connection to the first server will remain in the task list 
until pan is restarted, or until the task is manually removed.

Of course in no-gui mode, there's no GUI task list editing...

Meanwhile, there aren't a lot of users actually using no-gui mode, and 
last I knew, some bits of it were actually broken and their would-be 
entries in the pan --help output were commented out.  I remember reading 
the git-whatchanged entry for that commit when it happened.  But that was 
basically simply commenting out the --help entries for functionality that 
had been broken for awhile, and I don't think that has made it to an 
actual release yet, so I believe the broken no-gui functionality still 
appears in the help output for the latest release, which I believe still 
is the 0.139 version you say you're using.

If you happen to be a coder[1], I'm sure patches would be welcomed to fix 
the broken functionality, and even if not, having someone that's actually 
testing no-gui mode is definitely welcomed, since apparently that 
functionality had been broken for some time and nobody had actually 
caught and reported it.

But I'm not sure whether the no-gui functionality you were using was 
actually part of the known-broken bit that has been commented out, or 
not.  You'd have to unmask and try the -9999 version to be sure, and bug 
report based on it, since I know SOME of the no-gui breakage is already 
known and the options thus removed from the --help output, but I haven't 
followed it closely enough, not using that functionality myself, to be 
sure whether your bits are there, or not.

> b)  ctl-q shows in gui as how to close pan but I can't figure out how to
> properly close pan when using --no-gui ("q" nor ctl-q stop it, I have to
> ctl-c).

Yes.  ctrl-q is a very common X-based-app "quit" keyboard shortcut -- I 
believe the standard one for gtk/gnome apps.

But being primarily an X-app standard keyboard shortcut, it's not for non-
gui mode, which is actually designed to be run "headless", as part of a 
script invoked via cron job or perhaps from a context menu entry as an 
action associated with say the *.nzb filetype.

For that, no "quit" keyboard shortcut should be needed.  If you're 
testing the command at the commandline prior to scripting it and it 
hangs, that's what ctrl-c is for.  Otherwise, you'd use the standard kill/
killall/pkill/etc commands to send an appropriate signal, just as you 
would with any other CLI command that goes haywire.

> c)  I'm not finding a way to have pan not redownload part of a rar set
> that already exists.  for example I start an nzb d/l, have to stop pan,
> it has its tasks.nzb but it lists everything from the original nzb.  so
> to avoid "_copy" when I restart I have to edit those articles out of
> tasks.nzb (I could open queue and remove the existing ones there but in
> --no-gui that's not available; plus imm it's kind of clunky anyway
> having to manually tell pan in effect something was already d/l so don't
> d/l again).

Well, that's actually due to two factors.  The first is as already (sort-
of) stated, that pan's no-gui mode is designed to be invoked on-demand 
for a particular task, which it completes and then exits.  The assumption 
is that no-gui mode won't be terminated in the middle of a task and then 
restarted... people would use the GUI for that sort of thing.

The second has to do with how pan works with its message cache.  By 
default, the cache is only 10 MB, which is clearly smaller than many 
binaries these days... or even over a decade ago.

Story time! =:^)

I remember shortly after the turn of the century when I first started 
using pan after switching from MS and Outlook Express (I switched to 
Linux when MS did eXPrivacy, as that crossed a line I simply wasn't going 
to cross), and an ad-ware binary downloader of some sort I've long 
forgotten the name of now, how frustrated I was at how pan worked, 
because I expected to be able to download binaries to cache and then go 
thru them and save them off to permanent storage after they were all in 
local cache already.

As I had been accustomed to doing on the MS side, I setup pan to cache a 
bunch of binaries then went off to do something else (sleep or work, 
generally), expecting to come back to find them all downloaded and ready 
for me to go thru and save off locally.  But when I came back only about 
10% of the messages I'd told it to download were shown as cached!

So after some grumbling, particularly about the stuff that was no longer 
available as it had expired in the mean time, I set it up to do again, 
and WATCHED it this time.  Then I watched in amazement as pan proceeded 
to delete the messages it had JUST downloaded, without my even getting a 
chance to read them!

Of course what was actually happening was that pan, still set to a 10 MB 
cache, was deleting the oldest messages in ordered to make way for the 
new ones, all the while keeping the cache under 10 MB.

Needless to say, when I figured that out, I quickly upped the cache to 
the then maximum allowed 1 GB, and my first pan bug report (and possibly 
my first Linux bug report actually filed) was a request to up the cap to 
the 4 GB or so that was at that time the size of the dedicated partition 
I was using for pan cache.

I remember Charles Kerr (pan lead dev back then) deciding to up the cap 
to the then huge (considering the size of disks back then) size of 20 
gig, tho he kept the default 10 MB size.  But I was happy, as with the 
appropriate cache size set, I could then use the full partition I had 
dedicated for pan cache, and messages no longer disappeared from cache 
before I even had a chance to read them. =:^)  I don't believe there 
actually is a maximum cache size cap at all, today.  If you have the 
space, I /think/ a setting of 100 Tebibytes would work in terms of cache 
size, tho that's untested and my cache remains only in the tens of gigs 
today.

(Additionally, it's worth noting that pan currently stores its entire 
threading tree in memory, reconstructing that tree every time it starts, 
making either the read-in-time (minutes for a several gig cache on 
spinning rust, here, with a cold disk cache, tho switching to SSD lowered 
that to less than minute again) or the size of the tree in memory (a 
bottleneck people running 32-bit pan run into frequently these days, 
since AFAIK 32-bit apps are limited to 2 GiB memory usage with the 
default kernel settings, while that can be raised to 4 GiB with the 
appropriate kernel config, even that's too small on some groups) being 
the practical cap there, likely to be reached WELL before a 100 TiB pan 
message cache would fill up!)

As with your use of no-gui mode today, the problem back then was one of 
assumptions.  As a user, my assumption was that what I downloaded to 
cache would stay there until I deleted it.  But pan had been created with 
rather different assumptions about cache, assumptions that are still in 
the defaults today, altho thankfully, those defaults can be changed to 
better fit the way *THIS* particular user works. =:^)  

Pan's assumption (or more correctly, that of its devs) back then (and 
still by default) was that users would save files off directly instead of 
saving them to cache first, then browsing the local cache from within 
pan, as I was used to doing on the MS side.

But the good thing was that with a little tweak to the cache size and 
ultimately to the max cache size, my assumptions could be met as well.

Anyway, how that relates to your issue is...

If messages happen to still be cached, pan won't redownload them, since a 
cached file for that message-id already exists (pan uses the message-id 
as the filename, which works since they're supposed to be globally 
unique, making it simple to see whether a particular message is already 
cached or not).

Which means if you set your cache size high enough, having a task attempt 
to run over again, with at least part of the component messages already 
cached, will at least not actually redownload those messages.

But you'd still have the _copyN problem, since that's separate from 
whether the messages are actually cached or not.

Again, it's a matter of differing assumptions.  You're obviously making 
different assumptions about how no-gui mode is supposed to work, than the 
pan devs did.

But as with my case all those years ago, the tweaks necessary to support 
the differing assumptions should be pretty small.

The bottleneck there is actual developer time to implement the necessary 
patches.  Heinrich has been the developer that has done the most work 
with pan recently, including the commit that commented out the broken 
bits of no-gui mode from the help output.  But he hasn't had near the 
time recently to work on pan that he had for the six months to a year 
that he was so active, so not that much is happening ATM.

If you happen to be a coder, and DO have some time, that would be 
WONDERFUL, since then we'd actually have a coder working on pan that 
actually uses no-gui mode enough to give it the testing and support it 
has been lacking all these years, and pan could become a major gui-less 
news client as well, as befits a news client which has always had the 
goal of being the Pimp-Ass-Newsclient (thus the name PAN, which until the 
rewrite some years ago, was most properly always in ALL CAPS as it was 
and remains an acronym, tho of course the pimp-ass part is not so 
acceptable today, so "pan" it has become, with pretty much only the folks 
who have been around for awhile or who have read my remarks about it 
here, knowing to what "pan" actually refers).

> or maybe the trouble is I can't find a way to stop pan gracefully in cmd
> line mode before entire nzb d/l has finished?  ie if I could it would
> remove from tasks.nzb/queue what's already been d/l?

Assumptions... and lack of people actually using no-gui mode, again...

> otoh wrt nzb imm it would still be handy if pan removed anything in the
> queue/tasks,nzb when it sees the filename is already there.

As mentioned, at least it does that with cache, not re-downloading 
messages already cached.  But you won't see it in action much with the 
default 10 MB cache size. =:^(

Also, I'd guess it'd need to be made a commandline option.  Because in 
some cases filenames are very common (for instance, grabNNNN.jpg as a 
default name for stills grabbed from a video), and people might actually 
want the _copyN files where they're *NOT* duplicates.

Alternatively, make it download and save to a _copyN file by default, 
then do a size and perhaps checksum comparison, and delete the _copyN 
file if they're identical.  That's safe enough to be default behavior 
(particularly if checksum-checked), since I can't imagine people actually 
wanting the _copyN files if they really are dups -- in that case if they 
wanted a copy they'd do a local copy.

Then the commandline option could be used to turn on the rather less safe 
always overwrite mode, for people who were more concerned about disk 
space usage and a whole slew of _copyN files even if NOT identical, than 
they were about potentially losing an earlier non-duplicate download 
simply because it had the same name.

> d)  a minor thing is there's no "time/files remaining" kind of
> notification using "--no-gui --verbose".

As I said, no-gui mode is designed to be scripted and run headless, or 
for trouble-shooting, possibly from the CLI shell, and thus wouldn't 
normally need progress output.  However, were progress output available, 
--verbose would indeed be the logical method of enabling it.

Again, no-gui mode has really been quite neglected as few use it.  So 
someone actually using it to report bugs is definitely welcomed, but 
unless you're a coder that can provide patches as well, it might take 
awhile to get anything more than punt-and-comment-out-the-corresponding-
help-output fixes.

But if you happen to be a coder that can actually provide the patches 
too, well then, you're fixes should be even *MORE* welcomed! =:^)

In this specific case, I definitely see no reason why a reasonable no-gui 
mode progress output patch, with that output activated by the --verbose 
switch, wouldn't be welcomed.  (Of course the usual caveats about coding 
style and etc apply, but I guess coders should take that as a given.)

---
[1] Coder:  Unfortunately I'm not a coder, tho I know enough about it to 
sort of follow some patches and to occasionally do my own, as well as to 
follow the gist of many developer discussions.  I sometimes describe that 
as a "sysadmin level" of understanding, but it's basically the same level 
of understanding a typical gentooer might have, tho I've been on gentoo 
for a decade early next year as well, and I know my own understanding has 
continued to grow in that time, so I suppose I've a bit more experience 
and depth of understanding there too than the typical gentooer.

Meanwhile, my claim to any sort of authority here is simply due to the 
fact that I've been active on-list for over a decade now (and I believe 
it's fair to say, the MOST active in reasonable replies, for much of that 
time), and as such I function as sort of an institutional memory for both 
users and real developers, as I generally reply, as here, not only direct 
answers, but with more detailed explanations of why it works that way, as 
well.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman




reply via email to

[Prev in Thread] Current Thread [Next in Thread]