Example #1
0
   INT32 _rtnLobWindow::init( INT32 pageSize )
   {
      INT32 rc = SDB_OK ;
      SDB_ASSERT( DMS_DO_NOT_CREATE_LOB < pageSize,
                  "invalid arguments" ) ;

      SDB_ASSERT( _writeData.empty(), "impossible" ) ;

      if ( !ossIsPowerOf2( pageSize, &_logarithmic ) )
      {
         PD_LOG( PDERROR, "invalid page size:%d, it should be a power of 2",
                 pageSize ) ;
         rc = SDB_INVALIDARG ;
         goto error ;
      }

      _pool = ( CHAR * )SDB_OSS_MALLOC( pageSize ) ;
      if ( NULL == _pool )
      {
         PD_LOG( PDERROR, "failed to allocate mem." ) ;
         rc = SDB_OOM ;
         goto error ;
      }

      _pageSize = pageSize ;
   done:
      return rc ;
   error:
      goto done ;
   }
Example #2
0
   // PD_TRACE_DECLARE_FUNCTION ( SDB__DPSRPCMGR_INIT, "_dpsReplicaLogMgr::init" )
   INT32 _dpsReplicaLogMgr::init ( const CHAR *path, UINT32 pageNum )
   {
      INT32 rc = SDB_OK;
      PD_TRACE_ENTRY ( SDB__DPSRPCMGR_INIT );
      SDB_ASSERT ( path, "path can't be NULL" ) ;

      _transCB = sdbGetTransCB() ;

      _pages = SDB_OSS_NEW _dpsLogPage[pageNum];
      if ( NULL == _pages )
      {
         rc = SDB_OOM;
         PD_LOG (PDERROR, "new _dpsLogPage[pageNum] failed!" );
         goto error;
      }
      for ( UINT32 i = 0; i < pageNum; i++ )
      {
         _pages[i].setNumber( i );
      }
      _totalSize = DPS_DEFAULT_PAGE_SIZE * pageNum;
      _idleSize.init( _totalSize );
      _pageNum = pageNum ;
      if ( ossIsPowerOf2( pageNum ) )
      {
         DPS_SUB_BIT = ~pageNum ;
      }

      rc = _logger.init( path );
      if ( rc )
      {
         PD_LOG ( PDERROR, "Failed to initial log files, rc = %d", rc ) ;
         goto error;
      }

      if ( !_logger.getStartLSN( FALSE ).invalid() )
      {
         rc = _restore () ;
         if ( SDB_OK == rc )
         {
            PD_LOG ( PDEVENT, "Dps restore succeed, file lsn[%lld], buff "
                     "lsn[%lld], current lsn[%lld], expect lsn[%lld]",
                     _logger.getStartLSN().offset, _getStartLsn().offset,
                     _currentLsn.offset, _lsn.offset ) ;
         }
         else
         {
            PD_LOG ( PDERROR, "Dps restore failed[rc:%d]", rc ) ;
            goto error ;
         }
      }
   done:
      PD_TRACE_EXITRC ( SDB__DPSRPCMGR_INIT, rc );
      return rc;
   error:
      goto done;
   }