#1 Re: mORMot 1 » Using GlobalInterfaceResolution values » 2017-01-24 15:05:37

Hi, ab.

I take ICalculator and TServiceCalculator from Sample 14. I create a with descendant from TDDDRestHttpDaemon my services. Then I try to define the services to rest server. I use fRest.ServiceDefine to specified the services into InternalStart override method. All work perfect but, I have a developer group working into that project, if i continued define services into InternalStart i have problems when to developers have to define there services.

I try to define into the unit that contains TServiceCalculator one form to define the services. I found  TInterfaceResolverInjected.RegisterGlobal.

Any suggestion,

#2 mORMot 1 » Using GlobalInterfaceResolution values » 2017-01-20 21:23:23

yoanq
Replies: 2

Hi, ab.

I am trying to register the interfaces and classes that implement it in the section initialization of the unit where we define the class that implements the service, then you can use it in the process of defining the services deployed on my server Rest.

Reviewing the framework, I found the possibility to register a global interfaces with their implementation using TInterfaceResolverInjected.RegisterGlobal but then I can not access the same for being in the area of the implementation the definition of GlobalInterfaceResolution.

I could give you some suggestion.

Thanks in advance, yoanq

#3 Re: mORMot 1 » Problems using TDDDDaemon » 2017-01-19 20:23:06

Thank's ab.

All good. We keep in contact.

#4 Re: mORMot 1 » Problems using TDDDDaemon » 2017-01-19 12:59:44

Hi, ab

I call TDDDAppSettingsAbstract.Initialize(''), but in TDDDDaemon.ExecuteCommandLine when you run in console o verbose mode you override EchoToConsole value:

          case cmd of
            cConsole:
              SQLite3Log.Family.EchoToConsole := LOG_STACKTRACE + [sllDDDInfo];
            cVerbose:
              SQLite3Log.Family.EchoToConsole := LOG_VERBOSE;
          end;

In the case that I indicate these values on the command line, I am indicating that I am in console mode, and therefore could call in that case, AllocConsole, it is my personal opinion.

Many thanks for your always quick response.

#5 mORMot 1 » Problems using TDDDDaemon » 2017-01-18 21:28:34

yoanq
Replies: 4

Hi, ab.

Using the great possibilities that provides us with Mormot as a framework will suggest some changes.

Using the class TDDDDaemon (inheriting from it) is given the following situations:
  When you run ExecuteCommandLine with options to run by command line the system no provides output for it. You're not making use of AllocConsole.
  If they manage to get the output to the console, the system does not take into account what is configured for the Log in the property ConsoleLevels, always overwritten.

In the unit mORMotDB function TSQLRestExternalDBCreate you must call VirtualTableExternalRegisterAll before TSQLRestServer.CreateInMemoryForAllVirtualTables, in the current order generates error, because it does not initialize the external tables module.

Thank's

#7 Re: mORMot 1 » Authentication into legacy system » 2017-01-16 19:22:32

If it does match the Database structure would only be necessary to implement ComputeHashedPassword?

#8 Re: mORMot 1 » Authentication into legacy system » 2017-01-16 18:21:22

I would need to implement 3 things
  A descendant class of TSQLRestServerAuthenticationDefault implementing CheckPassword. Used for authentication in the server.
  A descendant of TSQLAuthUser and implement ComputeHashedPassword.
  Implement OnAuthenticationUserRetrieve to return the data of my users.

It's that correct?

#9 mORMot 1 » Authentication into legacy system » 2017-01-16 17:07:53

yoanq
Replies: 6

Hi ab,

We are trying to introduce Mormot in our legacy system. To do this we must address the issue of authentication. We have our own tables that are similar to those generated by TSQLAuthUser but excluding some fields. We don't have fields GROUPRIGHTS and DATA. There is a way to define the desired structure without having to modify the class bases of Mormot?

#11 Re: Other components » advice me, please » 2015-09-24 12:18:36

Hi, ab.

If I want to use the second choise (10,000 HTTP connections, and e.g. 32 Oracle connections). How I can do that?

#12 mORMot 1 » Problem with Oracle SYSDBA connection » 2015-04-13 19:20:59

yoanq
Replies: 1

Hi, ab.

We have problems when try to connect to Oracle using SYS user. After debuging code we introduce in procedure TSQLDBOracleConnection.Connect this code and work:
    //Connect using SYSDBA mode
    if Props.UserID = 'SYS' then
      mode := OCI_SYSDBA;

