Решено Domino Replication Fundamentals And Troubleshooting

puks

Well-Known Member
Lotus team
03.02.2007
1 971
16
#3
Ага. Послал им запрос. (Надо было скачать док)
 

rinsk

Well-Known Member
Lotus team
12.11.2009
895
84
Казань
#4
Успел почитать, но не сохранить(
Там не раскрыта тема разьезжания реплик в кластере после краха\рестарта одного из серверов кластера. Ясно что оно лечится очисткой истории репликации, но руками эт делать как то достало.
Наваял скрипт, запускаемый при старте сервера.
Код:
%REM
*********************************************
Agent ClearHistoryAll
Created Jan 13, 2015 by Rinat N. Karimov
Description: Comments for Agent
%END REM
Option Public
Option Declare
Sub Initialize
	GoTo begin
errors: MsgBox Error & " Initialize:"& Erl
	Exit Sub
begin:On Error GoTo errors
	Dim s As New NotesSession, dbdir As New NotesDbDirectory(""), dbcl As NotesDatabase
	Dim vcl As NotesView, ncl As NotesViewEntryCollection, nc As NotesViewEntry
	Dim db As NotesDatabase, rep As NotesReplication, srvname As New NotesName(s.Currentdatabase.Server)
	Dim srvlist As Variant,isProcess As Variant
	Set dbcl=s.Getdatabase("","cldbdir.nsf")
	If Not dbcl.Isopen Then Exit Sub
	Set vcl=dbcl.Getview("($ReplicaID)")
	vcl.Autoupdate=False
	Set db = dbdir.GetFirstDatabase(1247)
	While Not (db Is Nothing)
		Set ncl=vcl.Getallentriesbykey(Left(db.Replicaid,8)+":"+Right(db.Replicaid,8),True)
		If ncl.Count>1 Then ' есть несколько серверов на базу - значит чистим историю репликации
			isProcess=False
			Set nc=ncl.Getfirstentry()
			Do While Not nc Is Nothing ' собираем список серверов для команды replicate
				If nc.Columnvalues(1)="0" Then 'только включенные базы
					If InStr(UCase(srvlist),UCase(nc.Columnvalues(2)))=0 And UCase(nc.Columnvalues(2))<>UCase(srvname.Canonical) Then srvlist=srvlist & "," & nc.Columnvalues(2)
					IsProcess=True ' есть
				End If
				Set nc=ncl.Getnextentry(nc)
			Loop
			If IsProcess Then
				If Not db.isOpen Then Call db.Open("","")
				If db.Isopen Then
					On Error Resume Next
					Set rep=db.Replicationinfo
					Call rep.Clearhistory()
					Call rep.Save()
					On Error GoTo errors
				End If
			  
			End If
		End If
		Set db = dbdir.GetNextDatabase
	Wend
	srvlist=FullTrim(Split(srvlist,",")) ' реплицируемся со всеми серверами кластера
	ForAll cmd In srvlist
		If cmd<>"" Then
			MsgBox "Console command:" & "replicate " & cmd
			Call s.Sendconsolecommand("","replicate " & cmd)
		End If
	End ForAll
End Sub
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#5
не уверен что был крах и т.п.
есть доки в реплике на одном из серверов они, по времени изменения, старее, чем на др. (с кот. активно работают)
причем разница >полгода
хистори чистил, pull делал (с сервера на кот. "старее" доки)
ничего не помогает - изменения не прилетают
куда покопать?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#6
@puks, вдогонку
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться

эта статья?
 
ЗЫЖ я конечно понимаю - можно seqnum сравнивать - новпадлумне ;)
 
и да - seqnum этих доков не совпадают, но сцуко, не реплицируются
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#7
еще деталь вспомнил - делал compact -F на одном из серверов, но это уже после обнаружения траблы
доки "нормально" открываются интерактивно
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#8
постучал в бубен изменил чуть способ и кажись засинхронилось,
делал pull <Имя кластера>, сделал pull <Имя сервера> и срослось