Thread: Bogus path in postmaster.opts
Since 8.0, postmaster.opts has been containing .../bin/postgres even though the postmaster was started. This was evidently broken by some Windows-related reshuffling. Earlier, CreateOptsFile was called with argv, now it's passed the result of find_my_exec instead. I'm not sure whether that change was wrong to begin with or whether find_my_exec is mishaving (it should return something containing "postmaster", no?). -- Peter Eisentraut http://developer.postgresql.org/~petere/
Peter Eisentraut <peter_e@gmx.net> writes: > Earlier, CreateOptsFile was called with argv, now it's passed the result of > find_my_exec instead. I'm not sure whether that change was wrong to begin > with or whether find_my_exec is mishaving (it should return something > containing "postmaster", no?). find_my_exec is not misbehaving: it's designed to expand symlinks, and would in fact be pretty useless if it did not. We could go back to storing the raw value of argv[0] in the opts file, but I rather like having the full path in there. There is another possible answer, and it's something I've been meaning to bring up for awhile. Is there a good reason why postmaster is a symlink to postgres, rather than a hard link? Surely the symlink way is not any more efficient. The thing that ticks me off about this is that it confuses gdb: if you say "gdb postmaster" and then "run", what gets passed as argv[0] is "postgres", thus breaking your test. So I not infrequently find myself manually replacing the symlink with a hard link in order to be able to test. If it'd result in nicer output in the opts file too, then all the more reason to change. regards, tom lane
Tom Lane wrote: > find_my_exec is not misbehaving: it's designed to expand symlinks, > and would in fact be pretty useless if it did not. I don't want to contest that in certain cases this is required but I can easily come up with scenarios (which perhaps no PostgreSQL user has encountered yet) where the currently behavior is broken. One example is a GNU Stow like installation management where each package is installed in a private directory and the canonical locations in /usr/local are symlinks. (It's altogether strange that this would distinguish between symbolic and hard links anyway, except that of course it cannot actually "resolve" hard links, since many installation schemes that one needs to cope with work the same with hard and soft links.) > There is another possible answer, and it's something I've been > meaning to bring up for awhile. Is there a good reason why > postmaster is a symlink to postgres, rather than a hard link? I don't know of one. Something I have thought of during the recent options reorganization is that we could do away with the postmaster/postgres dichotomy altogether. Just call the thing postmaster and give it a --single-user-mode option. -- Peter Eisentraut http://developer.postgresql.org/~petere/
Peter Eisentraut <peter_e@gmx.net> writes: > Tom Lane wrote: >> There is another possible answer, and it's something I've been >> meaning to bring up for awhile. Is there a good reason why >> postmaster is a symlink to postgres, rather than a hard link? > I don't know of one. Something I have thought of during the recent > options reorganization is that we could do away with the > postmaster/postgres dichotomy altogether. Just call the thing > postmaster and give it a --single-user-mode option. No strong objection here, though combining the two manpages is likely to be a mess :-( regards, tom lane