archie/prospero/patches/LOG
2024-05-27 16:13:40 +02:00

493 lines
16 KiB
Plaintext

1 April, 1994 -- swa merging in mitra patches.
10Mar93-18Nov93T+.patch -- ignored; generated by mitra but not in the
important list. I reviewed it just to remind
myself what had changed and to set a context for
this work.
Mitra wasn't kidding -- it really was 20,000 lines of difference. A
lot of that was .PS files though, thank goodness.
Note: BCN has checked out a few source files; may be future problems.
Returned to work on April 5, at 8:45 pm.
10Mar94.newpsite.patch: an existing ISI patch. Ignored.
10Mar94.bug.patch:
flushed include/p_open_tcp.h (gone from FILES).
reordered include/ardp.h; all included
[done]
fixed mitra's concerns about dirsrv_v1.c.
bug1.patch:
p_initialize() change makes sense.
regex bug makes sense.
merging it in.
debug.patch:
debugging code looks ok.
getting rid of some weird debugging code was fine.
purify.patch: done
purify1.patch: done
pfailure.patch:
maybe pointless, as mitra said. Added it with one minor
change: now active only when DEBUG_PFAILURE is defined, not when
NDEBUG is not defined.
[done]
pfailure1.patch: [done]
debugNwarn.patch:
I solved the ctype.h problem with isascii() in a
different way, since isascii() isn't a part of the POSIX
standard. I just wrote an isascii() macro for the three
places Prospero uses it. So mitra's revised ctype.h didn't
get included.
lib/pfs/strtok.c is vestigial; the only place it's used is in
the WAIS code, which should use the standard library version
of strtok(). I'm removing lib/pfs/strtok.c from the
distribution.
other such functions that are now standardly available on new
UNIX releases should be removed from the Prospero distribution
as well, or at least moved to the misc directory.
lib/pfs/strspn.c and others.
I'd already fixed the -Wshadow `warnings with prototypes in
include/ardp.h and include/pfs.h, but in a slightly different
way than you did; six of one, half a dozen of the other. I
left it my way out of inertia; your solution was good too.
mitraopt.patch:
my addition of support for GENERATION will change a bit of this.
See the top level Makefile. Note that I haven't tested this
GENERATION macro.
can you explain to me some time what you use the 'echobinfiles' to
actually do?
I modified .gdbinit to include most of your stuff.
I added your definitions of 'tags' to the master makefile.
` rest I did not include.
mitraopt1.patch:
fixed the installdirs: target in the top-level Makefile that this fixes.
see above comment about 'generation'
Rest I did not include.
mitraopt2.patch:
did not include.
thread.patch:
I fixed the bogus code you pointed out in dsrobject_v6.c and dsdir.c
I did not include your program user/pfsinit, since I felt that
it was not of widely general utility, except as an example.
---went to sleep at 4:15 am, 4/6/94---
12:23 pm, 4/6/94 -- back on
finishing threads.patch:
the patch includes modifications that I already made to my
sources and later applied to yours, but this doesn't affect you since
those patches are present in my source in any case.
(lib/psrv/dsdir.c, lib/psrv/dsrfinfo.c, a couple of others).
thread1.patch:
a nice series of patches. many thanks.
Adding the close() operations in case of error return was great.
I am not entirely convinced of the validity of the changes to
the dispatching loop in dirsrv(). I have been looking over the
solaris manual pages for select() and friends; it's not clear to me
that select() is guaranteed not to block. I hope to be able to discuss
this with you.
[done]
doc.patch:
I did not include pandora.todolist in the prealpha, because that is an
internal document for Pandora and ISI to use, not a general part of
the release. It's in my sources though and I'm being mindful of it.
I added documentation to the doc/system_calls file so that it woudln't
confuse a new user.
[done]
aolwait.patch:
did not include change to ARDP_DEFAULT_TIMEOUT from 4 to 6 in
include/ardp.h; this should be a special change you make in mitraopts,
I think.
I similarly did not include your changes to include/plog.h to
change the L_WTTIME_THRESHOLD, L_SYSTIME_THRESHOLD, and
L_COMP_SVC_THRESHOLD, and others that can be configured in
<pserver.h>. I added documentation to include/pserver.h and
include/plog.h to make it clearer to the users that these defaults
can be overridden more elegantly by editing pserver.h.
Please let me know if you think we should change any of the defaults
in include/ardp.h or include/plog.h for general purpose use; I'm open
to suggestions.
I did not make the changes in this patch to ardp_pr_actv.c or
ardp_send.c, because the comment in ardp_pr_actv.c file indicated that
it was a temporary change to test a particular theory. Please let me
know if you want them to be a permanent part of the distribution.
After reading through this patch and thinking about it, I did
not merge any of it into our sources. We may want to discuss it if
there are things you feel are of general use. I was uncomfortable
adding ARDP_WAIT_TOO_LONG to the standard ARDP library error codes
without further discussion with you.
solaris.patch:
I changed ARDP_MY_WINDOW_SZ for Solaris from 9 to 6 in the
master sources; please let me know if this was correct.
I am wondering if -lmalloc (which I see in the compilation
arguments in server/Makefile) is always necessary on SOLARIS, or
whether it's just a special-purpose thing that you're doing. Please
let me know.
None of the rest of this patch seemed like something that
should go into the master sources.
pand05.patch:
unused.
6:46 pm: done
4/11/94,
4:45 pm: Done with pfs_threads.h. All patches complete.
Summary of work:
/nfs/gost/build/10Mar94.patched/patches/done:
10Mar94.bug.patch 10Mar94.doc.patch 10Mar94.purify1.patch
10Mar94.bug1.patch 10Mar94.pfailure.patch 10Mar94.thread.patch
10Mar94.debug.patch 10Mar94.pfailure1.patch 10Mar94.thread1.patch
10Mar94.debugNwarn.patch 10Mar94.purify.patch pfs_threads.h
/nfs/gost/build/10Mar94.patched/patches/half-done:
10Mar94.mitraopt.patch
/nfs/gost/build/10Mar94.patched/patches/ignored:
10Mar93-18Nov93T+.patch 10Mar94.mitraopt2.patch
10Mar93-18Nov93T+.patch.~1~ 10Mar94.newpsite.patch
10Mar94.aolwait.patch 10Mar94.pand05.patch
10Mar94.mitraopt1.patch 10Mar94.solaris.patch
Issue: Our overriding stdlib.h has the difficulty that 'putenv'
doesn't appear in the include files. Neither POSIX nor ANSI C have a
standard environment setting function.
Later cleanup:
ctype.h: see above.
stdlib.h:
I #ifdef'd this with SOLARIS, renamed it solaris_stdlib.h
renamed fout_of_memory to p__fout_of_memory. Renamed is_out_of_memory
to p__is_out_of_memory. Renamed finternal_error() to p__finternal_error().
Moved re_comp_exec to lib/pfs/re_comp_exec.c. Renamed it to p__re_comp_exec.c.
changed dirsrv_internal_error_handler() back, since the test against
the out_of_memory variable seemed incorrect to me. Please talk to me
if you think this change should go into the release.
Fixed problems with fprintf() in lib/psrv/plog.c
Looked at the pcompat library again, significant restructuring:
app/Makefile.pcompat and app/Makefile.nopcompat are now both just
app/Makefile.
lib/pcompat/Makefile.pcompat and
lib/pcompat/Makefile.nopcompat are now both just
lib/pcompat/Makefile.
in list_macros.h, please explain this comment:
/* someone else uses the above code, they just don't have it in a macro!*/
---
ietftypes is now installed just in P_BINARIES by default, not in /usr/local/lib
---
April 29, 1994:
Started installing a new batch of MITRA patches, completed on 27 April 1994.
purify2.patch -- done
thread.patch:
this was modified from the first time I applied thread.patch. This
time, pfsinit and pfsinit+ were no longer in the patch file. That
seemed appropriate to me. IGNORED
thread2.patch:
internal_err.c has changed in such a way that the changes this patch made to
internal_err.c are no longer useful..
I had already made some of the changes to lib/psrv/dsrfinfo.c, but in
a slightly different way.
thread3.patch: done
May 1, 1994
thread4.patch: stuff for vcache. looks good. Some of the function
argument renaming things (done for the sake of -Wshadow) were things
I'd also done in a different way. DONE.
doc1.patch: DONE.
aolwait.patch:
I had to be careful with this one. I assume you did not intend to put the changes to plog.h into general distribution.
I also did not understand the changes you made to ardp_pr_actv.c and
therefore I did not apply them.
I also did not understand why you turned off the retry count.
In general, I do not understand the ARDP_WAIT_TOO_LONG error and how
it fits into our general interface. As it stands, it seems
AOL-specific enough that I'm uncomfortable incorporating it as it
stands into our sources; I would be glad to discuss some general
mechanism we could use to accomplish the same end. One is clearly
needed to solve this problem (swa: Discuss with BCN)
I think the change (to call ardp_rwait when there's a queue) is good.
I think we need a general hook in the ARDP code so that you can set
such a function from a higher level; that section of the ARDP code is
not general enough (for instance, it currently contains archie-specific code.)
(NOT APPLIED)
dnscache.patch:
I am not comfortable with configuring the behavior of ARDP library
stuff in <pserver.h>.
a) sometimes people compile just the Prospero clients, not the server.
This makes the whole ARDP library dependent upon <PSERVER.H>
b) ARDP.H needs its own separate configuration file so that it can be
separated from the rest of Prospero.
This change has been incorporated into the sources; we should change
the configuration in the future.
c) your change to lib/pfs/myhost.c was one I'd made in a
slightly different way.
DONE
dnscache1.patch: DONE. Good patch.
dircache.patch:
This is a note to myself to reconcile include/pserver.h with the
master include/pserver.h.dist. This patch changed pserver.h. In the
future, changes to the distribution pserver.h should be made to
include/pserver.h.dist. I will have to implement this change to our
configuration proceedings.
PATCH DONE
memleaks.patch: GOOD PATCH. DONE
ackall.patch: This is not listed in apply.patches. I assume that it
should not be applied. In any case, the change to lib/ardp/ardp_accept.c should not be inside an #ifdef PFS_THREADS.
NOT APPLIED.
solaris.patch:
This patch has configuration changes that should only be configured
under solaris interleaved with things that should be in the general
distribution (e.g., the comments on what you need to configure to use
SOLARIS). I have used judgement to make the changes that seemed to me
to be general.
We need a more general way of modifying <ardp.h>
PARTLY APPLIED
solaris1.patch, solaris2.patch:
pfsinit doesn't striike me as generally useful.
NOT APPLIED
All patches through April 27th now applied.
Now to compile (without PFS_THREADS):
Prospero wouldn't compile with PFS_THREADS turned off until I #if 0'd out
the special code in <pfs_threads.h> that redefined locked_fopen()
in case of threadless compilation.
That code should be reinstated, for efficiency, but only when we add
appropriate #ifdefs to comment out the whole file locking set of code
when not multi-threaded.
I have a new version of include/pfs_threads.h that is compatible with yours.
--
I made a significant change to lib/pfs/pmap_cache.c: instead of
EXECVCACHE being the special option, the special option is now called
INCREASE_CLIENT_EXECUTABLE_SIZE_DO_NOT_EXEC_VCACHE. It is heavily
commented in include/psite.h, with an explanation of the circumstances
under which one might enable it. The default is to definitely not
have it enabled.
If you would like the vcache library to stay a part of the release,
then that libpvcache code will need a great deal of work, work that we
don't have the time to put into it. All of the external identifiers
in libpvache() will have to start with a p__vcache, except for a few
strictly defined interfaces. Otherwise, anybody in the outside
linking with that library will encounter problems.
Also, the interface to that library should be documented somewhere
(just a half-page explaining how you interact with it and how you link
with it). Also, the dependencies problems will need to be fixed.
Right now, it's really awkward to use and to explain to others how to
use it; thus my reluctance to include it as a regular part of the
distribution.
Also, it's not clear to me that that code doesn't memory leak; if it
doesn't, please change the comment at the head of vcache.c to explain
that we've been using it commercially and have avoided leaks by that
means.
I am leaving the code in right now, but in an unsupported status,
because of the above-mentioned problems with it.
--
The client-side caching in the VCACHE library is not something I'm
comfortable putting into the release right now. The
Also, the caching strategy needs to be
documented in the library manual. Also, a policy for cleaning old
objects out of the cache and keeping it from taking over the disk
space needs to appear.
--
Another issue is that comments in our code should be appropriately
spelled. It's full of "dont" and "doesnt" and "wont" and "couldnt"
---
I made many changes to the configuration stuff.
I have cut out your 'bintar' and 'echobinfiles' dependencies; if you need
them back we can talk about it.
--
I have gotten rid of your test dependencies in user/vcache/Makefile.
---
I got rid of the 'pure' dependency in the top-level and server makefiles. The code is here if you want to use it for yourself:
in top Makefile:
##
## This target is used only when using PURIFY.
## Ignore it for normal work.
## This only debugs the server for now. Needs to be modified for your needs.
## Mitraism.
pure:
for i in server ; do \
( cd $$i; \
echo "Making in $$i"; \
$(MAKE) $(PASTHRU) pure 2>&1 | $(SED-SCRIPT) ) ;\
done
in Makefile.config:
##
## PURIFY
##
## Purify is a developer's tool used to check for memory leaks and other error
## conditions.
## If you have never heard of it or if you don't use it, just don't worry
## about it.
# If you use Purify, you can specify a command syntax for it
# Make a purified dirsrv with 'make pure'.
PURIFY = purify
# PURE_LIBS is usually LIBS , except on Solaris when it excludes thread
# No idea why Mitra needed -lmalloc.
# PURE_LIBS = -lsocket -lnsl
PURE_LIBS = $(LIBS) -lmalloc
# This is for PURIFY
# Note that problems with threads may have to be debugged with -g, not
# with -ggdb3.
PURE_CFLAGS = -g $(GCCWARN) $(GCCTRY)
in server/MAkefile:
## Used when using the special PURIFY package.
## It is not clear to me why this target is needed, but mitra uses it.
## It may be yanked out of the full release.
pure: pure_dirsrv
pure_dirsrv: $(DIRSRV_OBJECTS) ${SRV_LIBS_DEPENDENCIES}
${PURIFY} ${CC} ${F_CCL} -o $@ $(DIRSRV_OBJECTS) \
$(SRV_LIBS) $(PURE_LIBS)
---
gopher_gw_diag_mutexes() and gopher_gw_init_mutexes now called
from DIRSRV,, not lib/psrv/psrv_mutexes.c. This eliminates
ordering/dependency problems.
--
another practice that should be eliminated is that of declaring
subfunctions inside master files; they should always be in include files.
--
It is not clear to me why VLDEBUGBEGIN and VLDEBUGEND should be left
in the sources. Ditto CHECK_MEM(). Is there any reason why they are
still useful? If not generally useful, they should be removed before
the release.