Release History

Data format is : YYYY-MM-DD

Version format is : major.minor.patch

  • 1.3.2 (server 1.2.3, manager 1.3.2, API 1.2.1) Released - 2016.06.08
  • 1.3.1 (server 1.2.2, manager 1.3.1, API 1.2.0) Released - 2016.04.06

1.3.2 Released

배포자원

db_script.zip
glue-scheduler-job-1.2.1.jar
glue-scheduler-manager-1.3.2.war ( M0SA010APP.ear )
meta-manager.properties
scheduler-server-1.2.3.zip

DB

  1. Quartz JDBCJobStore 용도의 DDL 추가 ( PostgreSQL 용 추가 )
    db_script.zip
        + quartz-2.2.2 
            - tables_oracle.sql
            - tables_postgres.sql  <-- 추가
        + scheduler
            - tables_oracle.sql
        + security
            - tables_oracle.sql
            - tables_postgres.sql  <-- 추가
    

API : glue-scheduler-job-1.2.1.jar ( 1.2.0 -> 1.2.1 )

  1. dbcp 설정값 변경
    • applicationContext-job.xml 의 dataSource bean 의 maxIdle 값을 1000 -> 8 로 변경
      ... 중략 ...
          <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
              <property name="location" value="file:${SCHEDULER_HOME}/conf/scheduler.properties" />
              <property name="ignoreUnresolvablePlaceholders" value="true" />
          </bean>
          <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
              <property name="driverClassName" value="${cm-dataSource.driverClassName}"/>
              <property name="url" value="${cm-dataSource.url}"/>  
              <property name="username" value="${cm-dataSource.username}"/>
              <property name="password" value="${cm-dataSource.password}"/>
              <property name="defaultAutoCommit" value="false" />
              <property name="minIdle" value="0" />
              <property name="maxIdle" value="8" />
              <property name="maxActive" value="-1" />
          </bean>
      ... 중략 ...
      
  2. 로그개선
    • JOB 실행옵션의 실행유형이 com.poscoict.app.job.GlueSimpleJob 인 경우
      첫번째는 개선 전이고, 두번째는 개선 후 로그 예임.
      . . . 중략 . . .
      INFO  c.p.app.job.GlueSimpleJob - RuntimeMXBean Name : 11828@hwangyujin-pc, 11828
      INFO  c.p.app.job.GlueSimpleJob - Called
      ERROR c.p.app.job.GlueSimpleJob - ignore 61996
      INFO  c.p.app.job.GlueSimpleJob - Type : {DEFAULT}, Root : {ServiceName=job001-service, _Job_RequestID=61996, sleep-second=10}
      . . . 중략 . . .
      
      INFO  c.p.app.job.GlueSimpleJob - GlueSimpleJob version : 1.2.1
      . . . 중략 . . .
      INFO  c.p.app.job.GlueSimpleJob - RuntimeMXBean Name : 11828@hwangyujin-pc, 11828
      INFO  c.p.app.job.GlueSimpleJob - RequestID:[61996] StartTime[Wed May 18 17:34:41 KST 2016]
      INFO  c.p.app.job.GlueSimpleJob - Type : {DEFAULT}, Root : {ServiceName=job001-service, _Job_RequestID=61996, sleep-second=10}
      . . . 중략 . . .
      INFO  c.p.app.job.GlueSimpleJob - RequestID:[61996] EndTime[Wed May 18 17:34:52 KST 2016] RunTime:[10452]
      
    • JOB 실행옵션의 실행유형이 com.posco.glue.cm.PoscoDefaultSchedulerJob 인 경우
      첫번째는 개선 전이고, 두번째는 개선 후 로그예임.
      WARN  [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]Default Locale is null(System Properties File) : Set System Locale-en
      INFO  [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]File Name: /SCH/ITSCM/apps/usrconf/message_en.properties
      DEBUG [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||
      DEBUG [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||
      DEBUG [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||
      DEBUG [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||
      DEBUG [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||
      INFO  [main][com.poscoict.app.job.GlueSimpleJob] - RuntimeMXBean Name : 30852@TLTCSAP01, 30852
      INFO  [main][com.poscoict.app.job.GlueSimpleJob] - Called
      ERROR [main][com.poscoict.app.job.GlueSimpleJob] - ignore 54867
      INFO  [main][com.poscoict.app.job.GlueSimpleJob] - Type : {DEFAULT}, Root : {OP_INDI_DT=, FAC_OP_CD_N=1S1, USER_EMP_NO=OFI16025, ROLL_UT_TP=G, _Job_RequestID=54867, OPER_FLAG=5, OBJECT_ID=m12m300600, className=com.posco.mes.m12m.p030.app.cm.schedule.PosCoilColdScheduleController, SCP_JOB_SERVER_IP=172.31.225.68, RL_ROLL_UT_NM_N=, DIR_TYPE=A, JOB_TYPE=B}
      . . . 중략 . . .
      
      WARN  [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]Default Locale is null(System Properties File) : Set System Locale-en
      INFO  [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]File Name: /SCH/ITSCM/apps/usrconf/message_en.properties
      INFO  [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||PosLogger.developerLog(PosLogWriterIF.INFO, message, classRef)
      DEBUG [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||PosLogger.developerLog(PosLogWriterIF.DEBUG, message, classRef)
      WARN  [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||PosLogger.developerLog(PosLogWriterIF.WARN, message, classRef)
      FATAL [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||PosLogger.developerLog(PosLogWriterIF.FATAL, message, classRef)
      ERROR [main][com.posco.mes.reuse.common.logging.PosLogger] - [1][null]com.posco.glue.cm.PoscoDefaultSchedulerJob||PosLogger.developerLog(PosLogWriterIF.ERROR, message, classRef)
      INFO  [main][com.poscoict.app.job.GlueSimpleJob] - GlueSimpleJob version : 1.2.1
      INFO  [main][com.poscoict.app.job.GlueSimpleJob] - RuntimeMXBean Name : 30852@TLTCSAP01, 30852
      INFO  [main][com.poscoict.app.job.GlueSimpleJob] - RequestID:[54867] StartTime[Wed May 18 17:34:41 KST 2016]
      INFO  [main][com.poscoict.app.job.GlueSimpleJob] - Type : {DEFAULT}, Root : {OP_INDI_DT=, FAC_OP_CD_N=1S1, USER_EMP_NO=OFI16025, ROLL_UT_TP=G, _Job_RequestID=54867, OPER_FLAG=5, OBJECT_ID=m12m300600, className=com.posco.mes.m12m.p030.app.cm.schedule.PosCoilColdScheduleController, SCP_JOB_SERVER_IP=172.31.225.68, RL_ROLL_UT_NM_N=, DIR_TYPE=A, JOB_TYPE=B}
      . . . 중략 . . .
      INFO  [main][com.poscoict.app.job.GlueSimpleJob] - RequestID:[54867] EndTime[Wed May 18 17:34:52 KST 2016] RunTime:[10452]
      
    • GlueService 실행 유형의 경우 History의 Status 값 개선

Manager : glue-scheduler-manager-1.3.2.war ( 1.3.1 -> 1.3.2 )

  1. JBoss일 경우, Home 화면 이동시 Not Found 에러 조치
    http://127.0.0.1:8080/scheduler-manager    <-- Not Found 에러 발생
    http://127.0.0.1:8080/scheduler-manager/   <-- context root 에 슬래시(/) 추가
    
  2. History 화면의 검색 조건 TriggerKey 추가
  3. Login 화면의 login 실패시의 경고메시지 추가
    ID 혹은 PASSWORD가 맞지 않습니다.
    사용할 수 없는 계정입니다.
    

Server : scheduler-server-1.2.3.zip ( 1.2.2 -> 1.2.3 )

  1. dbcp 설정값 변경
    • applicationContext-scheduler.xml, applicationContext-purge.xml 의 dataSource bean 의 maxIdle 값을 1000 -> 8 로 변경
      ... 중략 ...
          <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
              <property name="location" value="file:${CONFIG_PATH}/scheduler.properties" />
              <property name="ignoreUnresolvablePlaceholders" value="true" />
          </bean>
          <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
              <property name="driverClassName" value="${cm-dataSource.driverClassName}"/>
              <property name="url" value="${cm-dataSource.url}"/>  
              <property name="username" value="${cm-dataSource.username}"/>
              <property name="password" value="${cm-dataSource.password}"/>
              <property name="defaultAutoCommit" value="true"/>
              <property name="minIdle" value="${cm-dataSource.minIdle}"/>
              <property name="maxActive" value="${cm-dataSource.maxActive}"/>
              <property name="maxIdle" value="${cm-dataSource.maxIdle}"/>
          </bean>
      ... 중략 ...
      
  2. oracle, postgresql 일 경우, connectionProperties 추가
    DataSource ds = applicationContext.getBean( "cm-dataSource", DataSource.class );
    Connection con = null;
    try
    {
        con = DataSourceUtils.getConnection( ds );
        String databaseProductName = con.getMetaData().getDatabaseProductName().toLowerCase();
        if ( databaseProductName.indexOf( "oracle" ) >= 0 )
        {
            ( (BasicDataSource) ds ).addConnectionProperty( "v$session.program", "GlueSchedulerMinaServer 1.2.3" );
        } else if ( databaseProductName.indexOf( "postgresql" ) >= 0 || databaseProductName.indexOf( "enterprisedb" ) >= 0 )
        {
            ( (BasicDataSource) ds ).addConnectionProperty( "ApplicationName", "GlueSchedulerMinaServer 1.2.3 );
        } else
        {
            logger.warn( "not support - {}", databaseProductName );
        }
    } catch ( SQLException e )
    {
        logger.error( "SQLException", e );
    } finally
    {
        DataSourceUtils.releaseConnection( con, ds );
    }
    
  3. DB Connection 증가 방지
    • com.poscoict.app.quartz.listener.GlueSchedulerTriggerListener 수정
      첫번째는 개선 전이고, 두번째는 개선 후 코드임.
      불필요한 코드 제거.
      if ( trigger.getKey().equals( new TriggerKey( "_hidden_", "_hidden_" ) ) )
      {
          try
          {
              boolean isClosed = ( (GlueJdbcDao)this.dao).getDBConnection().isClosed();
              this.logger.trace( "try to purge, isClosed = {}", isClosed );
          } catch ( SQLException e )
          {
          }
          return;
      }
      
      if ( trigger.getKey().equals( new TriggerKey( "_hidden_", "_hidden_" ) ) )
      {
          return;
      }
      
    • com.poscoict.app.quartz.GlueHiddenJobImpl 수정
      첫번째는 개선 전이고, 두번째는 개선 후 코드임.
      GlueTransactionManager 사용코드 추가
      Connection con = con = DataSourceUtils.getConnection( ds );
      PreparedStatement ps = ...
      while(rs.next()){
          ...
      }
      JdbcUtils.closeResultSet( rs );
      JdbcUtils.closeStatement( ps );
      DataSourceUtils.releaseConnection( con, ds );
      
      GlueTransactionManager tx = applicationContext.getBean( "tx", GlueTransactionManager.class );
      tx.startTransaction();
      Connection con = con = DataSourceUtils.getConnection( ds );
      PreparedStatement ps = ...
      while(rs.next()){
          ...
      }
      JdbcUtils.closeResultSet( rs );
      JdbcUtils.closeStatement( ps );
      DataSourceUtils.releaseConnection( con, ds );
      tx.commit()
      
  4. Job 실행시 JobData 의 type이 Auto(A) 인 경우, 시스템현재시각 으로 설정하는 버그 수정.
  5. Trigger 로딩시 PRIORITY 순으로.

1.3.1 Released

최초 배포.

db_script.zip
glue-scheduler-job-1.2.0.jar
glue-scheduler-manager-1.3.1.war ( M0SA010APP.ear )
meta-manager.properties
scheduler-server-1.2.2.zip