before Check(self,nil,SessionBegin(fContext,fError,fSession,OCI_CRED_RDBMS,mode),fError);


What do you think about it?

#13 Re: mORMot 1 » Problem with Oracle cursor over temporary table » 2015-02-04 12:58:29

Hi, ab.

Work perfect with others cursor. If I use StartTransaction and Commit after

  stmt.ExecutePrepared;
  cursor := stmt.BoundCursor(1);

work perfect. The problem is when execute PL/SQL block execute Commit by default.

Thank's ab.

#14 mORMot 1 » Problem with Oracle cursor over temporary table » 2015-02-03 20:49:15

yoanq
Replies: 2

Hi, ab.

I have PL/SQL block with a call to package method returning cursor over temporary table. When execute stmt.BoundCursor(1); Oracle return error associated to object not exists. What can I do? I suspect Oracle do commit after ExecutePrepared.

function TApplyRepository.PrintError (DBUser, DBPassword, DBDataBase, ErrorNumber: RawUTF8): TResponse;
var
  query: RawUTF8;
  stmt: ISQLDBStatement;
  cursor: ISQLDBRows;
  count: integer;
  RemoteProps: TSQLDBOracleConnectionProperties;
begin
  RemoteProps := TSQLDBOracleConnectionProperties.Create(DBDataBase, '', DBUser, DBPassword);
  query :=  'BEGIN STREAM_MONITOR.PRINT_TRANSACTION(P_CURSOR  => ?, LTXNID=> ?); END;';
  stmt := RemoteProps.NewThreadSafeStatementPrepared(query, false);
  stmt.BindCursor(1);
  stmt.BindTextS(2,ErrorNumber,paramIn);
  try
    stmt.ExecutePrepared;
    cursor := stmt.BoundCursor(1);
    Result.data := cursor.FetchAllAsJSON(true, @count);
    Result.count := count;
  finally
    cursor._Release;
    cursor := nil;
    stmt._Release;
    stmt := nil;
    RemoteProps.Destroy;
  end;
end;

#16 Re: mORMot 1 » JSONToObject stops deserialization if any property has null value » 2015-01-28 15:18:07

Hi ab, thank for your answer. But we don't work fine.

When debuging the source we detect in line inc(From,4); one problem, From is initialization with ', ' and cause error in parsing json string. If we subtitute that line with GetJSONFieldOrObjectOrArray(From,@wasString,@EndOfObject); work fine.

Thank's

#17 Re: mORMot 1 » JSONToObject stops deserialization if any property has null value » 2015-01-27 18:56:46

Hi, ab.

We have extract data from database where some fields comes null. When we try to use JSONtoObject the deserialization is aborted with properties with null value.

What can I do?
Thank's

This is then example data

