Еще один вопрос к пользователям GW7.

Обсуждение технических вопросов по продуктам Novell

Еще один вопрос к пользователям GW7.

Сообщение Dimerson » 21 фев 2007, 10:32

После апдейта с GW604 наблюдаются небольшие тараканы :
по крайней мере у одного пользователя в отправленных остаются сообщения со стаусом Pending (это исходящая наружу e-mail).

Причем если я говорю Resend то оно уходт нормально.

Дополнительное веселье заключается в том что а неотправленных файлах лежат разные аттачи. И при ресенде создаются письма содержащие нужные аттачи. Но иногда давим ресенд для письма содержащего 11111.TXT в аттаче и в результате получаем новое письмо с аттачем другого файла находящегося в таком же Pending письме рядом.

GW701 пофиксен уже на gw701ir1m.arj. Эффекта ноль.
Следует заметить что сообщения отправляются с помощью проги на GW ObjAPI (работала с GW 5.2, GW 6.0 без проблем). Неужто проблема из-за пакетной отправки ?

В общем соображения приветствуются.

Пока попробую вернуть туда клиента 605 и поглядеть что будет.

P.S. В догонку скажу что Pending оно Pending но отлупов нету - Undel не приходит.
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Иван Левшин aka Ivan L. » 21 фев 2007, 11:38

Ни разу ничего подобного не было...
Иван Левшин aka Ivan L.
 
Сообщения: 2592
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.

Сообщение Dimerson » 21 фев 2007, 12:39

Иван Левшин aka Ivan L. писал(а):Ни разу ничего подобного не было...


Сделал тест со своего аккаунта:
6 писем с аттачами по 64к с файлами

111111.txt
.....
666666.txt

на ящик на майл ру.

пакетно отправил на него 6-ю письмами

итого
на майлру все 6 писем
в ящике первое оптавлено
остальные pending / отложены (никаких анделов нету).

с ресубмитом такая же ботва - запомнил 666666.txt
и давим на остальные залипшие предлагается оптаврить повторно 666666.txt

В общем это фича. Буду пробовать комманднострочным gwsend'ом (лень пересобирать отправлялку) погляжу, может делей спасет отца русской демократии.

Но как-то нездорово все это.


Правка :

Попробовал заюзать в цикле из батника через for GWSend.exe с CoolTools.
Сразу заметна задежка при отправке сообщения - такое впечатление что у них delay на 1-2 секунды.

При такой отправке с задержками все ок.

Буду курить код.

Спасибо ответившим .
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Иван Левшин aka Ivan L. » 22 фев 2007, 13:44

Попробую проверить... Я просто никогда пакетной отправкой не занимался - мож потому и не замечал.
Иван Левшин aka Ivan L.
 
Сообщения: 2592
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.

Сообщение Dimerson » 23 фев 2007, 19:27

Иван Левшин aka Ivan L. писал(а):Попробую проверить... Я просто никогда пакетной отправкой не занимался - мож потому и не замечал.


суть проги такая что в соответствии каталогу поставлен Прокси_юзер, адресат, сабжект, текст боди

за пределы цикла вынесен минимум кода типа логин в GroupWise дефолтовым юзером , а в цикле идем по каталогам и далее в каждом финдфестом ищем файлы (с нормальной маской и ненулевым размером), по нахождению получаем аккаунт проксиюзера и выполняем такую
функцию (блин на Басике раз в 5 меньше текста - на паскалЕ в 2 раза точно ноэ то блин Ц++) писал тучу лет назад проверял всякими отладчиками память не отжирает все что выделяется по мере работы сразу же освобождается.


