i-scream documentation viewer

minutes-20001113b.txt

Minutes of Meeting, 13/11/2000 @ 14:00
Location: Eliot College, E3E room 8

Present: ajm4, tdb1
Absent: none

This meeting was between ajm4 and tdb1 to discuss and
possibly implement parts of the CORE and FilterManager
elements of the system.



Initial discussion was on the configuration system of the
CORE which has been partially completed to date.  A key
decision that was made was that it will NOT be possible
for the elements of the system to update their own
configuration, as this will cause difficulties if the user
wants to use the file themseleves (ie, add comments).  This
isn't seen to be a real problem though, as it was only going
to be a "funky" extra ;-)

[tdb1: this will also solve security issues with 
       unauthorised third parties changing settings.]

A standard has almost be devised for filenames of 
configuration files. As it stands all hostname properties 
will be get in a file with the following name;

hostname.domain.properties

nb. This will always be *lower case*. This is important as 
    some hosts (eg. stuE...) have mixed case, so having all
    lower case saves confusion.

However, any other config files (such as the filterManager) 
can have any name in any case. The file itself will be of 
the name format;

name.properties

So in the case of the filterManager this would be 
"filterManager.properties".

A standard should be defined here for concistency.

Next point was whether or not we would support elements
being able to be updated without restarting them, ie. a host
would be able to detect its configuration has changed and 
adjust accordingly.  The method chosen was to use the last
modified date stamp of the configuration file as an
indicator.  When a Configuration object is passed to an
element of the system it can determine when the loaded
configuration was last edited.  The element of the system
can then periodically (the period can be set in the
configuration ;-) ) ask the Configurator if its
configuration has been updated, and act accordingly.  The
methods: 

     long Configuration.getLastModifed() and
  boolean Configurator.isModified(String conf, long curTime)

where thus implemented and the configurator test class
modified to include a test of this system.

It should also be noted at this stage that a java 'long' is 
defined as a 'long long' in the IDL->Java mapping.


The next item discussed was the CORBA IDL and general system
package structure.  It was decided to use the ukc domain as
the root identifier for the project.  Packages therefore
follow the naming:

    uk.ac.ukc.iscream.<package>.<class>|<sub-package>
    
The IDL and currently implemented classes were updated to 
refelect this change.



The next item to be discussed was the initial thinking and
possible implementation of the FilterManager.  An initial
FilterManager class was fleshed out with hooks to the logger
and the configurator, it then creates a FilterListener class
which will listen for new Hosts trying to connect to the
system.  It was NOT decided how Hosts should find the system
however a method similar to the WPAD system used to locate
web caches was suggested by tdb1.

A Host contacts the FilterManager to initialise itself and
obtain a host and port number of a Filter that it will talk
to. When the FilterListener is contacted by a host it spawns
a HostInit object to handle this intialisation.  The first
thing a Host does is obtain its configuration, this is done
by the HostInit object obtaining the configuration of the
host on its behalf.  An initial protocol of how this system
works is as follows (of course this is subject to later
alteration, but seemed like a "good idea at the time"):

Host                    FilterManager.HostInit
    STARTCONFIG ->
                        <- OK | ERROR
    LASTMODIFIED ->
                        <- LASTMODIFIED
    DO {
        PROPERTY ->
                        <- VALUE | ERROR
    } UNTIL GOT CONFIG
    
    ENDCONFIG ->
                        <- OK

If there is an ERROR returned after STARTCONFIG, this
indicates to the Host that there is no configuration 
available for it at this time.  It may be possible to
continue using default values, but this is up to the host
configuration.  Again, this is not a certain feature and
should be discussed with other members of the group.

If the property section returns an ERROR then this indicates
to the host that that property requested doesn't exist, the
Host will then deal with this either by ending with an error
on the local system or by ignoring it if it can.

The above features were implemented.



The next item needed to be developed is an architecture for
FilterParent's and FilterChild's, as the next stage of Host 
initialisation is to be passed a 'reference' to a
FilterChild.  This 'reference' will be a server and a port
and not a reference in the CORBA or Java way of thinking.

It was noted that on a "heart beat" with the system, a Host
should check to see if its configuration has changed.  If it
has it should then re-initialise itself.  This will allow 
configuration changes to be made to any part of the system
knowing that on the next "heart beat" the configuration will
take effect.  A point to note about this is that if there is
an error in the configuration the Host will simply error and
die.  What we may want (but still undecided) is a constant
retry until the config is ok.  So the system administrator 
will see in the logger destination that there has been an
error in this new configuration and can make changes to 
rectify the problem, without having to interact with the 
Host program itself.



All code generated was placed in the "experimental" tree of
CVS, awaiting approval from other group members.  It should
also be noted that although CVS records tdb1 as the 
'checker inner', it was infact ajm4...as he was the king of
code during this meeting ;-p

Many small bug fixes were made to the existing code.

It was also noted that there is a need for coding standards.

As we had reached an appropriate stage to end, and given the
late hour, it was decided to conclude the meeting.  It was,
after all, nearly 7 hours of coding ;-)

Since this meeting took place tdb1 has produced Makefiles
to allow easy compiling and configuration of the code.


Meeting was concluded @ 20:45. Next meeting booked for 11:00 
on Wednesday, until 12:30. Meeting with iau @ 13:30 on that 
day.