TDTOTurRes = class(TCollectionItem)
  private
    fNombre: Variant;
    fSexo, fEmail, fFax, fPasaporte, fTelefono, fIdSuperClasifEdad,
    fNombClasifEdad, fNombIdioma, fserieticket, fNombSuperClasifEdad,
    fNombCliente, fDireccion, fDireccion2, fCodigopostal, fVuelo_ret,
    fCodigopostal2, fEstadoDir, fEstadoDir2, fCiudad, fCiudad2, fApellidos,
    fApellidos2, fCodigo, fTelefono2: Variant;
    fIdClasifEdad, fIdReserva,fIdDesglose,fIdTipoHabit, fIdPlan,fIdRecorrido,
    fIDReservafuente, fIDResitemserv, fidcondpago, fpagada, fsecotiza, fTercero,
    fEsCancelado, faction, fIdIdioma, fIdPais, fEdad, fIdTurista, fFree,
    fIdCliente, fNumero, fTipo_doc_prm, fTipo_doc_sec, fEmisor_doc_prm,
    fEmisor_doc_sec, fId_PaisResid, fIdClaseAerea{, fIdVueloReserva}: Variant;
    fIdReservaPadre: double;
    fIDTipoProducto, fIDEstadoReserva, fIDTipoServicio, fIdTipoPax, fNombre_seg,
    fDocumento_sec{, fHabRecogida}: Variant;
    fFecha_venc_prm, fFecha_venc_sec, fFecha_nac: Variant;
  published
    property Nombre: Variant read fNombre write fNombre;
    property Sexo: Variant read fSexo write fSexo ;
    property Email: Variant read fEmail write fEmail ;
    property Fax: Variant read fFax write fFax ;
    property Pasaporte: Variant read fPasaporte write fPasaporte ;
    property Telefono: Variant read fTelefono write fTelefono ;
    property IdSuperClasifEdad: Variant read fIdSuperClasifEdad write fIdSuperClasifEdad;
    property NombSuperClasifEdad: Variant read fNombSuperClasifEdad write  fNombSuperClasifEdad ;
    property NombClasifEdad: Variant read fNombClasifEdad write fNombClasifEdad ;
    property NombCliente: Variant read fNombCliente write fNombCliente ;
    property NombIdioma: Variant read fNombIdioma write fNombIdioma ;
    property IdClasifEdad: Variant read fIdClasifEdad write fIdClasifEdad ;
    property IdReserva: Variant read fIdReserva write fIdReserva;
    property IdIdioma: Variant read fIdIdioma write fIdIdioma;
    property IdCliente: Variant read fIdCliente write fIdCliente;
    property IdReservaPadre: double read fIdReservaPadre write fIdReservaPadre;
    property IdPais: Variant read fIdPais write fIdPais;
    property Edad: Variant read fEdad write fEdad;
    property IdTurista: Variant read fIdTurista write fIdTurista;
    property IdDesglose: Variant read fIdDesglose write fIdDesglose;
    property IdTipoHabit: Variant read fIdTipoHabit write fIdTipoHabit;
    property IdPlan: Variant read fIdPlan write fIdPlan;
    property IdRecorrido: Variant read fIdRecorrido write fIdRecorrido;
    property IDReservafuente: Variant read fIDReservafuente write fIDReservafuente;
    property IDResitemserv: Variant read fIDResitemserv write fIDResitemserv;
    property serieticket: Variant read fserieticket write fserieticket ;
    property idcondpago: Variant read fidcondpago write fidcondpago;
    property pagada: Variant read fpagada write fpagada ;
    property secotiza: Variant read fsecotiza write fsecotiza ;
    property Tercero: Variant read fTercero write fTercero;
    property EsCancelado: Variant read fEsCancelado write fEsCancelado;
    property action: Variant read faction write faction;
    property Free: Variant read fFree write fFree ;
    property IDTipoProducto: Variant read fIDTipoProducto write fIDTipoProducto;
    property IDEstadoReserva: Variant read fIDEstadoReserva write fIDEstadoReserva;
    property IDTipoServicio: Variant read fIDTipoServicio write fIDTipoServicio;
    property IdTipoPax: Variant read fIdTipoPax write fIdTipoPax;
    property Numero: Variant read fNumero write fNumero;
    property Tipo_doc_prm: Variant read fTipo_doc_prm write fTipo_doc_prm;
    property Tipo_doc_sec: Variant read fTipo_doc_sec write fTipo_doc_sec;
    property Emisor_doc_prm: Variant read fEmisor_doc_prm write fEmisor_doc_prm;
    property Emisor_doc_sec: Variant read fEmisor_doc_sec write fEmisor_doc_sec;
    property Nombre_seg: Variant read fNombre_seg write fNombre_seg;
    property Documento_sec: Variant read fDocumento_sec write fDocumento_sec;
    property Fecha_venc_prm: Variant read fFecha_venc_prm write fFecha_venc_prm;
    property Fecha_venc_sec: Variant read fFecha_venc_sec write fFecha_venc_sec;
    property Fecha_nac: Variant read fFecha_nac write fFecha_nac;
    property Direccion: Variant read fDireccion write fDireccion;
    property Direccion2: Variant read fDireccion2 write fDireccion2;
    property Codigopostal: Variant read fCodigopostal write fCodigopostal;
    property Vuelo_ret: Variant read fVuelo_ret write fVuelo_ret;
    property Codigopostal2: Variant read fCodigopostal2 write fCodigopostal2;
    property EstadoDir: Variant read fEstadoDir write fEstadoDir;
    property EstadoDir2: Variant read fEstadoDir2 write fEstadoDir2;
    property Ciudad: Variant read fCiudad write fCiudad;
    property Ciudad2: Variant read fCiudad2 write fCiudad2;
    property Id_PaisResid: Variant read fId_PaisResid write fId_PaisResid;
    property Apellidos: Variant read fApellidos write fApellidos;
    property Apellidos2: Variant read fApellidos2 write fApellidos2;
    property IdClaseAerea: Variant read fIdClaseAerea write fIdClaseAerea;
    property Codigo: Variant read fCodigo write fCodigo;
    property Telefono2: Variant read fTelefono2 write fTelefono2;
  end;

