[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference tuxedo::dce-products

Title:DCE Product Information
Notice:Kit Info - See 2.*-4.*
Moderator:TUXEDO::MAZZAFERRO
Created:Fri Jun 26 1992
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2269
Total number of notes:10003

2264.0. "cdsd (Replica CDS server) coredump" by BHAJEE::AIGNER () Fri May 23 1997 11:38

We are using DCE 2.0A (Rev. 515) on Digital Unix 4.0A (Rev. 464).

In our simple DCE test configuration there are three CDS server machines
with the associated clearinghouses:

- /.:/archix_ch     (initial CDS master)
- /.:/delta_ch      (replica CDS server)
- /.:/dagobert_ch   (replica CDS server)

The directory /.:/subsys/PATIS/inst is created and replicated (master replica
is /.:/archix_ch).

I use the following simplified (for easier understanding) tcl-script
to setup/clean the CDS namespace:

######################
# begin of cds_cfg.dcp

##########################
#
# initialize CDS namespace
#
##########################

proc init {} {

  # create the master replicas of .../rpcex1/subsys subtree

  directory create /.:/subsys/PATIS/inst/rpcex1
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/hosts
  directory create /.:/subsys/PATIS/inst/rpcex1/subsys
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/subsys/MySystem
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/subsys/MySystem/MyClass
  directory synchronize $_p

  # create readonly replicas of .../rpcex1/subsys subtree in /.:/delta_ch

  directory create /.:/subsys/PATIS/inst/rpcex1 \
                   -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/hosts \
                   -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/subsys \
                   -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/subsys/MySystem \
                   -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/subsys/MySystem/MyClass \
                   -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p

  # create readonly replicas of .../rpcex1/subsys subtree in /.:/dagobert_ch
  # same as for /.:/delta_ch above (omitted here for simplification)
  
  ...

  # create the master replicas of .../rpcex1/hosts/archix subtree
  # in /.:/archix_ch

  directory create /.:/subsys/PATIS/inst/rpcex1/hosts/archix \
                   -clearinghouse /.:/archix_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys \
                   -clearinghouse /.:/archix_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys/MySystem \
                   -clearinghouse /.:/archix_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys/MySystem/ \
                   MyClass -clearinghouse /.:/archix_ch
  directory synchronize $_p

  # create readonly replica of .../rpcex1/hosts/archix subtree
  # in /.:/delta_ch

  directory create /.:/subsys/PATIS/inst/rpcex1/hosts/archix \
                   -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys \
                   -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys/MySystem \
                   -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p
  directory create /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys/MySystem/ \
                   MyClass -replica -clearinghouse /.:/delta_ch
  directory synchronize $_p

  # create readonly replica of .../rpcex1/hosts/archix subtree
  # in /.:/dagobert_ch (same as for /.:/delta_ch, omitted)

  ...

  # create the master replicas of .../rpcex1/hosts/delta subtree
  # in /.:/delta_ch (same as for host archix in /.:/archix_ch, omitted)

  ...

  # create readonly replicas of .../rpcex1/hosts/delta subtree
  # in /.:/archix_ch and /.:/dagobert_ch
  # (same as for host archix in /.:/delta_ch and /.:/dagobert_ch, omitted)

  ...

  # create the master replicas of .../rpcex1/hosts/dagobert subtree
  # in /.:/dagobert_ch (same as for host archix in /.:/archix_ch, omitted)

  ...

  # create readonly replicas of .../rpcex1/hosts/dagobert subtree
  # in /.:/archix_ch and /.:/delta_ch
  # (same as for host archix in /.:/delta_ch and /.:/dagobert_ch, omitted)

  ...

}


##########################
#
# cleanup CDS namespace
#
##########################

proc cleanup {} {

  # delete every directory (first the two replicas then the master) from
  # bottom up;
  # this is done by a recursive proc in the real procedure

  directory delete /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys/MySystem/ \
                   MyClass -replica -clearinghouse /.:/delta_ch
  directory delete /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys/MySystem/ \
                   MyClass -replica -clearinghouse /.:/dagobert_ch
  directory delete /.:/subsys/PATIS/inst/rpcex1/hosts/archix/subsys/MySystem/ \
                   MyClass
  directory synchronize $_p

  ...

  # and so forth; the master is automatically determined for each directory.
  # Until the last directory (root of rpcex1)

  directory delete /.:/subsys/PATIS/inst/rpcex1 \
                   -replica -clearinghouse /.:/delta_ch
  directory delete /.:/subsys/PATIS/inst/rpcex1 \
                   -replica -clearinghouse /.:/dagobert_ch
  directory delete /.:/subsys/PATIS/inst/rpcex1
  directory synchronize $_p

}


####################
# end of cds_cfg.dcp

In fact the CDS_Convergence of each master directory is set to low after it was
created and before the parent directory will be skulked, e.g.:

  directory modify /.:/subsys/PATIS/inst/rpcex1 -change {CDS_Convergence low}


When I test this script as follows:

dcecp> source cds_cfg.dcp
dcecp> init
dcecp> cleanup

all works fine.
But yet another init ends up in a coredump of the CDS servers for /.:/delta_ch
and /.:/dagobert_ch, just at the point where the first directory
(master replica of /.:/subsys/PATIS/inst/rpcex1) was created and the parent
directory should being skulked.
I can reproduce this manually by:

dcecp> dir create /.:/subsys/PATIS/inst/rpcex1
dcecp> dir synchronize /.:/subsys/PATIS/inst

when I restart the CDS servers, too.
Even dcesetup clean on the host delta and dagobert (and archix) doesn't help.

When I reconfigure the cell (clobber all systems and reconfigure them),
it only works for the first time again.

BTW, you may wonder about the immediate skulk of the parent directory
after the creation of each directory (master or replica), but without this
I often (enough) got the error:
  Error: Requested entry not found
when creating subdirectories later on.
In fact the script never finished without the immediate skulk.


Any ideas, helps or hints would be appreciated.

Thanks in advance.
Helmut
T.RTitleUserPersonal
Name
DateLines
2264.1access to core dump and .checkpoint file?TUXEDO::ZEEThere you go.Tue May 27 1997 14:299
cdsd should be able to handle what you are doing, although it is not
normal operating procedure to create subtrees in the namespace, delete
them, and recreate them again and again.  Could we get a core file
and the various .checkpoint files (the ones that will crash on startup) ?

FYI, to delete a subtree, you may want to look at the "cdscp delete subtree"
command.

--Roger
2264.2files available on TUXEDOBHAJEE::dhcp-204-144-203.rto.dec.com::aignerHelmut Aigner Patis Engineering NSIS MunichWed Jun 04 1997 13:4146
Roger,

I've created a compressed tar-file which contains the
/opt/dcelocal/var/directory/cds subtree (incl. cdsd core file
and .checkpoint files).
This tar-file is called aigner_cdsd_dump.tar_Z and I've copied
it (VMS copy) to TUXEDO:: .

You have to move it to a UNIX machine and recreate the subtree:

$ uncompress aigner_cdsd_dump.tar_Z
$ tar -xvf aigner_cdsd_dump.tar

We are using DCE 2.0a (Rev. 515) on Digital Unix 4.0a (Rev. 464).

I hope you can find and fix the problem.

> cdsd should be able to handle what you are doing, although it is
> not normal operating procedure to create subtrees in the
> namespace, delete them, and recreate them again and again.

Of course, we won't create, delete, recreate, ... namespace
subtrees in our final system. But we will probably have to
reconfigure parts of the namespace - or we should be able to -
without running in problems because of damaged CDS servers.
Automatic namespace creation and reconfiguration (with scripts)
is an important issue for our customer and the ones who have to
maintain the final system.


> FYI, to delete a subtree, you may want to look at the
> "cdscp delete subtree" command.

"dcecp> dir delete ... -tree" should do what you recommend.
But this only works for non-replicated directories.
If a subtree contains replicated directories, you can't delete the
whole subtree.
Of course, it would be great to have a command for explicitly
deleting a directory subtree (replicated or not) within a certain
clearinghouse, something like 
"dir delete [-replica] -tree -clearinghouse ...",
or for deleting a directory tree with all directory replicas.

Thanks in advance
Helmut