User:Fahadinfy
From Wikipedia, the free encyclopedia
Documentation Information
Document Name: | GroupNotifierSupportGuide.doc |
---|---|
Version: | 0.2 |
Last Updated: | Mar 09, 2007 |
Document History
Date | Version. Revision | Modified By | Comments |
---|---|---|---|
Feb 02, 2007 | 0.1 | IS-APS Support Group | Initial Version |
Mar 09, 2007 | 0.2 | IS-APS Support Group | Procedure and Process info added |
Contents |
[edit] Application Overview
[edit] Introduction
This document will serve as complete support guide for Group Notifier
Apple provides several features for .Mac users, some of which are Mail, Groups, iDisk, Photocasting, iWeb, etc. .Mac Groups allows users to Create a private password-protected website for group images, message boards, announcements, calendars, member list, links to other websites of interest.
When a group is created, information about the group such as Owner, Members, Privileges, etc… will be stored in the database. Group Notifier is an application to resolve group mail ids to get individual ids and helps to keep information about the groups up to date.
[edit] Working
.Mac allows users to create Groups and manage them for features such as group mails, message boards, calendars, etc. Information about the Different groups are stored in IDP2 database in the table ID_GROUP_MEMBERSHIP. IDP2 is the transactional database where all the transactions related to the group happens. COMPASS is subset of the main database where all the changed information about the groups are stored. ID_GROUPS_DATA is the table where all the information are stored. GCACHE is cache host in the mailing system. GroupNotifier is an application that helps to maintain the group membership information.
Whenever the group membership information is changed, it is updated in the IDP2 database in ID_GROUP_MEMBERSHIP table. Group Notifier processes scan the changes in ID_GROUP_MEMBERSHIP table in IDP2 database and communicate the changes to ID_GROUP_DATA table in COMPASS database.
GroupNotifier is a C program, which forks several SyncDs and a workerD. SyncD’s scan ID_GROUP_TO_COMPASS table for changes and push the changes to id_group_data table in compass database. WorkerD scans id_group_data for changes and send XXPIRE Message to the GCache proxy Servers. Through this the changes are communicated to GCACHE, which refreshes itself from the Compass database.
[edit] Architecture
Image:IS-APS Support-Group-Notifier Architecture.jpg
Image:IS APS Support-Group-Notifier Compass DataFlow.jpg
[edit] Technical architecture
[edit] Directory Structure
Image:IS-APS Support-Group-Notifier structure.jpg
1.Bin: The bin directory contains the executables and scripts to start/stop/ Group Notifier application.
- run.ksh: script to start/stop groupNotifierCtl Exe.
- groupNotifierCtl: GroupNotifierCtl Exe file.
2.Conf: This directory contains configuration files used to configure groupNotifierCtl application
- groupNotifierCtl.conf: Contains configuration parameters which can be set to modify the behavior of the application
Sample Conf file: <br> ###0 is stop ; 1= start; 2=pause; 3=stopnow; RunControlFlag=1 ### 0: Info, 1: Warning, 2: Debug, 3: Detail LoggingLevel="1" ### Sysadmins to be paged/emailed about status SysAdmins="pai@apple.com,ramesh@apple.com,isdevl2@group.apple.com" ### min 1, max 1 NumberOfNotifiers=10 ### CacheDHost #CacheDHost = gcache01 CacheDHost = gcache02 ### CacheDPort CacheDPort=8888
3. Install: This directory contains files to install Group Notifier
- install.ksh: Script to install the groupNotifier
- groupNotifierCtl.ksh.tmpl: Template for GroupNotifierCtl file
- groupNotifierCtl.conf.tmpl: Template for GroupNotifierCtl config file
4. logs: The log directory contains the logs of the Group Notifier Application
- groupNotifierCtl.log: This file contains log entry if groupNotifierCtl has been started now or already running
- groupNotifierCtl.pid: This file contain the pid of the last started groupNotifier.
[edit] Scripts/Programs
[edit] Install.ksh
Script to install the GroupNotifier Application. It has the following information set for various environment.
- SET_ORACONNECTSTRING
- SET_COMPASS_ORACONNECTSTRING
- SET_RUN_ENVIRONMENT
- SET_EMAIL_ADDRESS
- SET_NUMBER_OF_NOTIFIERS
- SET_DOMAIN
- SET_LOGGING_LEVEL
- SET_CACHED_HOST
- SET_CACHED_PORT
[edit] groupNotifierCtl
GroupNotifierCtl is final exe created by compiling the C and Pro*C Scripts. This executable is invoked using the groupNotifierCtl.ksh program. The exe spawns several SyncDs and a workerD, which communicates with IDP2 database and notificy the changes to GCACHE and the compass database and update in ID_GROUP_DATA table
[edit] groupNotifierCtl.ksh
This is a Script is invoked to start/stop groupNotifierCtl exe.
[edit] groupNotifierCtl.pc
This Pro*C script is the actual script which spawns the SyncD and WorkerD to do notifier function. This script compares the data from the id_group_membership table and Notify Compass database about the Changes.
The procedure, stopGroupsToCompassSyncD allows groupNotifier to stop changes to be made in Compass database. The Procedure, notifyAdmins notifies the admin about the state of the groupnotifier control.
[edit] notifyWorkerD.pc
NotifyWorkerD is the part of the groupNotifier Process, which gets groups to be expired from Oracle queue and using the xexpire process. This script connects To DB and then to cache proxy through socket for notifying the database.
notifyWorkerD is the main procedure, which notifies the changes to compass by invoking various sub procedures such as connectToProxy, readFromProxy and writeToProxy to Connect To cache proxy through socket, read changes and write to compass database.
[edit] groupsToCompassSyncD.pc
grouptoCompassSyncD a procedure called by SyncD to sync data in the IDP2 with COMPASS Database. The Package used for this operation is ID_GROUPS_COMPASS_PKG.
[edit] oraUtils_GN.pc
This Pro*C scripts is a oracle utility program which helps to connect and disconnect to databases for retrieving data
The procedure, dbConnect to connect to database. The procedure, dbDisConnect disconnects from the database.
[edit] messageQutils.c
This script help in reading and writing queues used in input output operations. Some of the operation performed are Reads from the Q, Writes to the Q, Deletes the Q and Getting the number of messages in the Q.
Procedure msgCreate to create message Queue, msgGetRef to get reference to message queue, msgDelete to delete message from the Queue, msgReceive to buffer the messages to be sent, msgSend to send message,
[edit] common_GN.c
Contains General utility procedures to support Group notification such as getting local time, converting seconds, etc.
Procedure, checkChildErrorExits will be called to check if child process is still running after stop message from the parent. getOraStatusDesc will be called to read oracle error messages and copy to the buffer.
[edit] configFileReader_GN.c
This script contains Utilities to process config files. Procedure ConfigFileReader Opens config file for read. Reads through the entries in the file. Ignores lines beginning with # and blank lines. Key Words are of the form key=val. Trims out leading/trailing spaces and quotes around the values. Allots memory for the key and the value and populates a linked list. Procedure ValidateConfigValues Validates the key value pairs in the linked list. Warns about Keys that are not used. Errors out on required keys that are not found.
Procedure getEnv reads the env variables and updates the linked list. Updates the linked list with value read for key from conf file and Frees up space used up by the linked list and validateEnv Validates env variables against the file system amongst other checks.
[edit] Include Files
All the definitions used across the programs are defined in the following header files.
- common_GN.h
- configFileReader_GN.h
- messageQutils_GN.h
- oraUtils_GN.h
[edit] Database Details
Some of the tables used by Group Notifier are
- ID_GROUP_MEMBERSHIP
- ID_GROUPS_DATA
- ID_GROUP_MEMBERSHIP_HISTORY
- DBA_SERVER_CODE_STATUS
- SM_ACCOUNT_UPDATE_LIST
- ID_GROUPS_TO_COMPASS
ID_GROUP_MEMBERSHIP All the information about the groups will be available in id_group_membership table. Webobject applications access the information from this table. Whenever the group membership is edited by the group owner, changes are made in this table. These changes are synchronized with the id_group_data available in the compass table through group notifier control process.
Name | Null? | Type |
---|---|---|
GROUP MEMBERSHIP_ID | NOT NULL | NUMBER(10) |
ACCOUNT_ID | NOT NULL | NUMBER(10) |
GROUP_ID | NOT NULL | NUMBER(10) |
LOGIN_ID | NUMBER(10) | |
VERIFIED_EMAIL_ADDRESS_ID | NUMBER(10) | |
PERSONA_ID | NOT NULL | NUMBER(10) |
PROFILE_VISIBLE_FLAG | NOT NULL | VARCHAR2(1) |
MEMBERSHIP_UUID | NOT NULL | VARCHAR2(34) |
CREATE_DATE | NOT NULL | DATE |
MODIFY_DATE | NOT NULL | DATE |
ID_GROUP_TO_COMPASS
Changes made in the membership are stored in this database. Group Notifier scans for the changes and updates it in COMPASS database.
Name | Type | Null? |
---|---|---|
GROUP_TO_COMPASS_ID | NUMBER | NOT NULL |
ACCOUNT_ID | NUMBER(10) | NOT NULL |
GROUP_ID | NUMBER | NOT NULL |
IS_OWNER_FLAG | VARCHAR2(1) | NOT NULL |
PREV_OWNER_ACCOUNT_ID | NUMBER(10) | |
SOURCE | VARCHAR2(50) | NOT NULL |
MSGTYPE | VARCHAR2(10) | NOT NULL |
CREATE_DATE | DATE | NOT NULL |
ID_GROUP_MEMBERSHIP_HISTORY
All the information about the changes in the Membership are stored in this database. Data in this database will be useful more for making undo and redo.
Name | Type | Null ? |
---|---|---|
GROUP_MEMBERSHIP_HISTORY_ID | NUMBER(10) | NOT NULL, |
GROUP_MEMBERSHIP_ID | NUMBER(10) | NOT NULL |
ACCOUNT_ID | NUMBER(10) | NOT NULL |
GROUP_ID | NUMBER(10) | NOT NULL |
LOGIN_ID | NUMBER(10) | |
VERIFIED_EMAIL_ADDRESS_ID | NUMBER(10) | |
PERSONA_ID | NUMBER(10) | NOT NULL |
PROFILE_VISIBLE_FLAG | VARCHAR2(1) | NOT NULL |
MODIFY_TYPE_CODE | VARCHAR2(4) | NOT NULL |
CREATE_DATE | DATE | NOT NULL |
MODIFY_DATE | DATE | NOT NULL |
ID_GROUP_DATA
This table, which is a part of COMPASS database is the main table, which stores all the information about the Groups. Complete information about the group will be available in this table and will be fetched by GCACHE and IDP2 for accessing by web object.
Name | Null? | Type |
---|---|---|
GROUP_ID | NOT NULL | NUMBER(10) |
ACCOUNT_ID | NOT NULL | NUMBER(10) |
MEMBERSHIP_UUID | VARCHAR2(34) | |
GROUP_ADDRESS | NOT NULL | VARCHAR2(80) |
SENDER_ADDRESS | NOT NULL | VARCHAR2(80) |
SENDER_ALT_ADDRESS | VARCHAR2(80) | |
RECIPIENT_ADDRESS | VARCHAR2(80) | |
IS_OWNER_FLAG | VARCHAR2(1) | |
STATUS_CODE | NOT NULL | VARCHAR2(4) |
CREATE_DATE | NOT NULL | DATE |
MODIFY_DATE | NOT NULL | DATE |
[edit] Email Alerts
Following are the email notifications sent by the application.
[edit] When GroupNotifierCtl instance is in Pause State unexpectedly
Warning: groupNotifierCtl instance in <host> is in pause state
[edit] When GroupNotifierCtl instance has stopped unexpectedly
Warning: groupNotifierCtl instance in <host> has stopped
[edit] When WorkerD is not able to connect to Proxy
Warning: notifyWorkerD in <host> unable to connect to proxy; retried ‘n’ times
[edit] When Restarting of groupNotifierCtl Failed
Error restarting groupNotifierCtl in $RUN_ENVIRONMENT on $GN_HOST
[edit] Contact Person
Following are the contact persons for any queries related to Group Notifier Application
Jose George: jgeorge@apple.com
Prasad Nair: pknair@apple.com
[edit] Troubleshooting
[edit] Known Issues
[edit] CVS Path
CVS server : is-cvs02.apple.com
Path : isdev/groupNotifier