TDTOTurResList = class(TInterfacedCollection)
  private
    function GetCollItem(aIndex: Integer): TDTOTurRes;
  protected
    class function GetClass: TCollectionItemClass; override;
  public
    function Add: TDTOTurRes; 
    property Item[aIndex: Integer]: TDTOTurRes read GetCollItem; default;
  end;

implementation

{ TDTOTurResList }

function TDTOTurResList.Add: TDTOTurRes;
begin
  result := TDTOTurRes(inherited Add);
end;

class function TDTOTurResList.GetClass: TCollectionItemClass;
begin
  result := TDTOTurRes;
end;

function TDTOTurResList.GetCollItem(aIndex: Integer): TDTOTurRes;
begin
  result := TDTOTurRes(GetItem(aIndex));
end;


 TurServRes := TDTOTurResList.Create;

TurServResStr := '[{"IDTURISTA":53702,"NOMBRE":null,"IDIDIOMA":2,"IDRESERVAPADRE":33076,"IDSUPERCLASIFEDAD":"MAY","NOMBSUPERCLASIFEDAD":"MAYOR","IDPAIS":215,"EDAD":null,"EMAIL":null,"FAX":null,"PASAPORTE":null,"TELEFONO":null,"NOMBIDIOMA":"INGLES","SEXO":null,"IDRESERVA":null,"IDCLASIFEDAD":null,"NOMBCLASIFEDAD":null,"IDCLIENTE":281,"NOMBCLIENTE":"ABTOUR VIAJES","ACTION":1,"NUMERO":null,"CODIGOPOSTAL":null,"DIRECCION":null,"DIRECCION2":null,"DOCUMENTO_SEC":null,"EMISOR_DOC_PRM":null,"EMISOR_DOC_SEC":null,"FECHA_NAC":null,"FECHA_VENC_PRM":null,"FECHA_VENC_SEC":null,"NOMBRE_SEG":null,"TIPO_DOC_PRM":null,"TIPO_DOC_SEC":null,"VUELO_RET":null,"CODIGOPOSTAL2":null,"ESTADODIR":null,"ESTADODIR2":null,"CIUDAD":null,"CIUDAD2":null,"ID_PAISRESID":null,"APELLIDOS":null,"APELLIDOS2":null,"IDCLASEAEREA":null,"CODIGO":null,"TELEFONO2":null},{"IDTURISTA":53703,"NOMBRE":null,"IDIDIOMA":2,"IDRESERVAPADRE":33076,"IDSUPERCLASIFEDAD":"MAY","NOMBSUPERCLASIFEDAD":"MAYOR","IDPAIS":215,"EDAD":null,"EMAIL":null,"FAX":null,"PASAPORTE":null,"TELEFONO":null,"NOMBIDIOMA":"INGLES","SEXO":null,"IDRESERVA":null,"IDCLASIFEDAD":null,"NOMBCLASIFEDAD":null,"IDCLIENTE":281,"NOMBCLIENTE":"ABTOUR VIAJES","ACTION":1,"NUMERO":null,"CODIGOPOSTAL":null,"DIRECCION":null,"DIRECCION2":null,"DOCUMENTO_SEC":null,"EMISOR_DOC_PRM":null,"EMISOR_DOC_SEC":null,"FECHA_NAC":null,"FECHA_VENC_PRM":null,"FECHA_VENC_SEC":null,"NOMBRE_SEG":null,"TIPO_DOC_PRM":null,"TIPO_DOC_SEC":null,"VUELO_RET":null,"CODIGOPOSTAL2":null,"ESTADODIR":null,"ESTADODIR2":null,"CIUDAD":null,"CIUDAD2":null,"ID_PAISRESID":null,"APELLIDOS":null,"APELLIDOS2":null,"IDCLASEAEREA":null,"CODIGO":null,"TELEFONO2":null}]'

JSONToObject(TurServRes,pointer(TurServResStr),Valid,TDTOTurRes);

#18 Re: mORMot 1 » Problem with External DataBase using Oracle » 2014-05-30 18:25:51

Don't worry. It's our mistake.

Mormot is a great framework.

#19 mORMot 1 » Problem with External DataBase using Oracle » 2014-05-30 16:58:39

yoanq
Replies: 2

Hi, ab