/* Send Message */
BOOL GWClass::SendMessage(char *Destination,char *Subject,char *Body, char
*AttachFullName)
{

DIGWFolder *pDIGWWorkFolder = NULL;
DIGWMessages *pDIGWMessages = NULL;
DIGWMessage *pDIGWMessage = NULL;

DIGWMessage *pDIGWRetMessage; // just for return value

DIGWFormattedText *pDSubject = NULL;
DIGWFormattedText *pDBody = NULL;

DIGWRecipients *pDIGWRecipients = NULL;
DIGWRecipient *pDIGWRecipient = NULL;

DIGWAttachments* pDIGWAttachments = NULL;
DIGWAttachment* pDIGWAttachment = NULL;

IGWFolder *pIGWWorkFolder = NULL;
IGWMessages *pIGWMessages = NULL;
IGWMessage *pIGWMessage = NULL;

IGWFormattedText *pSubject = NULL;
IGWFormattedText *pBody = NULL;

IGWRecipients *pIGWRecipients = NULL;
IGWRecipient *pIGWRecipient = NULL;

IGWAttachments* pIGWAttachments = NULL;

BSTR bStr ;

HRESULT status, AttachFlag = TRUE;

VARIANT vClass,vType,vTargetType,vVersion,vTo,vEmailType;



// getting workfolder
pIGWAccount->get_WorkFolder(&pDIGWWorkFolder);

// getting interface to workfolder
if( !pDIGWWorkFolder ||
FAILED(pDIGWWorkFolder->QueryInterface(IID_IGWFolder,(LPVOID*)&pIGWWorkFolde
r)))
{
if(pDIGWWorkFolder) pDIGWWorkFolder->Release();
return FALSE;
}
pDIGWWorkFolder->Release();

// getting Messages on workfolder
pIGWWorkFolder->get_Messages(&pDIGWMessages);

// getting interface to Messages
if( !pDIGWMessages ||
FAILED(pDIGWMessages->QueryInterface(IID_IGWMessages,(LPVOID*)&pIGWMessages)
))
{
if(pDIGWMessages) pDIGWMessages->Release();
return FALSE;
}
pDIGWMessages->Release();

// specify class of this message
bStr = SysAllocString(TO_OLE_STRING("GW.MESSAGE.MAIL"));

VariantInit(&vClass);
VariantInit(&vType);
VariantInit(&vVersion);

V_VT(&vClass) = VT_BSTR;
V_VT(&vType) = VT_I4;
V_VT(&vVersion) = VT_EMPTY;

V_BSTR(&vClass) = bStr;
V_I4(&vType) = egwDraft;

// addinf new draft
pIGWMessages->Add(vClass,vType,vVersion,&pDIGWMessage);

SysFreeString(bStr);

// getting interface to draft
if( !pDIGWMessage ||
FAILED(pDIGWMessage->QueryInterface(IID_IGWMessage,(LPVOID
*)&pIGWMessage) ))
{
if(pDIGWMessage) pDIGWMessage->Release();
return FALSE;
}
pDIGWMessage->Release();

// get subject
pIGWMessage->get_Subject(&pDSubject);

// get interface to subject
if(!pDSubject ||
FAILED(pDSubject->QueryInterface(IID_IGWFormattedText,(LPVOID*)&pSubject)))
{
if(pDSubject) pDSubject-> Release();
return FALSE;
}
pDSubject-> Release();

bStr = SysAllocString(TO_OLE_STRING(Subject));

// placing Subject string to subject
pSubject->put_PlainText(bStr);
SysFreeString(bStr);

// get bogy
pIGWMessage->get_BodyText(&pDBody);

// get interface to body
if(!pDBody ||
FAILED(pDBody->QueryInterface(IID_IGWFormattedText,(LPVOID*)&pBody)))
{
if(pDBody) pDBody-> Release();
return FALSE;
}
pDBody-> Release();

bStr = SysAllocString(TO_OLE_STRING(Body));

// placing Body string to body
pBody->put_PlainText(bStr);

// trying insert ViewName - same how Body Text
pIGWMessage->put_ViewName(bStr);

SysFreeString(bStr);
// Insert the attachments to the message
pIGWMessage->get_Attachments(&pDIGWAttachments);

if(pDIGWAttachments &&
SUCCEEDED(pDIGWAttachments->QueryInterface(IID_IGWAttachments,
(void**)&pIGWAttachments)))
{
pDIGWAttachments->Release();

VARIANT vFilename, vType, vDisplayName;

BSTR bFname;

VariantInit(&vFilename);
VariantInit(&vType);
VariantInit(&vDisplayName);

V_VT(&vFilename) = VT_BSTR;
V_VT(&vType) = VT_EMPTY;
V_VT(&vDisplayName) = VT_EMPTY;

bFname = SysAllocString(TO_OLE_STRING(AttachFullName));

V_BSTR(&vFilename) = bFname;

// Add the attachment to the message
if( FAILED(pIGWAttachments->Add(vFilename, vType, vDisplayName,
&pDIGWAttachment)))
AttachFlag = FALSE;

SysFreeString(bFname);

pIGWAttachments->Release();
}
// experimental code !!!
if(pDIGWAttachment) pDIGWAttachment->Release();
//
// get recepients
pIGWMessage->get_Recipients(&pDIGWRecipients);

//get interface to recipients
if( ! pDIGWRecipients ||
FAILED(pDIGWRecipients->QueryInterface(IID_IGWRecipients,(LPVOID*)&pIGWRecip
ients)))
{
if(pDIGWRecipients) pDIGWRecipients->Release();
return FALSE;
}
pDIGWRecipients->Release();

// filling e-mail adress to destination
// filling target type to empty (default) = 0 (0=To, 1=CC, 2=BC)
// filling e-mail address type how "NGW" - groupwise internal

VariantInit(&vTargetType);
VariantInit(&vTo);
VariantInit(&vEmailType);

V_VT(&vTargetType) = VT_EMPTY;
V_VT(&vTo) = VT_BSTR;
V_VT(&vEmailType) = VT_BSTR;

V_BSTR(&vTo) = SysAllocString(TO_OLE_STRING(Destination));
V_BSTR(&vEmailType) = SysAllocString(TO_OLE_STRING("NGW"));

// get Recipient
pIGWRecipients->Add(vTo,vEmailType,vTargetType,&pDIGWRecipient);

// get interface to recipient
if( !pDIGWRecipient ||
FAILED(pDIGWRecipient->QueryInterface(IID_IGWRecipient,(LPVOID
*)&pIGWRecipient)))
{
if(pDIGWRecipient) pDIGWRecipient->Release();
return FALSE;
}

pDIGWRecipient->Release();

status = pIGWRecipient->Resolve(vTargetType);

if(SUCCEEDED(status)) status = pIGWMessage->Send(&pDIGWRetMessage);



pIGWRecipient->Release();
pIGWRecipients->Release();
pBody->Release();
pSubject->Release();
//!!!
pIGWMessage->Release();
//!!!
pIGWMessages->Release();
pIGWWorkFolder->Release();

if(SUCCEEDED(status)) //return TRUE;
return AttachFlag;

else return FALSE;
};


