1. Test the replication on the server side, For that we have yalaforge => test.
Once we're happy with that, we roll out replication on zim.
then
2. zim => delft, zim => grunt
with the understanding that the replication packets may get invaladidated at any point during the test.
djce
ok, fair enough
how close is the code right now?
ruaok
the core code that manages the internal replication tables and the code that creates the database dumps is in pretty good shape.
djce
Is the make-dump code tied in to the Export code?
ruaok
on the replicant side, the code that takes a dumpfile and imports it is also in good shape.
djce
so that the exports can tie in with replication packet boundaries?
ruaok
the code that sticks the file on the ftp site/grabs it from the ftp side is largely non-existant.
no, that has not been addressed.
djce
well, that sounds trivial. no matter.
ok
ruaok
However, each of these scripts could use your careful eye to spot problems.
I plan to go in and look at the replication stuff tonight and make sure its up to snuff.
verify all my assumptions and write an XML dump script that yalaforge can use to populate the lucene search index.
djce
no you lost me there - how does this tie in with lucene?
ruaok
after that, if you could examine the server replication portions and give it a your seal of approval for the next server release, that would be awesome.
yalaforge and I have been thinking about how to update the lucene index from the DB.
The requirements are to fit in with our replication scheme and hopefully be indenpendent enough so that one could create a lucene index server, without actually requireing a postgres install.
The latter requirement makes for an excellently scalable system.
We could add more index servers as we need them. Or as the album tagger userbase grows...
So, to update the lucene index while people are using the index is tricky.
Thus yalaforge has come up with a shadow index scheme. We keep two indexed around at any one time.
One to serve queries and one that is being updated behind the scenes.
djce
interesting...
ruaok
then when an update has been applied to the shadow index, the two indexes rotate.
The update packets that need to be applied to the lucene index, are derived from the Replication data we already collect on the server.
so during the replication phase on the server, we will create a DB dump file for the table and an XML lucence update packet.
any lucene index grabs that from the FTP site and updates its shadow index and then switches the indexes out.
Does that make sense?
It seems overly complicated at first, but the amazing flexiblity we derive from it will make us glad later.
djce
sounds interesting. That all sounds good, if lucene makes us do that.
ruaok
to avoid various IPC issues that yalaforge and I have discussed, this seems like the best approach.
In the end the web site will do searches via making corba queries to the index server.
since the index server runs on java and we run on perl, yalaforge decided that corba is the fastest way to couple the two.
are we hitting acronym overload yet? :-)
djce
How much of this is theory so far?
ruaok
the lucene index server is getting there.
I've seen a test that builds indexes and accepts queries at the same time.
the replication stuff is theory right now.
yalaforge has created a DTD/xml example for the lucene replication stuff.
We had agreed to have this stuff finished in about 7 more weeks time.
yalaforge has another exam next week, so he won't be doing much.
But after that we will work on it more -- and so far he is making great progress.
djce
fair enough. good luck yalaforge :-)
ruaok
I have faith -- he is a very smart cookie.
djce
great. You guys have been busy
ruaok
indeed.
have you looked at the tagger?
WhiteDog
cannot convert parameter 2 from 'int' to 'int *'
any help? :D
ruaok
you need to pass in a pointer to an int, not an int
int foo;
NOT: function(foo)
BUT: function($foo)
er
BUT: function(&foo)
(the $ was a typo, sorry)
WhiteDog
oh :P
ok :)
djce
ruaok: no luck yet. I haven't worked out how to install the py-mb stuff
ruaok
easy.
download the bindings
then sudo python setup.py install
and that installs the libmb python bindings
djce
ImportError: No module named distutils.core
ruaok
you need to install python2.3-dev
djce
ok
thought it might be that... that was my next guess
ImportError: No module named ctypes
ruaok
ohh, you got icepick's new implementation of the bindings.
either back off one version, or install the ctypes python lib.