We use Interface base service using external database Oracle. Previous use Oracle version 11.2.0.1 64 bits using client Oracle 11.2.0.1 32 bits. It's all ok. Now we have install Oracle 11.2.0.3 64 bits with the same client and the system it's not running.

Unit SynSQLite3 method TSQLDataBase.DBOpen line result := sqlite3.open(pointer(utf8),fDB); Return code 14.

This is the log generated

20140530 12544412  !  +    00082095 SynSQLite3.TSQLDatabase.DBOpen (3438)
20140530 12564731  ! ERROR     TSQLDatabase(0260FB10) open("data\Server.db3") failed stack trace API 0008215C SynSQLite3.TSQLDatabase.DBOpen (3452) 000815E4 SynSQLite3.TSQLDatabase.Create (3008) 000845FB mORMotSQLite3.TSQLRestServerDB.Create (729) 002284D9 WebServerApi.TWebServerServiceApi.DoStart (250) 00228F8B WebServerApi.CheckParameters (435)
20140530 12564731  !  -    99.300.141
20140530 12564902  ! EXC   ESQLite3Exception ("Invalid SQlite3 database handle (14)") at 000815FF SynSQLite3.TSQLDatabase.Create (3011)  stack trace API 00046EB0 SynCommons.SynRtlUnwind (38196) 00003F3C System.@HandleAnyException 000815FF SynSQLite3.TSQLDatabase.Create (3011) 000845FB mORMotSQLite3.TSQLRestServerDB.Create (729) 002284D9 WebServerApi.TWebServerServiceApi.DoStart (250) 00228F8B WebServerApi.CheckParameters (435)
20140530 12564902  ! EXC   ESQLite3Exception ("Invalid SQlite3 database handle (14)") at 000815FF SynSQLite3.TSQLDatabase.Create (3011)  stack trace API 00046EB0 SynCommons.SynRtlUnwind (38196) 00003F3C System.@HandleAnyException 000815FF SynSQLite3.TSQLDatabase.Create (3011) 000845FB mORMotSQLite3.TSQLRestServerDB.Create (729) 002284D9 WebServerApi.TWebServerServiceApi.DoStart (250) 00228F8B WebServerApi.CheckParameters (435)
20140530 12564902  ! info  TSQLRestServerDB(02555DB0) null
20140530 12564902  ! EXC   ESQLite3Exception ("Invalid SQlite3 database handle (14)") at 000815FF SynSQLite3.TSQLDatabase.Create (3011)  stack trace API 00046EB0 SynCommons.SynRtlUnwind (38196) 000043A2 System.@ExceptionHandler 000815FF SynSQLite3.TSQLDatabase.Create (3011) 000845FB mORMotSQLite3.TSQLRestServerDB.Create (729) 002284D9 WebServerApi.TWebServerServiceApi.DoStart (250) 00228F8B WebServerApi.CheckParameters (435)

#20 Re: mORMot 1 » Problems with Services Stop » 2014-05-08 18:18:02

Thank´s.

I dowload the last source code and all work OK.

#21 mORMot 1 » Problems with Services Stop » 2014-05-08 13:04:26

yoanq
Replies: 2

Hi, ab

I write two services using example 10 - Background Http service. This work fine, but when Stop the service using Windows Services Console I receive "Error 1061 : service cannot accept control messages at this time". I tried with the example and obtain the same error.

I use Windows 7 64 bits and Delphi 2007

Thank´s for your time

#22 Re: mORMot 1 » Invalid Pointer Operation when close WebServer Api » 2014-05-08 12:55:50

I found the problems. We register one services using sicShared and in the destructor in the services class detect the problem. No problems with Mormot, its was our error.

Thank´s.

#23 Re: mORMot 1 » Invalid Pointer Operation when close WebServer Api » 2014-05-07 13:32:01

This is my variable definitions

    /// the associated database model
    aModel: TSQLModel;
    /// the associated DB
    aServer: TSQLRestServerDB;
    /// the background Server processing all requests
    aHTTPServer: TSQLHttpServer;

Destroy:

  FreeAndNil(aHTTPServer);
  FreeAndNil(aServer);
  FreeAndNil(aModel);

#24 mORMot 1 » Invalid Pointer Operation when close WebServer Api » 2014-05-07 13:01:44

yoanq
Replies: 5

Hi, I need your help. I am working with new project implementing Mormot Server with Interfaced Based Method register with

var
aServer: TSQLRestServerDB;

...
aServer.ServiceRegister(TReservas, [TypeInfo(IReservas)], sicPerSession);