Если вернуло SUCCESS то отсылаемый файл прибивается и делаем ФиндНекст итд.

Причем на GW 5.2 и 6.0 работало много лет.

Сравнивать цикл из GWSend.exe внутри cmd файла некорректно тк там каждый вызов GWSend стартует новый COInitalise(), логин и все такое а по выходу убиение всего проинициализированного - задержка на это немалая.

Думается мне что в новом групвайзе что-то изрядно подновлено во взаимодействии COM обьекта на клиенте и сервера GW (с сервером GW7 не важно какой будет клиент 60 65 или 7 картина одинаковая.

Если двигать гипотезы то может быть не успевают уничтожиться все созданные обьекты типа Message или там Attachment раз потом с ними мешанина происходит ?

Фиг его знает - на девелоперском форуме все молчат .

пересобрано с делеями все ок.

===============================================

Возник новый вопрос. Клиент GW7 не живет на Win9x.
Имеется в работе N, (N пока около трети всего парка ) штук оных станций с купленной вендой и пока они справляются выводить из строя их не будем. Там думаю будет жить клиент GW657.

Как бы замутить автоапдейт из SDD (Zen'а нетути ;( ) ?
Может сперва сделать апдейт на 65 всем а потом на 70 (там где венда 9x останется 65 .... ) ?
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Иван Левшин aka Ivan L. » 24 фев 2007, 12:13

ОК, дам погрызть своим девелоперам. Ежели им что непонятно будет - отмечусь.
Иван Левшин aka Ivan L.
 
Сообщения: 2592
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 6