All is working OK except when close server. In that moment I receive Invalid Pointer Operation Error.

This is my log

20140507 08484027  ! info  Server TSQLHttpServer(02FA6678) stopped by TSQLRestServerDB(00E95DB0)
20140507 08484027  ' trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6B20)) ThreadID=3724 ThreadCount=31
20140507 08484028  & trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6580)) ThreadID=604 ThreadCount=30
20140507 08484031  / trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6DF0)) ThreadID=4632 ThreadCount=17
20140507 08484032  8 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB74B0)) ThreadID=1552 ThreadCount=29
20140507 08484034  1 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB7390)) ThreadID=2572 ThreadCount=12
20140507 08484035  ; trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB70C0)) ThreadID=5032 ThreadCount=25
20140507 08484036  2 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB7420)) ThreadID=4736 ThreadCount=22
20140507 08484037  5 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB71E0)) ThreadID=1408 ThreadCount=11
20140507 08484038  @ trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB7300)) ThreadID=3660 ThreadCount=2
20140507 08484039  3 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6BB0)) ThreadID=4704 ThreadCount=19
20140507 08484040  , trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB7150)) ThreadID=2944 ThreadCount=7
20140507 08484041  % trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB68E0)) ThreadID=4932 ThreadCount=15
20140507 08484042  %  +    TSQLDBOracleConnection(00F41BD0).001068C0 SynDBOracle.TSQLDBOracleConnection.Disconnect (1717) 
20140507 08484042  < trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6A00)) ThreadID=3684 ThreadCount=23
20140507 08484042  * trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6730)) ThreadID=1572 ThreadCount=26
20140507 08484042  0 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6C40)) ThreadID=4240 ThreadCount=27
20140507 08484042  ( trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB64F0)) ThreadID=4584 ThreadCount=28
20140507 08484042  = trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6970)) ThreadID=4644 ThreadCount=21
20140507 08484042  ? trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB67C0)) ThreadID=4088 ThreadCount=18
20140507 08484042  > trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB63D0)) ThreadID=3448 ThreadCount=20
20140507 08484042  + trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB66A0)) ThreadID=4772 ThreadCount=24
20140507 08484042  A trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6220)) ThreadID=3892 ThreadCount=14
20140507 08484042  - trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6E80)) ThreadID=4588 ThreadCount=6
20140507 08484042  9 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6CD0)) ThreadID=496 ThreadCount=4
20140507 08484042  : trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6850)) ThreadID=4564 ThreadCount=3
20140507 08484042  . trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6460)) ThreadID=5044 ThreadCount=5
20140507 08484042  " trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB62B0)) ThreadID=4296 ThreadCount=1
20140507 08484042  6 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6F10)) ThreadID=2288 ThreadCount=0
20140507 08484042  7 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6D60)) ThreadID=3520 ThreadCount=10
20140507 08484042  ) trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6A90)) ThreadID=1708 ThreadCount=13
20140507 08484042  $ trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6610)) ThreadID=4228 ThreadCount=8
20140507 08484042  # trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6340)) ThreadID=1624 ThreadCount=9
20140507 08484042  4 trace TSQLRestServerDB(00E95DB0).EndCurrentThread(THttpApiServer(00EB6FA0)) ThreadID=2064 ThreadCount=16
20140507 08484042  %  -    00.003.782
20140507 08484216  A EXC   EInvalidPointer ("Invalid pointer operation") at 00003925 System.TObject.FreeInstance  stack trace API 00046294 SynCommons.SynRtlUnwind (37621) 00004386 System.@ExceptionHandler 00003925 System.TObject.FreeInstance 0007C041 mORMot.TServiceFactoryServerInstance.SafeFreeInstance (34544) 
20140507 08484315  $ EXC   EInvalidPointer ("Invalid pointer operation") at 00003925 System.TObject.FreeInstance  stack trace API 00046294 SynCommons.SynRtlUnwind (37621) 00004386 System.@ExceptionHandler 00003925 System.TObject.FreeInstance 0007C041 mORMot.TServiceFactoryServerInstance.SafeFreeInstance (34544) 
20140507 08484315  #  +    TSQLDBOracleConnection(00F41AF0).001068C0 SynDBOracle.TSQLDBOracleConnection.Disconnect (1717) 
20140507 08484322  #  -    00.119.862

Thank´s Yoan

Board footer

Powered by FluxBB