├── env.sh ├── roaming ├── gsmrating ├── gsmratingD ├── prerating ├── rerating ├── spoolCall ├── ContSpooler ├── gsmautoStart ├── spawn_invgen ├── PPdRejectStrt ├── Rating.tar.gz ├── gsmRejectStrt ├── prepaidUpload ├── roamingNrtrde ├── autoStartPreUpld ├── gsmrating_newtes ├── E-commerce ├── container │ ├── risk_api │ │ └── Dockerfile │ ├── formatter │ │ ├── requirements.txt │ │ └── Dockerfile │ ├── datagenerator │ │ └── Dockerfile │ ├── dagster │ │ └── Dockerfile │ └── user_code │ │ └── Dockerfile ├── assets │ └── images │ │ └── arch.png ├── app │ ├── transform │ │ ├── models │ │ │ ├── marts │ │ │ │ └── core │ │ │ │ │ ├── fct_orders.sql │ │ │ │ │ ├── core.yml │ │ │ │ │ └── dim_customers.sql │ │ │ └── staging │ │ │ │ ├── stg_el.yml │ │ │ │ ├── stg_el__orders.sql │ │ │ │ ├── src_el.yml │ │ │ │ ├── stg_el__customer_risk_score.sql │ │ │ │ └── stg_el__customers.sql │ │ ├── profiles.yml │ │ ├── dbt_project.yml │ │ └── logs │ │ │ └── dbt.log.legacy │ ├── repository.py │ ├── schedules │ │ └── online_store_data_ingestion_schedule.py │ ├── utils │ │ ├── db.py │ │ └── config.py │ ├── jobs │ │ └── online_store_data_ingestion.py │ └── ops │ │ └── extract_load.py ├── metabase-data │ └── metabase.db │ │ ├── metabase.db.mv.db │ │ └── metabase.db.trace.db ├── workspace.yaml ├── customer_db_setup │ └── 1_create_customer_table.sql ├── test │ └── unit │ │ └── test_extract_load.py ├── risk_api │ └── main.py ├── Makefile ├── dagster.yaml ├── warehouse_db_setup │ └── 1_create_customer_order_state_tables.sql ├── datagenerator │ └── generate_fake_orders_customers.py └── docker-compose.yml ├── test.sh ├── gsmrating.sh ├── prerating.sh ├── roamingNrtrde.sh ├── gsmrejectrating.sh ├── roaming.sh ├── start_gsmautoStart.sh ├── LICENSE ├── README.md ├── Alert.sh ├── DWH_Call_Details_Gen_csv_script.sh ├── dum.txt ├── dummy.txt └── sample.txt /env.sh: -------------------------------------------------------------------------------- 1 | export CCBS_BATCH_PROCS_HOME=/home/cbsrating/Rating/batchProcs/ 2 | -------------------------------------------------------------------------------- /roaming: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/roaming -------------------------------------------------------------------------------- /gsmrating: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/gsmrating -------------------------------------------------------------------------------- /gsmratingD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/gsmratingD -------------------------------------------------------------------------------- /prerating: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/prerating -------------------------------------------------------------------------------- /rerating: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/rerating -------------------------------------------------------------------------------- /spoolCall: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/spoolCall -------------------------------------------------------------------------------- /ContSpooler: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/ContSpooler -------------------------------------------------------------------------------- /gsmautoStart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/gsmautoStart -------------------------------------------------------------------------------- /spawn_invgen: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/spawn_invgen -------------------------------------------------------------------------------- /PPdRejectStrt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/PPdRejectStrt -------------------------------------------------------------------------------- /Rating.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/Rating.tar.gz -------------------------------------------------------------------------------- /gsmRejectStrt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/gsmRejectStrt -------------------------------------------------------------------------------- /prepaidUpload: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/prepaidUpload -------------------------------------------------------------------------------- /roamingNrtrde: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/roamingNrtrde -------------------------------------------------------------------------------- /autoStartPreUpld: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/autoStartPreUpld -------------------------------------------------------------------------------- /gsmrating_newtes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/gsmrating_newtes -------------------------------------------------------------------------------- /E-commerce/container/risk_api/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8 2 | 3 | COPY ../../risk_api /app/ -------------------------------------------------------------------------------- /E-commerce/assets/images/arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/E-commerce/assets/images/arch.png -------------------------------------------------------------------------------- /E-commerce/app/transform/models/marts/core/fct_orders.sql: -------------------------------------------------------------------------------- 1 | with orders as ( 2 | select * 3 | from {{ ref('stg_el__orders') }} 4 | ) 5 | select * from orders -------------------------------------------------------------------------------- /E-commerce/metabase-data/metabase.db/metabase.db.mv.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rameshei87/E-commerce--Data-Engineering-Project/HEAD/E-commerce/metabase-data/metabase.db/metabase.db.mv.db -------------------------------------------------------------------------------- /test.sh: -------------------------------------------------------------------------------- 1 | ps -ef | grep "test.sh" |grep -v grep 2 | if [ $? -eq 0 ];then 3 | echo "Process Running" 4 | else 5 | echo "IN ELSE" 6 | sleep 10 7 | echo "Sleep Finished" 8 | fi 9 | 10 | -------------------------------------------------------------------------------- /E-commerce/app/transform/models/marts/core/core.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | models: 4 | - name: dim_customers 5 | columns: 6 | - name: customer_id 7 | tests: 8 | - not_null 9 | - name: fct_orders -------------------------------------------------------------------------------- /E-commerce/workspace.yaml: -------------------------------------------------------------------------------- 1 | load_from: 2 | # Each entry here corresponds to a service in the docker-compose file that exposes user code. 3 | - grpc_server: 4 | host: dagster_code_runner 5 | port: 4000 6 | location_name: "user_code" -------------------------------------------------------------------------------- /E-commerce/customer_db_setup/1_create_customer_table.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE customers ( 2 | customer_id INTEGER PRIMARY KEY, 3 | first_name VARCHAR(100), 4 | last_name VARCHAR(100), 5 | state_code VARCHAR(2), 6 | datetime_created VARCHAR(100), 7 | datetime_updated VARCHAR(100) 8 | ); -------------------------------------------------------------------------------- /E-commerce/app/transform/models/staging/stg_el.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | models: 4 | - name: stg_el__customers 5 | columns: 6 | - name: customer_id 7 | tests: 8 | - not_null 9 | - unique 10 | - name: stg_el__orders 11 | - name: stg_el__customer_risk_score -------------------------------------------------------------------------------- /E-commerce/container/formatter/requirements.txt: -------------------------------------------------------------------------------- 1 | pytest 2 | pytest-mock 3 | black 4 | flake8 5 | mypy 6 | types-requests 7 | isort 8 | dagster==0.14.17 9 | dagster-postgres==0.14.17 10 | dagster-docker==0.14.17 11 | requests==2.27.1 12 | psycopg2-binary==2.9.3 13 | boto3==1.21.21 14 | dagster-dbt==0.14.17 15 | dbt==0.21.1 -------------------------------------------------------------------------------- /E-commerce/container/datagenerator/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.7-slim 2 | 3 | RUN pip install \ 4 | psycopg2-binary==2.9.3 \ 5 | faker==13.3.2 \ 6 | boto3==1.21.21 7 | 8 | 9 | WORKDIR /opt/dagster/datagenerator 10 | 11 | COPY ../../datagenerator /opt/dagster/datagenerator 12 | 13 | CMD [ "python" "./generate_fake_orders_customers.py"] -------------------------------------------------------------------------------- /E-commerce/app/transform/profiles.yml: -------------------------------------------------------------------------------- 1 | config: 2 | send_anonymous_usage_stats: False 3 | 4 | transform: 5 | target: dev 6 | outputs: 7 | dev: 8 | type: postgres 9 | threads: 1 10 | host: warehouse_db 11 | port: 5432 12 | user: sde 13 | pass: password 14 | dbname: warehouse 15 | schema: store 16 | -------------------------------------------------------------------------------- /E-commerce/test/unit/test_extract_load.py: -------------------------------------------------------------------------------- 1 | from dagster import build_op_context 2 | from ops.extract_load import extract_customer_risk_score 3 | 4 | 5 | def test_extract_customer_risk_score(): 6 | context = build_op_context( 7 | op_config={"risk_endpoint": "http://risk_api:80"} 8 | ) 9 | assert len(extract_customer_risk_score(context)) == 1000 10 | -------------------------------------------------------------------------------- /E-commerce/container/formatter/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.9.5 2 | 3 | # set up location of code 4 | WORKDIR /code 5 | ENV PYTHONPATH=/code/app 6 | 7 | # install python requirements 8 | ADD container/formatter/requirements.txt requirements.txt 9 | RUN pip install -r requirements.txt 10 | 11 | # copy repo 12 | COPY ../../ /code/ 13 | 14 | ENTRYPOINT ["tail", "-f", "/dev/null"] 15 | -------------------------------------------------------------------------------- /E-commerce/risk_api/main.py: -------------------------------------------------------------------------------- 1 | from random import randint 2 | 3 | from fastapi import FastAPI 4 | 5 | app = FastAPI() 6 | 7 | 8 | @app.get("/") 9 | async def root(): 10 | # cust_id, risk_score [1-100] 11 | risk_data = [ 12 | {"customer_id": randint(1, 10000), "risk_score": randint(1, 100)} 13 | for _ in range(1000) 14 | ] 15 | return risk_data 16 | -------------------------------------------------------------------------------- /E-commerce/app/repository.py: -------------------------------------------------------------------------------- 1 | from dagster import repository 2 | from jobs.online_store_data_ingestion import online_store_data_ingestion 3 | from schedules.online_store_data_ingestion_schedule import ( 4 | online_store_data_ingestion_schedule, 5 | ) 6 | 7 | 8 | @repository 9 | def deploy_docker_repository(): 10 | return [online_store_data_ingestion, online_store_data_ingestion_schedule] 11 | -------------------------------------------------------------------------------- /E-commerce/app/schedules/online_store_data_ingestion_schedule.py: -------------------------------------------------------------------------------- 1 | from dagster import schedule 2 | from jobs.online_store_data_ingestion import online_store_data_ingestion 3 | 4 | 5 | @schedule( 6 | cron_schedule="*/2 * * * *", 7 | job=online_store_data_ingestion, 8 | execution_timezone="US/Central", 9 | ) 10 | def online_store_data_ingestion_schedule(_context): 11 | return {} 12 | -------------------------------------------------------------------------------- /E-commerce/app/transform/models/staging/stg_el__orders.sql: -------------------------------------------------------------------------------- 1 | with source as ( 2 | select * 3 | from {{ source('store', 'orders') }} 4 | ), 5 | renamed as ( 6 | select 7 | order_id, 8 | customer_id, 9 | item_id, 10 | item_name, 11 | TO_TIMESTAMP(delivered_on, 'YY-MM-DD HH24:MI:ss') as delivered_on 12 | from source 13 | ) 14 | select * 15 | from renamed -------------------------------------------------------------------------------- /gsmrating.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export ORACLE_HOME=/home/oracle/dbase/db_1/ 3 | export PATH=$PATH:$ORACLE_HOME/bin 4 | export LD_LIBRARY_PATH=$ORACLE_HOME/lib 5 | export CCBS_BATCH_PROCS_HOME=/home/cbsrating/Rating/batchProcs/ 6 | 7 | cd /home/cbsrating/Rating/batchProcs/bin/ 8 | ps -ef | grep gsmrating | grep -v grep 9 | 10 | if [ $? == 0 ] 11 | then 12 | echo "Executing gsmrating" 13 | 14 | ./gsmrating 15 | 16 | echo "Initiated gsmrating" 17 | else 18 | echo "Process is already running" 19 | fi 20 | 21 | -------------------------------------------------------------------------------- /prerating.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export ORACLE_HOME=/home/oracle/dbase/db_1/ 3 | export PATH=$PATH:$ORACLE_HOME/bin 4 | export LD_LIBRARY_PATH=$ORACLE_HOME/lib 5 | export CCBS_BATCH_PROCS_HOME=/home/cbsrating/Rating/batchProcs/ 6 | 7 | cd /home/cbsrating/Rating/batchProcs/bin/ 8 | ps -ef | grep prerating | grep -v grep 9 | 10 | if [ $? == 0 ] 11 | then 12 | echo "Executing prerating" 13 | 14 | ./prerating 15 | 16 | echo "Initiated prerating" 17 | else 18 | echo "Process is already running" 19 | fi 20 | 21 | -------------------------------------------------------------------------------- /roamingNrtrde.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export ORACLE_HOME=/home/oracle/dbase/db_1/ 3 | export PATH=$PATH:$ORACLE_HOME/bin 4 | export LD_LIBRARY_PATH=$ORACLE_HOME/lib 5 | export CCBS_BATCH_PROCS_HOME=/home/cbsrating/Rating/batchProcs/ 6 | 7 | cd /home/cbsrating/Rating/batchProcs/bin/ 8 | ps -ef | grep roamingNrtrde | grep -v grep 9 | 10 | if [ $? == 0 ] 11 | then 12 | echo "Executing roamingNrtrde" 13 | ./roamingNrtrde 14 | echo "Initiated roamingNrtrde" 15 | else 16 | echo "Process is already running" 17 | fi 18 | 19 | -------------------------------------------------------------------------------- /gsmrejectrating.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export ORACLE_HOME=/home/oracle/dbase/db_1/ 3 | export PATH=$PATH:$ORACLE_HOME/bin 4 | export LD_LIBRARY_PATH=$ORACLE_HOME/lib 5 | export CCBS_BATCH_PROCS_HOME=/home/cbsrating/Rating/batchProcs/ 6 | 7 | cd /home/cbsrating/Rating/batchProcs/bin/ 8 | ps -ef | grep gsmRejectStrt | grep -v grep 9 | 10 | if [ $? == 1 ] 11 | then 12 | echo "Executing gsmRejectStrt" 13 | 14 | ./gsmRejectStrt 15 | 16 | echo "Initiated gsmRejectStrt" 17 | else 18 | echo "Process is already running" 19 | fi 20 | 21 | -------------------------------------------------------------------------------- /E-commerce/app/transform/models/marts/core/dim_customers.sql: -------------------------------------------------------------------------------- 1 | with customers as ( 2 | select * 3 | from {{ ref('stg_el__customers') }} 4 | ), 5 | states as ( 6 | select * 7 | from {{ source('store', 'states') }} 8 | ), 9 | customer_risk_score as ( 10 | select * 11 | from {{ ref('stg_el__customer_risk_score') }} 12 | ) 13 | select c.* 14 | , s.st_name 15 | , Coalesce(r.risk_score, 0) as risk_score 16 | from customers c 17 | join states s 18 | on c.state_code = s.state_code 19 | left join customer_risk_score r 20 | on c.customer_id = r.customer_id -------------------------------------------------------------------------------- /E-commerce/Makefile: -------------------------------------------------------------------------------- 1 | up: 2 | docker compose up --build -d 3 | 4 | down: 5 | docker compose down --volumes 6 | 7 | clean-dashboard: 8 | rm -rf metabase-data/metabase.db 9 | 10 | restart: down up 11 | 12 | format: 13 | docker exec formatter python -m black -S --line-length 79 . 14 | 15 | isort: 16 | docker exec formatter isort . 17 | 18 | pytest: 19 | docker exec formatter pytest /code/test 20 | 21 | type: 22 | docker exec formatter mypy --ignore-missing-imports /code 23 | 24 | lint: 25 | docker exec formatter flake8 /code 26 | 27 | ci: isort format type lint pytest -------------------------------------------------------------------------------- /E-commerce/app/transform/dbt_project.yml: -------------------------------------------------------------------------------- 1 | name: 'transform' 2 | version: '1.0.0' 3 | config-version: 2 4 | 5 | # This setting configures which "profile" dbt uses for this project. 6 | profile: 'transform' 7 | 8 | source-paths: ["models"] 9 | analysis-paths: ["analysis"] 10 | test-paths: ["tests"] 11 | data-paths: ["data"] 12 | macro-paths: ["macros"] 13 | snapshot-paths: ["snapshots"] 14 | 15 | target-path: "target" # directory which will store compiled SQL files 16 | clean-targets: # directories to be removed by `dbt clean` 17 | - "target" 18 | - "dbt_modules" 19 | -------------------------------------------------------------------------------- /roaming.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export ORACLE_HOME=/home/oracle/dbase/db_1/ 3 | export PATH=$PATH:$ORACLE_HOME/bin 4 | export LD_LIBRARY_PATH=$ORACLE_HOME/lib 5 | export CCBS_BATCH_PROCS_HOME=/home/cbsrating/Rating/batchProcs/ 6 | 7 | cd /home/cbsrating/Rating/batchProcs/bin/ 8 | ps -ef | grep roaming | grep -v grep 9 | 10 | if [ $? == 0 ] 11 | then 12 | echo "Executing roaming" 13 | 14 | rm /home/cbsrating/Rating/batchProcs/locks/gsmroaming.lock 15 | 16 | ./roaming 17 | echo "Initiated roaming" 18 | else 19 | echo "Process is already running" 20 | fi 21 | 22 | -------------------------------------------------------------------------------- /start_gsmautoStart.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export ORACLE_HOME=/home/oracle/dbase/db_1/ 3 | export PATH=$PATH:$ORACLE_HOME/bin 4 | export LD_LIBRARY_PATH=$ORACLE_HOME/lib 5 | export CCBS_BATCH_PROCS_HOME=/home/cbsrating/Rating/batchProcs/ 6 | 7 | cd /home/cbsrating/Rating/batchProcs/bin/ 8 | ps -ef | grep gsmautoStart | grep -v grep 9 | 10 | if [ $? == 0 ] 11 | then 12 | echo "Executing gsmautoStart" 13 | rm ../stopsignals/stopgsmrating 14 | rm ../stopsignals/stoppregsmrating 15 | ./gsmautoStart 16 | echo "Initiated gsmautoStart" 17 | else 18 | echo "Process is already running" 19 | fi 20 | -------------------------------------------------------------------------------- /E-commerce/container/dagster/Dockerfile: -------------------------------------------------------------------------------- 1 | # Dagster libraries to run both dagit and the dagster-daemon. Does not 2 | # need to have access to any pipeline code. 3 | 4 | FROM python:3.7-slim 5 | 6 | RUN pip install \ 7 | dagster==0.14.17 \ 8 | dagster-graphql==0.14.17 \ 9 | dagit==0.14.17 \ 10 | dagster-postgres==0.14.17 \ 11 | dagster-docker==0.14.17 \ 12 | ipython_genutils==0.2.0 13 | 14 | # Set $DAGSTER_HOME and copy dagster instance and workspace YAML there 15 | ENV DAGSTER_HOME=/opt/dagster/dagster_home/ 16 | 17 | RUN mkdir -p $DAGSTER_HOME 18 | 19 | COPY ../../dagster.yaml ../../workspace.yaml $DAGSTER_HOME 20 | 21 | WORKDIR $DAGSTER_HOME 22 | -------------------------------------------------------------------------------- /E-commerce/app/transform/models/staging/src_el.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | sources: 4 | - name: store 5 | description: Data from application database, brought in by an EL process. 6 | tables: 7 | - name: customers 8 | columns: 9 | - name: customer_id 10 | tests: 11 | - not_null 12 | 13 | - name: orders 14 | columns: 15 | - name: order_id 16 | tests: 17 | - not_null 18 | - name: customer_id 19 | tests: 20 | - relationships: 21 | to: source('store', 'customers') 22 | field: customer_id 23 | 24 | - name: states 25 | - name: customer_risk_score -------------------------------------------------------------------------------- /E-commerce/app/transform/models/staging/stg_el__customer_risk_score.sql: -------------------------------------------------------------------------------- 1 | with source as ( 2 | select * 3 | from {{ source('store', 'customer_risk_score') }} 4 | ), 5 | ordered_customer_risk_score as ( 6 | select customer_id, 7 | risk_score, 8 | datetime_inserted, 9 | ROW_NUMBER() OVER( 10 | PARTITION BY customer_id 11 | ORDER BY datetime_inserted DESC 12 | ) as rw_num 13 | from source 14 | ) 15 | select customer_id, 16 | risk_score, 17 | datetime_inserted 18 | from ordered_customer_risk_score 19 | where (customer_id, rw_num) IN ( 20 | select customer_id, 21 | min(rw_num) 22 | from ordered_customer_risk_score 23 | group by customer_id 24 | ) 25 | 26 | -------------------------------------------------------------------------------- /E-commerce/app/utils/db.py: -------------------------------------------------------------------------------- 1 | from contextlib import contextmanager 2 | from dataclasses import dataclass 3 | 4 | import psycopg2 5 | 6 | 7 | @dataclass 8 | class DBConnection: 9 | db: str 10 | user: str 11 | password: str 12 | host: str 13 | port: int = 5432 14 | 15 | 16 | class WarehouseConnection: 17 | def __init__(self, db_conn: DBConnection): 18 | self.conn_url = ( 19 | f"postgresql://{db_conn.user}:{db_conn.password}@" 20 | f"{db_conn.host}:{db_conn.port}/{db_conn.db}" 21 | ) 22 | 23 | @contextmanager 24 | def managed_cursor(self, cursor_factory=None): 25 | self.conn = psycopg2.connect(self.conn_url) 26 | self.conn.autocommit = True 27 | self.curr = self.conn.cursor(cursor_factory=cursor_factory) 28 | try: 29 | yield self.curr 30 | finally: 31 | self.curr.close() 32 | self.conn.close() 33 | -------------------------------------------------------------------------------- /E-commerce/container/user_code/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.7-slim 2 | 3 | # Checkout and install dagster libraries needed to run the gRPC server 4 | # exposing your repository to dagit and dagster-daemon, and to load the DagsterInstance 5 | 6 | RUN pip install \ 7 | dagster==0.14.17 \ 8 | dagster-postgres==0.14.17 \ 9 | dagster-docker==0.14.17 \ 10 | requests==2.27.1 \ 11 | psycopg2-binary==2.9.3 \ 12 | boto3==1.21.21 \ 13 | dagster-dbt==0.14.17 \ 14 | dbt-core \ 15 | dbt-postgres 16 | 17 | # Add repository code 18 | 19 | WORKDIR /opt/dagster/app 20 | ENV PYTHONPATH=/app 21 | 22 | COPY ../../app /opt/dagster/app 23 | 24 | # Run dagster gRPC server on port 4000 25 | 26 | EXPOSE 4000 27 | 28 | # CMD allows this to be overridden from run launchers or executors that want 29 | # to run other commands against your repository 30 | CMD ["dagster", "api", "grpc", "-h", "0.0.0.0", "-p", "4000", "-f", "repository.py"] 31 | -------------------------------------------------------------------------------- /E-commerce/app/transform/models/staging/stg_el__customers.sql: -------------------------------------------------------------------------------- 1 | with source as ( 2 | select * 3 | from {{ source('store', 'customers') }} 4 | ), 5 | ordered_customer as ( 6 | select customer_id, 7 | first_name, 8 | last_name, 9 | state_code, 10 | TO_TIMESTAMP(datetime_created, 'YY-MM-DD HH24:MI:ss') as datetime_created, 11 | TO_TIMESTAMP(datetime_updated, 'YY-MM-DD HH24:MI:ss') as datetime_updated, 12 | datetime_inserted, 13 | ROW_NUMBER() OVER( 14 | PARTITION BY customer_id 15 | ORDER BY datetime_inserted DESC 16 | ) as rw_num 17 | from source 18 | ) 19 | select customer_id, 20 | first_name, 21 | last_name, 22 | state_code, 23 | datetime_created, 24 | datetime_updated, 25 | datetime_inserted 26 | from ordered_customer 27 | where (customer_id, rw_num) IN ( 28 | select customer_id, 29 | min(rw_num) 30 | from ordered_customer 31 | group by customer_id 32 | ) -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Ramesh chinnaraj 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /E-commerce/app/utils/config.py: -------------------------------------------------------------------------------- 1 | import os 2 | from typing import Dict 3 | 4 | from utils.db import DBConnection 5 | 6 | 7 | def get_warehouse_creds() -> DBConnection: 8 | return DBConnection( 9 | user=os.getenv("WAREHOUSE_USER", ""), 10 | password=os.getenv("WAREHOUSE_PASSWORD", ""), 11 | db=os.getenv("WAREHOUSE_DB", ""), 12 | host=os.getenv("WAREHOUSE_HOST", ""), 13 | port=int(os.getenv("WAREHOUSE_PORT", 5432)), 14 | ) 15 | 16 | 17 | def get_customer_db_creds() -> DBConnection: 18 | return DBConnection( 19 | user=os.getenv("CUSTOMER_DB_USER", ""), 20 | password=os.getenv("CUSTOMER_DB_PASSWORD", ""), 21 | db=os.getenv("CUSTOMER_DB_DB", ""), 22 | host=os.getenv("CUSTOMER_DB_HOST", ""), 23 | port=5432, 24 | ) 25 | 26 | 27 | def get_aws_creds() -> Dict[str, str]: 28 | return { 29 | "endpoint_url": os.getenv("AWS_ENDPOINT_URL", ""), 30 | "aws_access_key_id": os.getenv("AWS_ACCESS_KEY_ID", ""), 31 | "aws_secret_access_key": os.getenv("AWS_SECRET_ACCESS_KEY", ""), 32 | "region_name": os.getenv("AWS_REGION_NAME", ""), 33 | } 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # E-commerce--Data-Engineering-Project 2 | 3 | Architecture diagram 4 | 5 | ![image](https://user-images.githubusercontent.com/110036451/184507065-6bc62cce-385c-4f2a-a231-d864005e1f94.png) 6 | 7 | Running the project 8 | 9 | Prerequisites 10 | 11 | Docker and Docker Compose v1.27.0 12 | git 13 | Clone the repo using 14 | 15 | git clone https://github.com/Rameshei97/online_store.git 16 | 17 | cd online_store 18 | 19 | Spin up 20 | 21 | In your project directory run the following command. 22 | 23 | make up 24 | 25 | docker ps # to see all the components 26 | Wait for about a minute. You can log into 27 | 28 | Dagster UI at http://localhost:3000/ 29 | Metabase UI at http://localhost:3001/. Use the following credentials 30 | 31 | username: james.holden@rocinante.com 32 | password: password1234 33 | 34 | Make sure to switch on the data pipeline in dagster UI, and let it run a few times. In Metabase UI, search for and click on Online store overview using the search bar on the top left corner. This will take you to the dashboard which is fed with the transformed data from the data pipeline. 35 | 36 | Tear down 37 | When you are done, you can spin down your containers using the following command. 38 | 39 | make down 40 | -------------------------------------------------------------------------------- /E-commerce/dagster.yaml: -------------------------------------------------------------------------------- 1 | scheduler: 2 | module: dagster.core.scheduler 3 | class: DagsterDaemonScheduler 4 | 5 | run_storage: 6 | module: dagster_postgres.run_storage 7 | class: PostgresRunStorage 8 | config: 9 | postgres_db: 10 | hostname: dagster_metadata_db 11 | username: 12 | env: DAGSTER_POSTGRES_USER 13 | password: 14 | env: DAGSTER_POSTGRES_PASSWORD 15 | db_name: 16 | env: DAGSTER_POSTGRES_DB 17 | port: 5432 18 | 19 | schedule_storage: 20 | module: dagster_postgres.schedule_storage 21 | class: PostgresScheduleStorage 22 | config: 23 | postgres_db: 24 | hostname: dagster_metadata_db 25 | username: 26 | env: DAGSTER_POSTGRES_USER 27 | password: 28 | env: DAGSTER_POSTGRES_PASSWORD 29 | db_name: 30 | env: DAGSTER_POSTGRES_DB 31 | port: 5432 32 | 33 | event_log_storage: 34 | module: dagster_postgres.event_log 35 | class: PostgresEventLogStorage 36 | config: 37 | postgres_db: 38 | hostname: dagster_metadata_db 39 | username: 40 | env: DAGSTER_POSTGRES_USER 41 | password: 42 | env: DAGSTER_POSTGRES_PASSWORD 43 | db_name: 44 | env: DAGSTER_POSTGRES_DB 45 | port: 5432 46 | -------------------------------------------------------------------------------- /E-commerce/app/jobs/online_store_data_ingestion.py: -------------------------------------------------------------------------------- 1 | from dagster import job 2 | from dagster_dbt import dbt_cli_resource, dbt_run_op, dbt_test_op 3 | from ops.extract_load import ( 4 | extract_customer_data, 5 | extract_customer_risk_score, 6 | extract_orders_data, 7 | load_customer_data, 8 | load_customer_risk_score, 9 | load_orders_data, 10 | ) 11 | 12 | my_dbt_resource = dbt_cli_resource.configured( 13 | { 14 | "project_dir": "./transform", 15 | "profiles_dir": "./transform", 16 | } 17 | ) 18 | 19 | run_config = { 20 | "ops": { 21 | "extract_customer_risk_score": { 22 | "config": {"risk_endpoint": "http://risk_api:80"} 23 | }, 24 | "extract_orders_data": { 25 | "config": {"orders_bucket_name": "app-orders"} 26 | }, 27 | } 28 | } 29 | 30 | 31 | @job(resource_defs={"dbt": my_dbt_resource}, config=run_config) 32 | def online_store_data_ingestion(): 33 | dbt_test_op( 34 | dbt_run_op( 35 | [ 36 | load_customer_risk_score(extract_customer_risk_score()), 37 | load_customer_data(extract_customer_data()), 38 | load_orders_data(extract_orders_data()), 39 | ] 40 | ) 41 | ) 42 | -------------------------------------------------------------------------------- /E-commerce/warehouse_db_setup/1_create_customer_order_state_tables.sql: -------------------------------------------------------------------------------- 1 | DROP SCHEMA IF EXISTS store; 2 | CREATE SCHEMA store; 3 | DROP TABLE IF EXISTS store.customers; 4 | CREATE TABLE store.customers ( 5 | customer_id INTEGER, 6 | first_name VARCHAR(100), 7 | last_name VARCHAR(100), 8 | state_code VARCHAR(2), 9 | datetime_created VARCHAR(100), 10 | datetime_updated VARCHAR(100), 11 | datetime_inserted TIMESTAMP not null default CURRENT_TIMESTAMP 12 | ); 13 | DROP TABLE IF EXISTS store.customer_risk_score; 14 | CREATE TABLE store.customer_risk_score( 15 | customer_id INTEGER, 16 | risk_score INTEGER, 17 | datetime_inserted TIMESTAMP not null default CURRENT_TIMESTAMP 18 | ); 19 | DROP TABLE IF EXISTS store.orders; 20 | CREATE TABLE store.orders( 21 | order_id VARCHAR(50), 22 | customer_id INTEGER, 23 | item_id VARCHAR(50), 24 | item_name VARCHAR(150), 25 | delivered_on VARCHAR(50) 26 | ); 27 | DROP TABLE IF EXISTS store.states ; 28 | CREATE TABLE store.states ( 29 | state_identifier INTEGER, 30 | state_code VARCHAR(2), 31 | st_name VARCHAR(30) 32 | ); 33 | INSERT INTO store.states (state_identifier, state_code, st_name) 34 | VALUES 35 | (1,'AC','Acre'), 36 | (2,'AL','Alagoas'), 37 | (3,'AP','Amapa'), 38 | (4,'AM','Amazonas'), 39 | (5,'BA','Bahia'), 40 | (6,'CE','Ceara'), 41 | (7,'DF','Distrito Federal'), 42 | (8,'ES','Espirito Santo'), 43 | (9,'GO','Goias'), 44 | (10,'MA','Maranhao'), 45 | (11,'MT','MatoGrosso'), 46 | (12,'MS','MatoGrosso do Sul'), 47 | (13,'MG','Minas Gerais'), 48 | (14,'PA','Para'), 49 | (15,'PB','Paraiba'), 50 | (16,'PR','Parana'), 51 | (17,'PE','Pernambuco'), 52 | (18,'PI','Piaui'), 53 | (19,'RJ','Rio de Janeiro'), 54 | (20,'RN','Rio Grande do Norte'), 55 | (21,'RS','Rio Grande do Sul'), 56 | (22,'RO','Rondonia'), 57 | (23,'RR','Roraima'), 58 | (24,'SC','Santa Catarina'), 59 | (25,'SP','Sao Paulo'), 60 | (26,'SE','Sergipe'), 61 | (27,'TO','Tocantins'); -------------------------------------------------------------------------------- /Alert.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | local_dir1="/app/cbsrating/Rating/batchProcs/med_dir/gsm/data/" 3 | local_dir2="/app/cbsrating/Rating/batchProcs/med_dir/gprs/data/" 4 | local_dir3="/app/cbsrating/Rating/batchProcs/med_dir/mms/data/" 5 | local_dir4="/app/cbsrating/Rating/batchProcs/med_dir/smsc/data/" 6 | roam_dir1="/app/cbsrating/Rating/batchProcs/roam_cdr_dir/gsm/data" 7 | roam_dir2="/app/cbsrating/Rating/batchProcs/roam_cdr_dir/gprs/data" 8 | roam_nrtrde_dir1="/app/cbsrating/Rating/batchProcs/roam_nrtrde_cdr_dir/gsm/data/" 9 | roam_nrtrde_dir2="/app/cbsrating/Rating/batchProcs/roam_nrtrde_cdr_dir/gprs/data/" 10 | ORACLE_CONN=CBS_APPS/CBS_APPS@CBSTEST 11 | MOB_NUMB="23052588901" 12 | SMS_MESSAGE1="CDR Files are not present in GSM Folder" 13 | SMS_MESSAGE2="CDR Files are not present in GPRS Folder" 14 | SMS_MESSAGE3="CDR Files are not present in MMS Folder" 15 | SMS_MESSAGE4="CDR Files are not present in SMS Folder" 16 | ROAMSMS_MESSAGE1="Roaming CDR Files are not present in GSM Folder" 17 | ROAMSMS_MESSAGE2="Roaming CDR Files are not present in GPRS Folder" 18 | ROAM_NRTRDESMS_MESSAGE1="Roaming NRTRDE CDR Files are not present in GSM Folder" 19 | ROAM_NRTRDESMS_MESSAGE2="Roaming NRTRDE CDR Files are not present in GPRS Folder" 20 | MAILID="satish.mantha@tecnotree.com" 21 | SMSrequired="Y" 22 | Mailrequired="N" 23 | SMS_SOURCE="@Billity" 24 | 25 | 26 | function cdrFileexistOrNot() 27 | { 28 | path=$1 29 | message=$2 30 | cd $path 31 | for i in *.* 32 | do 33 | if [[ -f "$i" ]] 34 | then 35 | echo "file exists" 36 | else 37 | echo "file not exist" 38 | if [ "$SMSrequired" = "Y" ] || [ "$SMSrequired" = "y" ] ; then 39 | 40 | sql_conn=`sqlplus -S $ORACLE_CONN < email 56 | sendmail $MAILID < email 57 | fi 58 | fi 59 | done 60 | } 61 | 62 | cdrFileexistOrNot "$local_dir1" "$SMS_MESSAGE1" 63 | cdrFileexistOrNot "$local_dir2" "$SMS_MESSAGE2" 64 | cdrFileexistOrNot "$local_dir3" "$SMS_MESSAGE3" 65 | cdrFileexistOrNot "$local_dir4" "$SMS_MESSAGE4" 66 | cdrFileexistOrNot "$roam_dir1" "$ROAMSMS_MESSAGE1" 67 | cdrFileexistOrNot "$roam_dir2" "$ROAMSMS_MESSAGE2" 68 | cdrFileexistOrNot "$roam_nrtrde_dir1" "$ROAM_NRTRDESMS_MESSAGE1" 69 | cdrFileexistOrNot "$roam_nrtrde_dir2" "$ROAM_NRTRDESMS_MESSAGE2" 70 | 71 | -------------------------------------------------------------------------------- /DWH_Call_Details_Gen_csv_script.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | 4 | datetag=`date +'%Y%m%d'` 5 | 6 | logMsg() { 7 | mType=$1 8 | mText=$2 9 | mTime=`date '+%Y:%m:%d %H:%M:%S'` 10 | mProg=`basename $0` 11 | echo "$mTime|$mType|[$$]|$mProg|$mText" >> ${_logFile} 12 | } 13 | 14 | GSM_CSV="GSM.csv" 15 | GPRS_CSV="GPRS.csv" 16 | MMS_CSV="MMS.csv" 17 | OUTPUT_PATH=/home/cbsrating/Rating/batchProcs/CSV/ 18 | LOG_FILE_DIR=/home/cbsrating/Rating/batchProcs/logs/ 19 | DB_CONNECTION=CBS_APPS/CBS_APPS@CBS 20 | 21 | today=`date "+%Y%m%d"` 22 | _logFile="RatedCdrsToDWH_$today.log" 23 | 24 | 25 | cd $OUTPUT_PATH 26 | 27 | 28 | function csvgeneration() 29 | { 30 | calltype=$1 31 | csv=$2 32 | echo $calltype 33 | echo $csv 34 | 35 | logMsg "INFO" "CALL TYPE IS $calltype" 36 | 37 | columns=`sqlplus -silent $DB_CONNECTION < 0' $GSM_CSV > out.txt 102 | mv out.txt $GSM_CSV 103 | mv GSM.csv 'GSM_'$datetag.csv 104 | 105 | awk 'NF > 0' $GPRS_CSV > out.txt 106 | mv out.txt $GPRS_CSV 107 | mv GPRS.csv 'GPRS_'$datetag.csv 108 | 109 | awk 'NF > 0' $MMS_CSV > out.txt 110 | mv out.txt $MMS_CSV 111 | mv MMS.csv 'MMS_'$datetag.csv 112 | -------------------------------------------------------------------------------- /E-commerce/app/ops/extract_load.py: -------------------------------------------------------------------------------- 1 | from typing import Dict, List 2 | 3 | import boto3 4 | import psycopg2.extras as p 5 | import requests 6 | from dagster import op 7 | from utils.config import ( 8 | get_aws_creds, 9 | get_customer_db_creds, 10 | get_warehouse_creds, 11 | ) 12 | from utils.db import WarehouseConnection 13 | 14 | 15 | @op(config_schema={"risk_endpoint": str}) 16 | def extract_customer_risk_score(context) -> List[Dict[str, int]]: 17 | resp = requests.get(context.op_config["risk_endpoint"]) 18 | return resp.json() 19 | 20 | 21 | @op 22 | def load_customer_risk_score(customer_risk_score: List[Dict[str, int]]): 23 | ins_qry = """ 24 | INSERT INTO store.customer_risk_score( 25 | customer_id, 26 | risk_score 27 | ) 28 | VALUES ( 29 | %(customer_id)s, 30 | %(risk_score)s 31 | ) 32 | """ 33 | with WarehouseConnection(get_warehouse_creds()).managed_cursor() as curr: 34 | p.execute_batch(curr, ins_qry, customer_risk_score) 35 | 36 | 37 | @op(config_schema={"orders_bucket_name": str}) 38 | def extract_orders_data(context) -> List[Dict[str, str]]: 39 | s3 = boto3.client("s3", **get_aws_creds()) 40 | objs = s3.list_objects_v2(Bucket=context.op_config["orders_bucket_name"])[ 41 | "Contents" 42 | ] 43 | 44 | def get_last_modified(obj) -> int: 45 | return int(obj["LastModified"].strftime("%s")) 46 | 47 | last_added = [ 48 | obj["Key"] for obj in sorted(objs, key=get_last_modified, reverse=True) 49 | ][0] 50 | 51 | obj = s3.get_object( 52 | Bucket=context.op_config["orders_bucket_name"], Key=last_added 53 | ) 54 | data = obj["Body"].read().decode("utf-8") 55 | 56 | orders = [] 57 | for line in data.split("\n")[:-1]: 58 | order_id, customer_id, item_id, item_name, delivered_on = str( 59 | line 60 | ).split(",") 61 | orders.append( 62 | { 63 | "order_id": order_id, 64 | "customer_id": customer_id, 65 | "item_id": item_id, 66 | "item_name": item_name, 67 | "delivered_on": delivered_on, 68 | } 69 | ) 70 | 71 | return orders 72 | 73 | 74 | @op 75 | def load_orders_data(orders_data: List[Dict[str, str]]): 76 | ins_qry = """ 77 | INSERT INTO store.orders( 78 | order_id, 79 | customer_id, 80 | item_id, 81 | item_name, 82 | delivered_on 83 | ) 84 | VALUES ( 85 | %(order_id)s, 86 | %(customer_id)s, 87 | %(item_id)s, 88 | %(item_name)s, 89 | %(delivered_on)s 90 | ) 91 | """ 92 | with WarehouseConnection(get_warehouse_creds()).managed_cursor() as curr: 93 | p.execute_batch(curr, ins_qry, orders_data) 94 | 95 | 96 | @op 97 | def extract_customer_data() -> List[Dict[str, str]]: 98 | with WarehouseConnection(get_customer_db_creds()).managed_cursor() as curr: 99 | curr.execute( 100 | ''' 101 | select customer_id, 102 | first_name, 103 | last_name, 104 | state_code, 105 | datetime_created, 106 | datetime_updated 107 | from customers 108 | where 109 | TO_TIMESTAMP(datetime_created, 'YY-MM-DD HH24:MI:ss') 110 | >= current_timestamp - interval '5 minutes' 111 | or TO_TIMESTAMP(datetime_updated, 'YY-MM-DD HH24:MI:ss') 112 | >= current_timestamp - interval '5 minutes' 113 | ''' 114 | ) 115 | cust_data = curr.fetchall() 116 | return [ 117 | { 118 | "customer_id": str(d[0]), 119 | "first_name": str(d[1]), 120 | "last_name": str(d[2]), 121 | "state_code": str(d[3]), 122 | "datetime_created": str(d[4]), 123 | "datetime_updated": str(d[5]), 124 | } 125 | for d in cust_data 126 | ] 127 | 128 | 129 | @op 130 | def load_customer_data(customer_data: List[Dict[str, str]]): 131 | ins_qry = """ 132 | INSERT INTO store.customers( 133 | customer_id, 134 | first_name, 135 | last_name, 136 | state_code, 137 | datetime_created, 138 | datetime_updated 139 | ) 140 | VALUES ( 141 | %(customer_id)s, 142 | %(first_name)s, 143 | %(last_name)s, 144 | %(state_code)s, 145 | %(datetime_created)s, 146 | %(datetime_updated)s 147 | ) 148 | """ 149 | with WarehouseConnection(get_warehouse_creds()).managed_cursor() as curr: 150 | p.execute_batch(curr, ins_qry, customer_data) 151 | -------------------------------------------------------------------------------- /E-commerce/datagenerator/generate_fake_orders_customers.py: -------------------------------------------------------------------------------- 1 | import random 2 | import time 3 | import uuid 4 | from contextlib import contextmanager 5 | from datetime import datetime 6 | from typing import Any, List, Tuple 7 | 8 | import boto3 9 | import psycopg2 10 | from faker import Faker 11 | 12 | STATES_LIST = [ 13 | "AC", 14 | "AL", 15 | "AP", 16 | "AM", 17 | "BA", 18 | "CE", 19 | "DF", 20 | "ES", 21 | "GO", 22 | "MA", 23 | "MT", 24 | "MS", 25 | "MG", 26 | "PA", 27 | "PB", 28 | "PR", 29 | "PE", 30 | "PI", 31 | "RJ", 32 | "RN", 33 | "RS", 34 | "RO", 35 | "RR", 36 | "SC", 37 | "SP", 38 | "SE", 39 | "TO", 40 | ] 41 | 42 | 43 | def _get_orders(cust_ids: List[int], num_orders: int) -> str: 44 | # order_id, customer_id, item_id, item_name, delivered_on 45 | items = [ 46 | "chair", 47 | "car", 48 | "toy", 49 | "laptop", 50 | "box", 51 | "food", 52 | "shirt", 53 | "weights", 54 | "bags", 55 | "carts", 56 | ] 57 | data = "" 58 | for _ in range(num_orders): 59 | data += f'{uuid.uuid4()},{random.choice(cust_ids)},' 60 | data += f'{uuid.uuid4()},{random.choice(items)},' 61 | data += f'{datetime.now().strftime("%y-%m-%d %H:%M:%S")}' 62 | data += "\n" 63 | 64 | return data 65 | 66 | 67 | def _get_customer_data( 68 | cust_ids: List[int], 69 | ) -> List[Tuple[int, Any, Any, str, str, str]]: 70 | fake = Faker() 71 | 72 | return [ 73 | ( 74 | cust_id, 75 | fake.first_name(), 76 | fake.last_name(), 77 | random.choice(STATES_LIST), 78 | datetime.now().strftime("%y-%m-%d %H:%M:%S"), 79 | datetime.now().strftime("%y-%m-%d %H:%M:%S"), 80 | ) 81 | for cust_id in cust_ids 82 | ] 83 | 84 | 85 | def _customer_data_insert_query() -> str: 86 | return """ 87 | INSERT INTO customers ( 88 | customer_id, 89 | first_name, 90 | last_name, 91 | state_code, 92 | datetime_created, 93 | datetime_updated 94 | ) 95 | VALUES ( 96 | %s, 97 | %s, 98 | %s, 99 | %s, 100 | %s, 101 | %s 102 | ) 103 | on conflict(customer_id) 104 | do update set 105 | (first_name, last_name, state_code, datetime_updated) = 106 | (EXCLUDED.first_name, EXCLUDED.last_name, 107 | EXCLUDED.state_code, EXCLUDED.datetime_updated); 108 | """ 109 | 110 | 111 | def generate_data(iteration: int, orders_bucket: str = "app-orders") -> None: 112 | cust_ids = [random.randint(1, 10000) for _ in range(1000)] 113 | orders_data = _get_orders(cust_ids, 10000) 114 | customer_data = _get_customer_data(cust_ids) 115 | 116 | # send orders data to S3 117 | s3 = boto3.resource( 118 | "s3", 119 | endpoint_url="http://cloud-store:9000", 120 | aws_access_key_id="AKIAIOSFODNN7EXAMPLE", 121 | aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", 122 | region_name="us-east-1", 123 | ) 124 | # create bucket if not exists 125 | if not s3.Bucket(orders_bucket) in s3.buckets.all(): 126 | s3.create_bucket(Bucket=orders_bucket) 127 | s3.Object(orders_bucket, f"data_{str(iteration)}.csv").put( 128 | Body=orders_data 129 | ) 130 | 131 | # send customers data to customer_db 132 | with DatabaseConnection().managed_cursor() as curr: 133 | insert_query = _customer_data_insert_query() 134 | for cd in customer_data: 135 | curr.execute( 136 | insert_query, 137 | ( 138 | cd[0], 139 | cd[1], 140 | cd[2], 141 | cd[3], 142 | cd[4], 143 | cd[5], 144 | ), 145 | ) 146 | 147 | 148 | class DatabaseConnection: 149 | def __init__(self): 150 | # DO NOT HARDCODE !!! 151 | self.conn_url = ( 152 | "postgresql://customer_ms:password@customer_db:5432/customer" 153 | ) 154 | 155 | @contextmanager 156 | def managed_cursor(self, cursor_factory=None): 157 | self.conn = psycopg2.connect(self.conn_url) 158 | self.conn.autocommit = True 159 | self.curr = self.conn.cursor(cursor_factory=cursor_factory) 160 | try: 161 | yield self.curr 162 | finally: 163 | self.curr.close() 164 | self.conn.close() 165 | 166 | 167 | if __name__ == "__main__": 168 | itr = 1 169 | while True: 170 | generate_data(itr) 171 | time.sleep(30) 172 | itr += 1 173 | -------------------------------------------------------------------------------- /E-commerce/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | dagster_metadata_db: 5 | image: postgres:11 6 | container_name: dagster_metadata_db 7 | environment: 8 | POSTGRES_USER: "postgres_user" 9 | POSTGRES_PASSWORD: "postgres_password" 10 | POSTGRES_DB: "postgres_db" 11 | networks: 12 | - dagster_network 13 | 14 | dagster_code_runner: 15 | build: 16 | context: . 17 | dockerfile: ./container/user_code/Dockerfile 18 | container_name: dagster_code_runner 19 | image: dagster_code_runner_image 20 | restart: always 21 | environment: 22 | DAGSTER_POSTGRES_USER: "postgres_user" 23 | DAGSTER_POSTGRES_PASSWORD: "postgres_password" 24 | DAGSTER_POSTGRES_DB: "postgres_db" 25 | DAGSTER_CURRENT_IMAGE: "dagster_code_runner_image" 26 | WAREHOUSE_USER: sde 27 | WAREHOUSE_PASSWORD: password 28 | WAREHOUSE_DB: warehouse 29 | WAREHOUSE_HOST: warehouse_db 30 | WAREHOUSE_PORT: 5432 31 | CUSTOMER_DB_USER: customer_ms 32 | CUSTOMER_DB_PASSWORD: password 33 | CUSTOMER_DB_DB: customer 34 | CUSTOMER_DB_HOST: customer_db 35 | AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE 36 | AWS_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY 37 | AWS_REGION_NAME: us-east-1 38 | AWS_ENDPOINT_URL: http://cloud-store:9000 39 | networks: 40 | - dagster_network 41 | ports: 42 | - "8080:8080" 43 | depends_on: 44 | - risk_api 45 | - data_generator 46 | - cloud-store 47 | 48 | warehouse_db: 49 | image: postgres:13 50 | container_name: warehouse_db 51 | environment: 52 | POSTGRES_USER: sde 53 | POSTGRES_PASSWORD: password 54 | POSTGRES_DB: warehouse 55 | volumes: 56 | - ./warehouse_db_setup:/docker-entrypoint-initdb.d 57 | restart: always 58 | ports: 59 | - "5433:5432" 60 | networks: 61 | - dagster_network 62 | 63 | dagit_server: 64 | build: 65 | context: . 66 | dockerfile: ./container/dagster/Dockerfile 67 | entrypoint: 68 | - dagit 69 | - -h 70 | - "0.0.0.0" 71 | - -p 72 | - "3000" 73 | - -w 74 | - workspace.yaml 75 | container_name: dagit_server 76 | expose: 77 | - "3000" 78 | ports: 79 | - "3000:3000" 80 | environment: 81 | DAGSTER_POSTGRES_USER: "postgres_user" 82 | DAGSTER_POSTGRES_PASSWORD: "postgres_password" 83 | DAGSTER_POSTGRES_DB: "postgres_db" 84 | volumes: # Make docker client accessible so we can terminate containers from dagit 85 | - /var/run/docker.sock:/var/run/docker.sock 86 | networks: 87 | - dagster_network 88 | depends_on: 89 | - dagster_metadata_db 90 | - dagster_code_runner 91 | 92 | dagster_daemon: 93 | build: 94 | context: . 95 | dockerfile: ./container/dagster/Dockerfile 96 | entrypoint: 97 | - dagster-daemon 98 | - run 99 | container_name: dagster_daemon 100 | restart: on-failure 101 | environment: 102 | DAGSTER_POSTGRES_USER: "postgres_user" 103 | DAGSTER_POSTGRES_PASSWORD: "postgres_password" 104 | DAGSTER_POSTGRES_DB: "postgres_db" 105 | volumes: # Make docker client accessible so we can launch containers using host docker 106 | - /var/run/docker.sock:/var/run/docker.sock 107 | networks: 108 | - dagster_network 109 | depends_on: 110 | - dagster_metadata_db 111 | - dagster_code_runner 112 | 113 | cloud-store: 114 | image: quay.io/minio/minio 115 | container_name: cloud-store 116 | environment: 117 | MINIO_ROOT_USER: AKIAIOSFODNN7EXAMPLE 118 | MINIO_ROOT_PASSWORD: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY 119 | command: server /data --console-address ":9001" 120 | ports: 121 | - 9000:9000 122 | - 9001:9001 123 | networks: 124 | - dagster_network 125 | 126 | customer_db: 127 | image: postgres:13 128 | container_name: customer_db 129 | environment: 130 | POSTGRES_USER: customer_ms 131 | POSTGRES_PASSWORD: password 132 | POSTGRES_DB: customer 133 | volumes: 134 | - ./customer_db_setup:/docker-entrypoint-initdb.d 135 | restart: always 136 | ports: 137 | - "5432:5432" 138 | networks: 139 | - dagster_network 140 | 141 | data_generator: 142 | build: 143 | context: . 144 | dockerfile: ./container/datagenerator/Dockerfile 145 | entrypoint: 146 | - python 147 | - ./generate_fake_orders_customers.py 148 | container_name: data_generator 149 | restart: on-failure 150 | networks: 151 | - dagster_network 152 | depends_on: 153 | - customer_db 154 | - cloud-store 155 | 156 | risk_api: 157 | build: 158 | context: . 159 | dockerfile: ./container/risk_api/Dockerfile 160 | container_name: risk_api 161 | restart: on-failure 162 | ports: 163 | - "80:80" 164 | networks: 165 | - dagster_network 166 | 167 | dashboard: 168 | image: metabase/metabase 169 | container_name: dashboard 170 | volumes: 171 | - ./metabase-data:/metabase-data 172 | environment: 173 | MB_DB_FILE: /metabase-data/metabase.db 174 | ports: 175 | - "3001:3000" 176 | networks: 177 | - dagster_network 178 | 179 | formatter: 180 | image: formatter 181 | container_name: formatter 182 | build: 183 | context: . 184 | dockerfile: ./container/formatter/Dockerfile 185 | volumes: 186 | - ./:/code 187 | networks: 188 | - dagster_network 189 | depends_on: 190 | - risk_api 191 | 192 | networks: 193 | dagster_network: 194 | driver: bridge 195 | name: dagster_network -------------------------------------------------------------------------------- /E-commerce/app/transform/logs/dbt.log.legacy: -------------------------------------------------------------------------------- 1 | 2022-03-16 12:05:37.546585 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 2 | 2022-03-16 12:11:32.016200 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 3 | 2022-03-16 12:11:32.019677 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 4 | 2022-03-16 12:11:32.023323 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 5 | 2022-03-16 12:11:32.039199 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 6 | 2022-03-16 12:11:32.039707 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 7 | 2022-03-16 12:11:32.053675 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 8 | 2022-03-16 12:11:48.991242 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 9 | 2022-03-16 12:11:48.994050 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 10 | 2022-03-16 12:11:48.997295 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 11 | 2022-03-16 12:11:49.010826 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 12 | 2022-03-16 12:11:49.011293 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 13 | 2022-03-16 12:11:49.030919 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 14 | 2022-03-16 12:11:56.756097 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 15 | 2022-03-16 12:11:56.759050 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 16 | 2022-03-16 12:11:56.762417 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 17 | 2022-03-16 12:11:56.778229 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 18 | 2022-03-16 12:11:56.778722 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 19 | 2022-03-16 12:11:56.799912 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 20 | 2022-03-16 12:16:29.414031 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 21 | 2022-03-16 12:17:11.748055 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 22 | 2022-03-16 12:17:11.753401 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 23 | 2022-03-16 12:17:11.803993 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 24 | 2022-03-16 12:17:16.286175 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 25 | 2022-03-16 12:18:29.943352 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 26 | 2022-03-16 12:19:49.645929 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 27 | 2022-03-16 12:19:49.649083 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 28 | 2022-03-16 12:19:49.666608 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 29 | 2022-03-16 12:20:12.789445 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 30 | 2022-03-16 12:20:56.164960 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 31 | 2022-03-16 12:20:56.168633 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 32 | 2022-03-16 12:20:56.186299 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 33 | 2022-03-16 12:21:08.191614 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 34 | 2022-03-16 12:21:08.194804 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 35 | 2022-03-16 12:21:08.211813 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 36 | 2022-03-16 12:21:20.892625 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 37 | 2022-03-16 12:21:50.541317 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 38 | 2022-03-16 12:21:50.543872 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 39 | 2022-03-16 12:21:50.558236 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 40 | 2022-03-16 12:21:55.869978 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 41 | 2022-03-16 12:25:33.979295 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 42 | 2022-03-16 12:25:33.985228 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 43 | 2022-03-16 12:25:33.988100 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 44 | 2022-03-16 12:25:33.990503 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 45 | 2022-03-16 12:25:34.005130 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 46 | 2022-03-16 12:25:34.005620 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 47 | 2022-03-16 12:25:34.020417 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 48 | 2022-03-16 12:27:48.283442 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 49 | 2022-03-16 12:27:54.399548 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 50 | 2022-03-16 12:28:44.474110 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 51 | 2022-03-17 11:04:57.265243 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 52 | 2022-03-17 11:05:29.961214 (MainThread): 'soft_unicode' has been renamed to 'soft_str'. The old name will be removed in MarkupSafe 2.1. 53 | 2022-03-17 11:05:29.976992 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 54 | 2022-03-17 11:05:37.638734 (MainThread): write_gpickle is deprecated and will be removed in 3.0.Use ``pickle.dump(G, path, protocol)`` 55 | -------------------------------------------------------------------------------- /dum.txt: -------------------------------------------------------------------------------- 1 | /lib64/ld-linux-x86-64.so.2 2 | libm.so.6 3 | _ITM_deregisterTMCloneTable 4 | __gmon_start__ 5 | _Jv_RegisterClasses 6 | _ITM_registerTMCloneTable 7 | libclntsh.so.19.1 8 | _init 9 | _fini 10 | sqlca 11 | ceil 12 | sqlcxt 13 | libgcc_s.so.1 14 | libc.so.6 15 | fflush 16 | strcpy 17 | exit 18 | readdir 19 | sprintf 20 | fopen 21 | perror 22 | closedir 23 | strftime 24 | localtime_r 25 | feof 26 | fgets 27 | strlen 28 | memset 29 | fputs 30 | fclose 31 | malloc 32 | strcat 33 | remove 34 | opendir 35 | getenv 36 | system 37 | atol 38 | localtime 39 | fprintf 40 | strcmp 41 | __libc_start_main 42 | basename 43 | __xstat 44 | _edata 45 | __bss_start 46 | _end 47 | GLIBC_2.2.5 48 | %~u! 49 | %vu! 50 | %nu! 51 | %fu! 52 | %^u! 53 | %Vu! 54 | %Nu! 55 | %Fu! 56 | %>u! 57 | %6u! 58 | %.u! 59 | %&u! 60 | UH-P 61 | UH-P 62 | =10000 and CODE_NUM_N<=19999) order by PARAMETER_NAME_V 722 | getConfigParameters::Error in allocating memory 723 | CCBS_BATCH_PROCS_HOME 724 | getConfigParameters::CCBS_BATCH_PROCS_HOME is null 725 | conf/global.conf 726 | %s%s 727 | ORCL_CONNECT 728 | getConfigParameters::ORCL_CONNECT not found in the Configuration file 729 | PROCESS_LOGS_PATH 730 | getConfigParameters::PROCESS_LOGS_PATH not found in the Configuration file 731 | GSMRATING 732 | getConfigParameters::GSMRATING not found in the Configuration file 733 | PROCESS_LOGS 734 | getConfigParameters::PROCESS_LOGS not found in the Configuration file 735 | REJECTED_CDR_PROCESS_LOG_PREFIX 736 | getConfigParameters::REJECTED_CDR_PROCESS_LOG_PREFIX not found in the Configuration file 737 | l_processlogpath = [%s] 738 | l_processlog = [%s] 739 | %s%s%s 740 | Log file path with prefix -%s- 741 | Error while getting Configuration Parameters 742 | Logger path :%s 743 | /home/gsmrating/gsmrating/rating/gsm/source/reject/csourcefiles/gsmRejectStrt.c 744 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to connect to Oracle %d%s 745 | 1.6311 746 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| main: %s%s 747 | Error in loadCbConfigurationParams function 748 | Error in getControlParamaters function 749 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=1) and ROWNUM<=:b1) 750 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get records from GSM_ALL_REJECTED_CDRS %d%s 751 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of recs of GSM_ALL_REJECTED_CDRS %d%s 752 | %Y%m%d%H%M%S 753 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to open file %s%s 754 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| GSM reject CDRs file%s 755 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Declaring the cursor for GSM_ALL_REJECTED_CDRS %d%s 756 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Opening the cursor for GSM_ALL_REJECTED_CDRS %d%s 757 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to fetch GSM record %d%s 758 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Closing the cursor for GSM_ALL_REJECTED_CDRS %d%s 759 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Removing the file %s%s 760 | touch %s 761 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Success file :%s%s 762 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=2) and ROWNUM<=:b1) 763 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error while taking number of GSM_ALL_REJECTED_CDRS record %d%s 764 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of GPRS reject CDRs:%d%s 765 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to open file :%s%s 766 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| GPRS reject File name :%s%s 767 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to update status , GSM_ALL_REJECTED_CDRS :%d%s 768 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=3) and ROWNUM<=:b1) 769 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of MMS :%d%s 770 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of MMS reject CDRs:%d%s 771 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Filename :%s%s 772 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error while fetching the rejected records :%d%s 773 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Success file :%s%s 774 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=4) and ROWNUM<=:b1) 775 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of SMS :%d%s 776 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of SMS reject CDRs:%d%s 777 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=6) and ROWNUM<=:b1) 778 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of PRBT :%d%s 779 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of PRBT reject CDRs:%d%s 780 | rm %s 781 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=7) and ROWNUM<=:b1) 782 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of VMS reject CDRs:%d%s 783 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| filename :%s%s 784 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N in (8,9)) and ROWNUM<=:b1) 785 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of TAPIN :%d%s 786 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of TAPIN reject CDRs:%d%s 787 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N in (10,11)) and ROWNUM<=:b1) 788 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected NRTRDE CDRs of TAPIN :%d%s 789 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of NRTRDE TAPIN reject CDRs:%d%s 790 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| DError while fetching the rejected records :%d%s 791 | update GSM_ALL_REJECTED_CDRS set CORRECTED_STATUS_V='G' where ROWID=:b1 792 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in update status of GSM_ALL_REJECTED_CDRS %d%s 793 | select count(1) into :b0 from ISP_REJECTED_CDRS where (CORRECTED_STATUS_V='R' and ROWNUM<=:b1) 794 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of ISP :%d%s 795 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of ISP reject CDRs:%d%s 796 | filename :%s 797 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Declaring the cursor for ISP_REJECTED_CDRS %d%s 798 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Closing the cursor for ISP_REJECTED_CDRS %d%s 799 | update ISP_REJECTED_CDRS set CORRECTED_STATUS_V='G' where ROWID=:b0 800 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to update status , ISP_REJECTED_CDRS :%d%s 801 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: %s%s 802 | Loading Data from CB_CONFIGURATION_PARAMS ... 803 | select count(1) into :b0 from CB_CONFIGURATION_PARAMS where (CODE_NUM_N>=10000 and CODE_NUM_N<=19999) 804 | Memory Allocation Error for table CB_CONFIGURATION_PARAMS 805 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while declaring cursor for CB_CONFIGURATION_PARAMS : %d%s 806 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while opening cursor for CB_CONFIGURATION_PARAMS : %d%s 807 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while fetching cursor for CB_CONFIGURATION_PARAMS : %d%s 808 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while closing cursor for CB_CONFIGURATION_PARAMS : %d%s 809 | Error: No records in CB_CONFIGURATION_PARAMS 810 | End of Loading Data from CB_CONFIGURATION_PARAMS. 811 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| getControlParamaters: %s%s 812 | Start of Getting control params. 813 | MED_BASE_GSM_CDR_DIR_V 814 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| getControlParamaters: Parameter -%s- not found in CB_CONFIGURATION_PARAMS table%s 815 | MED_BASE_GPRS_CDR_DIR_V 816 | MED_BASE_MMS_CDR_DIR_V 817 | MED_BASE_SMS_CDR_DIR_V 818 | MED_BASE_STK_CDR_DIR_V 819 | MED_BASE_PRBT_CDR_DIR_V 820 | TAPIN_MAIN_CDR_DIR 821 | TAPIN_NRTRDE_MAIN_CDR_DIR 822 | MED_BASE_VMS_CDR_DIR_V 823 | GSM_REJECTED_FILE_PREFIX_V 824 | GSM_REJECTED_BILLED_ACCS_FILE_PREFIX_V 825 | GPRS_REJECTED_FILE_PREFIX_V 826 | MMS_REJECTED_FILE_PREFIX_V 827 | SMS_REJECTED_FILE_PREFIX_V 828 | STK_REJECTED_FILE_PREFIX_V 829 | PRBT_REJECTED_FILE_PREFIX_V 830 | ROAMING_GSM_REJECTED_FILE_PREFIX_V 831 | NR_ROAMING_GSM_REJECTED_FILE_PREFIX_V 832 | VMS_REJECTED_FILE_PREFIX_V 833 | PROCESS_DIR_V 834 | SUCCESS_DIR_V 835 | End of Getting control params. 836 | .%04d 837 | _%02d_%02d_%04d 838 | /home/gsmrating/gsmrating/rating/gsm/source/reject/sourcefiles/generalFunctions.pc 839 | /home/gsmrating/gsmrating/rating/gsm/source/reject/sourcefiles/gsmRejectStrt.pc 840 | GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-39) 841 | .symtab 842 | .strtab 843 | .shstrtab 844 | .interp 845 | .note.ABI-tag 846 | .note.gnu.build-id 847 | .gnu.hash 848 | .dynsym 849 | .dynstr 850 | .gnu.version 851 | .gnu.version_r 852 | .rela.dyn 853 | .rela.plt 854 | .init 855 | .text 856 | .fini 857 | .rodata 858 | .eh_frame_hdr 859 | .eh_frame 860 | .init_array 861 | .fini_array 862 | .jcr 863 | .dynamic 864 | .got 865 | .got.plt 866 | .data 867 | .bss 868 | .comment 869 | crtstuff.c 870 | __JCR_LIST__ 871 | deregister_tm_clones 872 | register_tm_clones 873 | __do_global_dtors_aux 874 | completed.6355 875 | __do_global_dtors_aux_fini_array_entry 876 | frame_dummy 877 | __frame_dummy_init_array_entry 878 | generalFunctions.c 879 | sqladt 880 | sqltds 881 | sqlfpn 882 | sqlctx 883 | sqlstm 884 | IAPSUCC 885 | IAPFAIL 886 | IAPFTL 887 | sqlcud0 888 | nw_time.5785 889 | pt_time.5784 890 | timer.5783 891 | tmp_str.5787 892 | pc_stime.5786 893 | nw_time.5792 894 | pt_time.5791 895 | timer.5790 896 | tmp_str.5794 897 | pc_stime.5793 898 | t.5964 899 | globalVariables.c 900 | gsmRejectStrt.c 901 | sq0003 902 | sq0006 903 | sq0009 904 | sq0012 905 | sq0015 906 | sq0018 907 | sq0021 908 | sq0024 909 | sq0028 910 | sq0033 911 | Logger.c 912 | __FRAME_END__ 913 | __JCR_END__ 914 | _DYNAMIC 915 | __init_array_end 916 | __init_array_start 917 | _GLOBAL_OFFSET_TABLE_ 918 | printf@@GLIBC_2.2.5 919 | ceil@@GLIBC_2.2.5 920 | sprintf@@GLIBC_2.2.5 921 | __stat 922 | _edata 923 | g_ptrAllCtrlParams 924 | trim 925 | getSystemDate 926 | data_start 927 | _IO_stdin_used 928 | checkLogFileDateBased 929 | strlen@@GLIBC_2.2.5 930 | main 931 | localtime_r@@GLIBC_2.2.5 932 | g_compFuncCbconfigurationparams 933 | memset@@GLIBC_2.2.5 934 | __dso_handle 935 | strBinarySearch 936 | startLogger 937 | readConfigurationFile 938 | g_traceLogFilePath 939 | doubleCompare 940 | _fini 941 | doNothing 942 | localtime@@GLIBC_2.2.5 943 | sub_str 944 | getControlParamaters 945 | loadCbConfigurationParams 946 | getNumFromConfFile 947 | strftime@@GLIBC_2.2.5 948 | roundOff 949 | perror@@GLIBC_2.2.5 950 | system@@GLIBC_2.2.5 951 | g_ptrCbConfigurationParams 952 | sqlcxt 953 | logger 954 | time@@GLIBC_2.2.5 955 | strcpy@@GLIBC_2.2.5 956 | _start 957 | fclose@@GLIBC_2.2.5 958 | __xstat@@GLIBC_2.2.5 959 | getStrFromConfFile 960 | getSystemDateTime 961 | _init 962 | openLogFile 963 | fputs@@GLIBC_2.2.5 964 | __TMC_END__ 965 | _Jv_RegisterClasses 966 | fflush@@GLIBC_2.2.5 967 | fopen@@GLIBC_2.2.5 968 | atol@@GLIBC_2.2.5 969 | exit@@GLIBC_2.2.5 970 | getenv@@GLIBC_2.2.5 971 | malloc@@GLIBC_2.2.5 972 | getConfigParameters 973 | replaceStr 974 | __data_start 975 | _end 976 | sqlca 977 | strcmp@@GLIBC_2.2.5 978 | fprintf@@GLIBC_2.2.5 979 | getDay 980 | basename@@GLIBC_2.2.5 981 | opendir@@GLIBC_2.2.5 982 | __bss_start 983 | readdir@@GLIBC_2.2.5 984 | feof@@GLIBC_2.2.5 985 | openFileOnDate 986 | __libc_csu_init 987 | fgets@@GLIBC_2.2.5 988 | numBinarySearch 989 | closedir@@GLIBC_2.2.5 990 | remvZeros 991 | doubleBinarySearch 992 | stat 993 | _ITM_deregisterTMCloneTable 994 | strcat@@GLIBC_2.2.5 995 | g_con_str 996 | remove@@GLIBC_2.2.5 997 | __libc_csu_fini 998 | to_ceil 999 | dirExists 1000 | __libc_start_main@@GLIBC_2.2.5 1001 | sortStringArray 1002 | __gmon_start__ 1003 | checkLogFile 1004 | _ITM_registerTMCloneTable 1005 | readDirectory 1006 | g_cbconfigurationparamscount 1007 | -------------------------------------------------------------------------------- /dummy.txt: -------------------------------------------------------------------------------- 1 | /lib64/ld-linux-x86-64.so.2 2 | libm.so.6 3 | _ITM_deregisterTMCloneTable 4 | __gmon_start__ 5 | _Jv_RegisterClasses 6 | _ITM_registerTMCloneTable 7 | libclntsh.so.19.1 8 | _init 9 | _fini 10 | sqlca 11 | ceil 12 | sqlcxt 13 | libgcc_s.so.1 14 | libc.so.6 15 | fflush 16 | strcpy 17 | exit 18 | readdir 19 | sprintf 20 | fopen 21 | perror 22 | closedir 23 | strftime 24 | localtime_r 25 | feof 26 | fgets 27 | strlen 28 | memset 29 | fputs 30 | fclose 31 | malloc 32 | strcat 33 | remove 34 | opendir 35 | getenv 36 | system 37 | atol 38 | localtime 39 | fprintf 40 | strcmp 41 | __libc_start_main 42 | basename 43 | __xstat 44 | _edata 45 | __bss_start 46 | _end 47 | GLIBC_2.2.5 48 | %~u! 49 | %vu! 50 | %nu! 51 | %fu! 52 | %^u! 53 | %Vu! 54 | %Nu! 55 | %Fu! 56 | %>u! 57 | %6u! 58 | %.u! 59 | %&u! 60 | UH-P 61 | UH-P 62 | =10000 and CODE_NUM_N<=19999) order by PARAMETER_NAME_V 722 | getConfigParameters::Error in allocating memory 723 | CCBS_BATCH_PROCS_HOME 724 | getConfigParameters::CCBS_BATCH_PROCS_HOME is null 725 | conf/global.conf 726 | %s%s 727 | ORCL_CONNECT 728 | getConfigParameters::ORCL_CONNECT not found in the Configuration file 729 | PROCESS_LOGS_PATH 730 | getConfigParameters::PROCESS_LOGS_PATH not found in the Configuration file 731 | GSMRATING 732 | getConfigParameters::GSMRATING not found in the Configuration file 733 | PROCESS_LOGS 734 | getConfigParameters::PROCESS_LOGS not found in the Configuration file 735 | REJECTED_CDR_PROCESS_LOG_PREFIX 736 | getConfigParameters::REJECTED_CDR_PROCESS_LOG_PREFIX not found in the Configuration file 737 | l_processlogpath = [%s] 738 | l_processlog = [%s] 739 | %s%s%s 740 | Log file path with prefix -%s- 741 | Error while getting Configuration Parameters 742 | Logger path :%s 743 | /home/gsmrating/gsmrating/rating/gsm/source/reject/csourcefiles/gsmRejectStrt.c 744 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to connect to Oracle %d%s 745 | 1.6311 746 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| main: %s%s 747 | Error in loadCbConfigurationParams function 748 | Error in getControlParamaters function 749 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=1) and ROWNUM<=:b1) 750 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get records from GSM_ALL_REJECTED_CDRS %d%s 751 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of recs of GSM_ALL_REJECTED_CDRS %d%s 752 | %Y%m%d%H%M%S 753 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to open file %s%s 754 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| GSM reject CDRs file%s 755 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Declaring the cursor for GSM_ALL_REJECTED_CDRS %d%s 756 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Opening the cursor for GSM_ALL_REJECTED_CDRS %d%s 757 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to fetch GSM record %d%s 758 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Closing the cursor for GSM_ALL_REJECTED_CDRS %d%s 759 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Removing the file %s%s 760 | touch %s 761 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Success file :%s%s 762 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=2) and ROWNUM<=:b1) 763 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error while taking number of GSM_ALL_REJECTED_CDRS record %d%s 764 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of GPRS reject CDRs:%d%s 765 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to open file :%s%s 766 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| GPRS reject File name :%s%s 767 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to update status , GSM_ALL_REJECTED_CDRS :%d%s 768 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=3) and ROWNUM<=:b1) 769 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of MMS :%d%s 770 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of MMS reject CDRs:%d%s 771 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Filename :%s%s 772 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error while fetching the rejected records :%d%s 773 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Success file :%s%s 774 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=4) and ROWNUM<=:b1) 775 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of SMS :%d%s 776 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of SMS reject CDRs:%d%s 777 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=6) and ROWNUM<=:b1) 778 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of PRBT :%d%s 779 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of PRBT reject CDRs:%d%s 780 | rm %s 781 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=7) and ROWNUM<=:b1) 782 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of VMS reject CDRs:%d%s 783 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| filename :%s%s 784 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N in (8,9)) and ROWNUM<=:b1) 785 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of TAPIN :%d%s 786 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of TAPIN reject CDRs:%d%s 787 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N in (10,11)) and ROWNUM<=:b1) 788 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected NRTRDE CDRs of TAPIN :%d%s 789 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of NRTRDE TAPIN reject CDRs:%d%s 790 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| DError while fetching the rejected records :%d%s 791 | update GSM_ALL_REJECTED_CDRS set CORRECTED_STATUS_V='G' where ROWID=:b1 792 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in update status of GSM_ALL_REJECTED_CDRS %d%s 793 | select count(1) into :b0 from ISP_REJECTED_CDRS where (CORRECTED_STATUS_V='R' and ROWNUM<=:b1) 794 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of ISP :%d%s 795 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of ISP reject CDRs:%d%s 796 | filename :%s 797 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Declaring the cursor for ISP_REJECTED_CDRS %d%s 798 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Closing the cursor for ISP_REJECTED_CDRS %d%s 799 | update ISP_REJECTED_CDRS set CORRECTED_STATUS_V='G' where ROWID=:b0 800 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to update status , ISP_REJECTED_CDRS :%d%s 801 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: %s%s 802 | Loading Data from CB_CONFIGURATION_PARAMS ... 803 | select count(1) into :b0 from CB_CONFIGURATION_PARAMS where (CODE_NUM_N>=10000 and CODE_NUM_N<=19999) 804 | Memory Allocation Error for table CB_CONFIGURATION_PARAMS 805 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while declaring cursor for CB_CONFIGURATION_PARAMS : %d%s 806 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while opening cursor for CB_CONFIGURATION_PARAMS : %d%s 807 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while fetching cursor for CB_CONFIGURATION_PARAMS : %d%s 808 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while closing cursor for CB_CONFIGURATION_PARAMS : %d%s 809 | Error: No records in CB_CONFIGURATION_PARAMS 810 | End of Loading Data from CB_CONFIGURATION_PARAMS. 811 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| getControlParamaters: %s%s 812 | Start of Getting control params. 813 | MED_BASE_GSM_CDR_DIR_V 814 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| getControlParamaters: Parameter -%s- not found in CB_CONFIGURATION_PARAMS table%s 815 | MED_BASE_GPRS_CDR_DIR_V 816 | MED_BASE_MMS_CDR_DIR_V 817 | MED_BASE_SMS_CDR_DIR_V 818 | MED_BASE_STK_CDR_DIR_V 819 | MED_BASE_PRBT_CDR_DIR_V 820 | TAPIN_MAIN_CDR_DIR 821 | TAPIN_NRTRDE_MAIN_CDR_DIR 822 | MED_BASE_VMS_CDR_DIR_V 823 | GSM_REJECTED_FILE_PREFIX_V 824 | GSM_REJECTED_BILLED_ACCS_FILE_PREFIX_V 825 | GPRS_REJECTED_FILE_PREFIX_V 826 | MMS_REJECTED_FILE_PREFIX_V 827 | SMS_REJECTED_FILE_PREFIX_V 828 | STK_REJECTED_FILE_PREFIX_V 829 | PRBT_REJECTED_FILE_PREFIX_V 830 | ROAMING_GSM_REJECTED_FILE_PREFIX_V 831 | NR_ROAMING_GSM_REJECTED_FILE_PREFIX_V 832 | VMS_REJECTED_FILE_PREFIX_V 833 | PROCESS_DIR_V 834 | SUCCESS_DIR_V 835 | End of Getting control params. 836 | .%04d 837 | _%02d_%02d_%04d 838 | /home/gsmrating/gsmrating/rating/gsm/source/reject/sourcefiles/generalFunctions.pc 839 | /home/gsmrating/gsmrating/rating/gsm/source/reject/sourcefiles/gsmRejectStrt.pc 840 | GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-39) 841 | .symtab 842 | .strtab 843 | .shstrtab 844 | .interp 845 | .note.ABI-tag 846 | .note.gnu.build-id 847 | .gnu.hash 848 | .dynsym 849 | .dynstr 850 | .gnu.version 851 | .gnu.version_r 852 | .rela.dyn 853 | .rela.plt 854 | .init 855 | .text 856 | .fini 857 | .rodata 858 | .eh_frame_hdr 859 | .eh_frame 860 | .init_array 861 | .fini_array 862 | .jcr 863 | .dynamic 864 | .got 865 | .got.plt 866 | .data 867 | .bss 868 | .comment 869 | crtstuff.c 870 | __JCR_LIST__ 871 | deregister_tm_clones 872 | register_tm_clones 873 | __do_global_dtors_aux 874 | completed.6355 875 | __do_global_dtors_aux_fini_array_entry 876 | frame_dummy 877 | __frame_dummy_init_array_entry 878 | generalFunctions.c 879 | sqladt 880 | sqltds 881 | sqlfpn 882 | sqlctx 883 | sqlstm 884 | IAPSUCC 885 | IAPFAIL 886 | IAPFTL 887 | sqlcud0 888 | nw_time.5785 889 | pt_time.5784 890 | timer.5783 891 | tmp_str.5787 892 | pc_stime.5786 893 | nw_time.5792 894 | pt_time.5791 895 | timer.5790 896 | tmp_str.5794 897 | pc_stime.5793 898 | t.5964 899 | globalVariables.c 900 | gsmRejectStrt.c 901 | sq0003 902 | sq0006 903 | sq0009 904 | sq0012 905 | sq0015 906 | sq0018 907 | sq0021 908 | sq0024 909 | sq0028 910 | sq0033 911 | Logger.c 912 | __FRAME_END__ 913 | __JCR_END__ 914 | _DYNAMIC 915 | __init_array_end 916 | __init_array_start 917 | _GLOBAL_OFFSET_TABLE_ 918 | printf@@GLIBC_2.2.5 919 | ceil@@GLIBC_2.2.5 920 | sprintf@@GLIBC_2.2.5 921 | __stat 922 | _edata 923 | g_ptrAllCtrlParams 924 | trim 925 | getSystemDate 926 | data_start 927 | _IO_stdin_used 928 | checkLogFileDateBased 929 | strlen@@GLIBC_2.2.5 930 | main 931 | localtime_r@@GLIBC_2.2.5 932 | g_compFuncCbconfigurationparams 933 | memset@@GLIBC_2.2.5 934 | __dso_handle 935 | strBinarySearch 936 | startLogger 937 | readConfigurationFile 938 | g_traceLogFilePath 939 | doubleCompare 940 | _fini 941 | doNothing 942 | localtime@@GLIBC_2.2.5 943 | sub_str 944 | getControlParamaters 945 | loadCbConfigurationParams 946 | getNumFromConfFile 947 | strftime@@GLIBC_2.2.5 948 | roundOff 949 | perror@@GLIBC_2.2.5 950 | system@@GLIBC_2.2.5 951 | g_ptrCbConfigurationParams 952 | sqlcxt 953 | logger 954 | time@@GLIBC_2.2.5 955 | strcpy@@GLIBC_2.2.5 956 | _start 957 | fclose@@GLIBC_2.2.5 958 | __xstat@@GLIBC_2.2.5 959 | getStrFromConfFile 960 | getSystemDateTime 961 | _init 962 | openLogFile 963 | fputs@@GLIBC_2.2.5 964 | __TMC_END__ 965 | _Jv_RegisterClasses 966 | fflush@@GLIBC_2.2.5 967 | fopen@@GLIBC_2.2.5 968 | atol@@GLIBC_2.2.5 969 | exit@@GLIBC_2.2.5 970 | getenv@@GLIBC_2.2.5 971 | malloc@@GLIBC_2.2.5 972 | getConfigParameters 973 | replaceStr 974 | __data_start 975 | _end 976 | sqlca 977 | strcmp@@GLIBC_2.2.5 978 | fprintf@@GLIBC_2.2.5 979 | getDay 980 | basename@@GLIBC_2.2.5 981 | opendir@@GLIBC_2.2.5 982 | __bss_start 983 | readdir@@GLIBC_2.2.5 984 | feof@@GLIBC_2.2.5 985 | openFileOnDate 986 | __libc_csu_init 987 | fgets@@GLIBC_2.2.5 988 | numBinarySearch 989 | closedir@@GLIBC_2.2.5 990 | remvZeros 991 | doubleBinarySearch 992 | stat 993 | _ITM_deregisterTMCloneTable 994 | strcat@@GLIBC_2.2.5 995 | g_con_str 996 | remove@@GLIBC_2.2.5 997 | __libc_csu_fini 998 | to_ceil 999 | dirExists 1000 | __libc_start_main@@GLIBC_2.2.5 1001 | sortStringArray 1002 | __gmon_start__ 1003 | checkLogFile 1004 | _ITM_registerTMCloneTable 1005 | readDirectory 1006 | g_cbconfigurationparamscount 1007 | -------------------------------------------------------------------------------- /sample.txt: -------------------------------------------------------------------------------- 1 | /lib64/ld-linux-x86-64.so.2 2 | libm.so.6 3 | _ITM_deregisterTMCloneTable 4 | __gmon_start__ 5 | _Jv_RegisterClasses 6 | _ITM_registerTMCloneTable 7 | libclntsh.so.19.1 8 | _init 9 | _fini 10 | sqlca 11 | ceil 12 | sqlcxt 13 | libgcc_s.so.1 14 | libc.so.6 15 | fflush 16 | strcpy 17 | exit 18 | readdir 19 | sprintf 20 | fopen 21 | perror 22 | closedir 23 | strftime 24 | localtime_r 25 | feof 26 | fgets 27 | strlen 28 | memset 29 | fputs 30 | fclose 31 | malloc 32 | strcat 33 | remove 34 | opendir 35 | getenv 36 | system 37 | atol 38 | localtime 39 | fprintf 40 | strcmp 41 | __libc_start_main 42 | basename 43 | __xstat 44 | _edata 45 | __bss_start 46 | _end 47 | GLIBC_2.2.5 48 | %~u! 49 | %vu! 50 | %nu! 51 | %fu! 52 | %^u! 53 | %Vu! 54 | %Nu! 55 | %Fu! 56 | %>u! 57 | %6u! 58 | %.u! 59 | %&u! 60 | UH-P 61 | UH-P 62 | =10000 and CODE_NUM_N<=19999) order by PARAMETER_NAME_V 722 | getConfigParameters::Error in allocating memory 723 | CCBS_BATCH_PROCS_HOME 724 | getConfigParameters::CCBS_BATCH_PROCS_HOME is null 725 | conf/global.conf 726 | %s%s 727 | ORCL_CONNECT 728 | getConfigParameters::ORCL_CONNECT not found in the Configuration file 729 | PROCESS_LOGS_PATH 730 | getConfigParameters::PROCESS_LOGS_PATH not found in the Configuration file 731 | GSMRATING 732 | getConfigParameters::GSMRATING not found in the Configuration file 733 | PROCESS_LOGS 734 | getConfigParameters::PROCESS_LOGS not found in the Configuration file 735 | REJECTED_CDR_PROCESS_LOG_PREFIX 736 | getConfigParameters::REJECTED_CDR_PROCESS_LOG_PREFIX not found in the Configuration file 737 | l_processlogpath = [%s] 738 | l_processlog = [%s] 739 | %s%s%s 740 | Log file path with prefix -%s- 741 | Error while getting Configuration Parameters 742 | Logger path :%s 743 | /home/gsmrating/gsmrating/rating/gsm/source/reject/csourcefiles/gsmRejectStrt.c 744 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to connect to Oracle %d%s 745 | 1.6311 746 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| main: %s%s 747 | Error in loadCbConfigurationParams function 748 | Error in getControlParamaters function 749 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=1) and ROWNUM<=:b1) 750 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get records from GSM_ALL_REJECTED_CDRS %d%s 751 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of recs of GSM_ALL_REJECTED_CDRS %d%s 752 | %Y%m%d%H%M%S 753 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to open file %s%s 754 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| GSM reject CDRs file%s 755 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Declaring the cursor for GSM_ALL_REJECTED_CDRS %d%s 756 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Opening the cursor for GSM_ALL_REJECTED_CDRS %d%s 757 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to fetch GSM record %d%s 758 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Closing the cursor for GSM_ALL_REJECTED_CDRS %d%s 759 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Removing the file %s%s 760 | touch %s 761 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Success file :%s%s 762 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=2) and ROWNUM<=:b1) 763 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error while taking number of GSM_ALL_REJECTED_CDRS record %d%s 764 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of GPRS reject CDRs:%d%s 765 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to open file :%s%s 766 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| GPRS reject File name :%s%s 767 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to update status , GSM_ALL_REJECTED_CDRS :%d%s 768 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=3) and ROWNUM<=:b1) 769 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of MMS :%d%s 770 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of MMS reject CDRs:%d%s 771 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Filename :%s%s 772 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error while fetching the rejected records :%d%s 773 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Success file :%s%s 774 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=4) and ROWNUM<=:b1) 775 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of SMS :%d%s 776 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of SMS reject CDRs:%d%s 777 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=6) and ROWNUM<=:b1) 778 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of PRBT :%d%s 779 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of PRBT reject CDRs:%d%s 780 | rm %s 781 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N=7) and ROWNUM<=:b1) 782 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of VMS reject CDRs:%d%s 783 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| filename :%s%s 784 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N in (8,9)) and ROWNUM<=:b1) 785 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of TAPIN :%d%s 786 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of TAPIN reject CDRs:%d%s 787 | select count(1) into :b0 from GSM_ALL_REJECTED_CDRS where ((((CORRECTED_STATUS_V='R' or (ERROR_CODE_N in (701,312) and CORRECTED_STATUS_V='N')) and REJECT_COUNT_N<99) and SERVICES_TYPE_N in (10,11)) and ROWNUM<=:b1) 788 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected NRTRDE CDRs of TAPIN :%d%s 789 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of NRTRDE TAPIN reject CDRs:%d%s 790 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| DError while fetching the rejected records :%d%s 791 | update GSM_ALL_REJECTED_CDRS set CORRECTED_STATUS_V='G' where ROWID=:b1 792 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in update status of GSM_ALL_REJECTED_CDRS %d%s 793 | select count(1) into :b0 from ISP_REJECTED_CDRS where (CORRECTED_STATUS_V='R' and ROWNUM<=:b1) 794 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to get Number of Rejected CDRs of ISP :%d%s 795 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Number of ISP reject CDRs:%d%s 796 | filename :%s 797 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Declaring the cursor for ISP_REJECTED_CDRS %d%s 798 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Error in Closing the cursor for ISP_REJECTED_CDRS %d%s 799 | update ISP_REJECTED_CDRS set CORRECTED_STATUS_V='G' where ROWID=:b0 800 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| Unable to update status , ISP_REJECTED_CDRS :%d%s 801 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: %s%s 802 | Loading Data from CB_CONFIGURATION_PARAMS ... 803 | select count(1) into :b0 from CB_CONFIGURATION_PARAMS where (CODE_NUM_N>=10000 and CODE_NUM_N<=19999) 804 | Memory Allocation Error for table CB_CONFIGURATION_PARAMS 805 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while declaring cursor for CB_CONFIGURATION_PARAMS : %d%s 806 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while opening cursor for CB_CONFIGURATION_PARAMS : %d%s 807 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while fetching cursor for CB_CONFIGURATION_PARAMS : %d%s 808 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| loadCbConfigurationParams: Error while closing cursor for CB_CONFIGURATION_PARAMS : %d%s 809 | Error: No records in CB_CONFIGURATION_PARAMS 810 | End of Loading Data from CB_CONFIGURATION_PARAMS. 811 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| getControlParamaters: %s%s 812 | Start of Getting control params. 813 | MED_BASE_GSM_CDR_DIR_V 814 | %-20s|%4d|%1d|%02d:%02d:%02d|%02d/%02d/%04d|%8s| getControlParamaters: Parameter -%s- not found in CB_CONFIGURATION_PARAMS table%s 815 | MED_BASE_GPRS_CDR_DIR_V 816 | MED_BASE_MMS_CDR_DIR_V 817 | MED_BASE_SMS_CDR_DIR_V 818 | MED_BASE_STK_CDR_DIR_V 819 | MED_BASE_PRBT_CDR_DIR_V 820 | TAPIN_MAIN_CDR_DIR 821 | TAPIN_NRTRDE_MAIN_CDR_DIR 822 | MED_BASE_VMS_CDR_DIR_V 823 | GSM_REJECTED_FILE_PREFIX_V 824 | GSM_REJECTED_BILLED_ACCS_FILE_PREFIX_V 825 | GPRS_REJECTED_FILE_PREFIX_V 826 | MMS_REJECTED_FILE_PREFIX_V 827 | SMS_REJECTED_FILE_PREFIX_V 828 | STK_REJECTED_FILE_PREFIX_V 829 | PRBT_REJECTED_FILE_PREFIX_V 830 | ROAMING_GSM_REJECTED_FILE_PREFIX_V 831 | NR_ROAMING_GSM_REJECTED_FILE_PREFIX_V 832 | VMS_REJECTED_FILE_PREFIX_V 833 | PROCESS_DIR_V 834 | SUCCESS_DIR_V 835 | End of Getting control params. 836 | .%04d 837 | _%02d_%02d_%04d 838 | /home/gsmrating/gsmrating/rating/gsm/source/reject/sourcefiles/generalFunctions.pc 839 | /home/gsmrating/gsmrating/rating/gsm/source/reject/sourcefiles/gsmRejectStrt.pc 840 | GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-39) 841 | .symtab 842 | .strtab 843 | .shstrtab 844 | .interp 845 | .note.ABI-tag 846 | .note.gnu.build-id 847 | .gnu.hash 848 | .dynsym 849 | .dynstr 850 | .gnu.version 851 | .gnu.version_r 852 | .rela.dyn 853 | .rela.plt 854 | .init 855 | .text 856 | .fini 857 | .rodata 858 | .eh_frame_hdr 859 | .eh_frame 860 | .init_array 861 | .fini_array 862 | .jcr 863 | .dynamic 864 | .got 865 | .got.plt 866 | .data 867 | .bss 868 | .comment 869 | crtstuff.c 870 | __JCR_LIST__ 871 | deregister_tm_clones 872 | register_tm_clones 873 | __do_global_dtors_aux 874 | completed.6355 875 | __do_global_dtors_aux_fini_array_entry 876 | frame_dummy 877 | __frame_dummy_init_array_entry 878 | generalFunctions.c 879 | sqladt 880 | sqltds 881 | sqlfpn 882 | sqlctx 883 | sqlstm 884 | IAPSUCC 885 | IAPFAIL 886 | IAPFTL 887 | sqlcud0 888 | nw_time.5785 889 | pt_time.5784 890 | timer.5783 891 | tmp_str.5787 892 | pc_stime.5786 893 | nw_time.5792 894 | pt_time.5791 895 | timer.5790 896 | tmp_str.5794 897 | pc_stime.5793 898 | t.5964 899 | globalVariables.c 900 | gsmRejectStrt.c 901 | sq0003 902 | sq0006 903 | sq0009 904 | sq0012 905 | sq0015 906 | sq0018 907 | sq0021 908 | sq0024 909 | sq0028 910 | sq0033 911 | Logger.c 912 | __FRAME_END__ 913 | __JCR_END__ 914 | _DYNAMIC 915 | __init_array_end 916 | __init_array_start 917 | _GLOBAL_OFFSET_TABLE_ 918 | printf@@GLIBC_2.2.5 919 | ceil@@GLIBC_2.2.5 920 | sprintf@@GLIBC_2.2.5 921 | __stat 922 | _edata 923 | g_ptrAllCtrlParams 924 | trim 925 | getSystemDate 926 | data_start 927 | _IO_stdin_used 928 | checkLogFileDateBased 929 | strlen@@GLIBC_2.2.5 930 | main 931 | localtime_r@@GLIBC_2.2.5 932 | g_compFuncCbconfigurationparams 933 | memset@@GLIBC_2.2.5 934 | __dso_handle 935 | strBinarySearch 936 | startLogger 937 | readConfigurationFile 938 | g_traceLogFilePath 939 | doubleCompare 940 | _fini 941 | doNothing 942 | localtime@@GLIBC_2.2.5 943 | sub_str 944 | getControlParamaters 945 | loadCbConfigurationParams 946 | getNumFromConfFile 947 | strftime@@GLIBC_2.2.5 948 | roundOff 949 | perror@@GLIBC_2.2.5 950 | system@@GLIBC_2.2.5 951 | g_ptrCbConfigurationParams 952 | sqlcxt 953 | logger 954 | time@@GLIBC_2.2.5 955 | strcpy@@GLIBC_2.2.5 956 | _start 957 | fclose@@GLIBC_2.2.5 958 | __xstat@@GLIBC_2.2.5 959 | getStrFromConfFile 960 | getSystemDateTime 961 | _init 962 | openLogFile 963 | fputs@@GLIBC_2.2.5 964 | __TMC_END__ 965 | _Jv_RegisterClasses 966 | fflush@@GLIBC_2.2.5 967 | fopen@@GLIBC_2.2.5 968 | atol@@GLIBC_2.2.5 969 | exit@@GLIBC_2.2.5 970 | getenv@@GLIBC_2.2.5 971 | malloc@@GLIBC_2.2.5 972 | getConfigParameters 973 | replaceStr 974 | __data_start 975 | _end 976 | sqlca 977 | strcmp@@GLIBC_2.2.5 978 | fprintf@@GLIBC_2.2.5 979 | getDay 980 | basename@@GLIBC_2.2.5 981 | opendir@@GLIBC_2.2.5 982 | __bss_start 983 | readdir@@GLIBC_2.2.5 984 | feof@@GLIBC_2.2.5 985 | openFileOnDate 986 | __libc_csu_init 987 | fgets@@GLIBC_2.2.5 988 | numBinarySearch 989 | closedir@@GLIBC_2.2.5 990 | remvZeros 991 | doubleBinarySearch 992 | stat 993 | _ITM_deregisterTMCloneTable 994 | strcat@@GLIBC_2.2.5 995 | g_con_str 996 | remove@@GLIBC_2.2.5 997 | __libc_csu_fini 998 | to_ceil 999 | dirExists 1000 | __libc_start_main@@GLIBC_2.2.5 1001 | sortStringArray 1002 | __gmon_start__ 1003 | checkLogFile 1004 | _ITM_registerTMCloneTable 1005 | readDirectory 1006 | g_cbconfigurationparamscount 1007 | -------------------------------------------------------------------------------- /E-commerce/metabase-data/metabase.db/metabase.db.trace.db: -------------------------------------------------------------------------------- 1 | 2022-03-17 12:32:23 jdbc[5]: exception 2 | org.h2.jdbc.JdbcSQLException: Table "DATABASECHANGELOGLOCK" not found; SQL statement: 3 | SELECT COUNT(*) FROM PUBLIC.DATABASECHANGELOGLOCK [42102-197] 4 | 2022-03-20 15:03:37 jdbc[15]: exception 5 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 6 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 7 | at org.h2.message.DbException.get(DbException.java:179) 8 | at org.h2.message.DbException.get(DbException.java:155) 9 | at org.h2.message.DbException.get(DbException.java:144) 10 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 11 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 12 | at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:302) 13 | at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:387) 14 | at clojure.java.jdbc$prepare_statement.invokeStatic(jdbc.clj:679) 15 | at clojure.java.jdbc$prepare_statement.invoke(jdbc.clj:626) 16 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1112) 17 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093) 18 | at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182) 19 | at clojure.java.jdbc$query.invoke(jdbc.clj:1144) 20 | at toucan.db$query.invokeStatic(db.clj:288) 21 | at toucan.db$query.doInvoke(db.clj:284) 22 | at clojure.lang.RestFn.invoke(RestFn.java:410) 23 | at toucan.db$simple_select.invokeStatic(db.clj:394) 24 | at toucan.db$simple_select.invoke(db.clj:383) 25 | at toucan.db$simple_select_one.invokeStatic(db.clj:420) 26 | at toucan.db$simple_select_one.invoke(db.clj:409) 27 | at toucan.db$select_one.invokeStatic(db.clj:627) 28 | at toucan.db$select_one.doInvoke(db.clj:620) 29 | at clojure.lang.RestFn.applyTo(RestFn.java:139) 30 | at clojure.core$apply.invokeStatic(core.clj:667) 31 | at clojure.core$apply.invoke(core.clj:660) 32 | at toucan.db$select_one_field.invokeStatic(db.clj:636) 33 | at toucan.db$select_one_field.doInvoke(db.clj:629) 34 | at clojure.lang.RestFn.invoke(RestFn.java:442) 35 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invokeStatic(cache.clj:96) 36 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invoke(cache.clj:77) 37 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invokeStatic(cache.clj:149) 38 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invoke(cache.clj:126) 39 | at metabase.models.setting$db_or_cache_value.invokeStatic(setting.clj:185) 40 | at metabase.models.setting$db_or_cache_value.invoke(setting.clj:179) 41 | at metabase.models.setting$get_string.invokeStatic(setting.clj:198) 42 | at metabase.models.setting$get_string.invoke(setting.clj:188) 43 | at clojure.lang.Var.invoke(Var.java:384) 44 | at metabase.util.i18n.impl$fn__14806$f__14807.invoke(impl.clj:169) 45 | at metabase.util.i18n.impl$site_locale_from_setting.invokeStatic(impl.clj:176) 46 | at metabase.util.i18n.impl$site_locale_from_setting.invoke(impl.clj:173) 47 | at metabase.util.i18n$site_locale.invokeStatic(i18n.clj:30) 48 | at metabase.util.i18n$site_locale.invoke(i18n.clj:27) 49 | at metabase.util.i18n$translate_site_locale.invokeStatic(i18n.clj:51) 50 | at metabase.util.i18n$translate_site_locale.doInvoke(i18n.clj:48) 51 | at clojure.lang.RestFn.invoke(RestFn.java:410) 52 | at clojure.lang.AFn.applyToHelper(AFn.java:154) 53 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 54 | at clojure.core$apply.invokeStatic(core.clj:667) 55 | at clojure.core$apply.invoke(core.clj:660) 56 | at metabase.util.i18n.SiteLocalizedString.toString(i18n.clj:74) 57 | at clojure.core$str.invokeStatic(core.clj:553) 58 | at clojure.core$str.invoke(core.clj:544) 59 | at metabase.core$destroy_BANG_.invokeStatic(core.clj:67) 60 | at metabase.core$destroy_BANG_.invoke(core.clj:64) 61 | at clojure.lang.AFn.run(AFn.java:22) 62 | at java.base/java.lang.Thread.run(Unknown Source) 63 | 2022-03-20 15:03:39 jdbc[15]: exception 64 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 65 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 66 | at org.h2.message.DbException.get(DbException.java:179) 67 | at org.h2.message.DbException.get(DbException.java:155) 68 | at org.h2.message.DbException.get(DbException.java:144) 69 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 70 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 71 | at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:476) 72 | at com.mchange.v2.c3p0.impl.C3P0ImplUtils.resetTxnState(C3P0ImplUtils.java:245) 73 | at com.mchange.v2.c3p0.impl.NewPooledConnection.reset(NewPooledConnection.java:461) 74 | at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:417) 75 | at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:87) 76 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111) 77 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093) 78 | at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182) 79 | at clojure.java.jdbc$query.invoke(jdbc.clj:1144) 80 | at toucan.db$query.invokeStatic(db.clj:288) 81 | at toucan.db$query.doInvoke(db.clj:284) 82 | at clojure.lang.RestFn.invoke(RestFn.java:410) 83 | at toucan.db$simple_select.invokeStatic(db.clj:394) 84 | at toucan.db$simple_select.invoke(db.clj:383) 85 | at toucan.db$simple_select_one.invokeStatic(db.clj:420) 86 | at toucan.db$simple_select_one.invoke(db.clj:409) 87 | at toucan.db$select_one.invokeStatic(db.clj:627) 88 | at toucan.db$select_one.doInvoke(db.clj:620) 89 | at clojure.lang.RestFn.applyTo(RestFn.java:139) 90 | at clojure.core$apply.invokeStatic(core.clj:667) 91 | at clojure.core$apply.invoke(core.clj:660) 92 | at toucan.db$select_one_field.invokeStatic(db.clj:636) 93 | at toucan.db$select_one_field.doInvoke(db.clj:629) 94 | at clojure.lang.RestFn.invoke(RestFn.java:442) 95 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invokeStatic(cache.clj:96) 96 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invoke(cache.clj:77) 97 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invokeStatic(cache.clj:149) 98 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invoke(cache.clj:126) 99 | at metabase.models.setting$db_or_cache_value.invokeStatic(setting.clj:185) 100 | at metabase.models.setting$db_or_cache_value.invoke(setting.clj:179) 101 | at metabase.models.setting$get_string.invokeStatic(setting.clj:198) 102 | at metabase.models.setting$get_string.invoke(setting.clj:188) 103 | at clojure.lang.Var.invoke(Var.java:384) 104 | at metabase.util.i18n.impl$fn__14806$f__14807.invoke(impl.clj:169) 105 | at metabase.util.i18n.impl$site_locale_from_setting.invokeStatic(impl.clj:176) 106 | at metabase.util.i18n.impl$site_locale_from_setting.invoke(impl.clj:173) 107 | at metabase.util.i18n$site_locale.invokeStatic(i18n.clj:30) 108 | at metabase.util.i18n$site_locale.invoke(i18n.clj:27) 109 | at metabase.util.i18n$translate_site_locale.invokeStatic(i18n.clj:51) 110 | at metabase.util.i18n$translate_site_locale.doInvoke(i18n.clj:48) 111 | at clojure.lang.RestFn.invoke(RestFn.java:410) 112 | at clojure.lang.AFn.applyToHelper(AFn.java:154) 113 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 114 | at clojure.core$apply.invokeStatic(core.clj:667) 115 | at clojure.core$apply.invoke(core.clj:660) 116 | at metabase.util.i18n.SiteLocalizedString.toString(i18n.clj:74) 117 | at clojure.core$str.invokeStatic(core.clj:553) 118 | at clojure.core$str.invoke(core.clj:544) 119 | at metabase.core$destroy_BANG_.invokeStatic(core.clj:67) 120 | at metabase.core$destroy_BANG_.invoke(core.clj:64) 121 | at clojure.lang.AFn.run(AFn.java:22) 122 | at java.base/java.lang.Thread.run(Unknown Source) 123 | 2022-03-20 15:03:40 jdbc[14]: exception 124 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 125 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 126 | at org.h2.message.DbException.get(DbException.java:179) 127 | at org.h2.message.DbException.get(DbException.java:155) 128 | at org.h2.message.DbException.get(DbException.java:144) 129 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 130 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 131 | at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:476) 132 | at com.mchange.v2.c3p0.impl.NewProxyConnection.getAutoCommit(NewProxyConnection.java:1226) 133 | at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.setAutoCommit(AttributeRestoringConnectionInvocationHandler.java:90) 134 | at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:66) 135 | at com.sun.proxy.$Proxy28.setAutoCommit(Unknown Source) 136 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:788) 137 | at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:71) 138 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.doCheckin(JobStoreSupport.java:3232) 139 | at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3857) 140 | at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:3894) 141 | 2022-03-20 15:03:40 jdbc[14]: exception 142 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 143 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 144 | at org.h2.message.DbException.get(DbException.java:179) 145 | at org.h2.message.DbException.get(DbException.java:155) 146 | at org.h2.message.DbException.get(DbException.java:144) 147 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 148 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 149 | at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:302) 150 | at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:387) 151 | at jdk.internal.reflect.GeneratedMethodAccessor282.invoke(Unknown Source) 152 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 153 | at java.base/java.lang.reflect.Method.invoke(Unknown Source) 154 | at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:73) 155 | at com.sun.proxy.$Proxy28.prepareStatement(Unknown Source) 156 | at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectSchedulerStateRecords(StdJDBCDelegate.java:2947) 157 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.findFailedInstances(JobStoreSupport.java:3294) 158 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.clusterCheckIn(JobStoreSupport.java:3380) 159 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.doCheckin(JobStoreSupport.java:3240) 160 | at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3857) 161 | at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:3894) 162 | 2022-03-20 15:03:40 jdbc[14]: exception 163 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 164 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 165 | at org.h2.message.DbException.get(DbException.java:179) 166 | at org.h2.message.DbException.get(DbException.java:155) 167 | at org.h2.message.DbException.get(DbException.java:144) 168 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 169 | at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) 170 | at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) 171 | at com.mchange.v2.c3p0.impl.NewProxyConnection.rollback(NewProxyConnection.java:1033) 172 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 173 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 174 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 175 | at java.base/java.lang.reflect.Method.invoke(Unknown Source) 176 | at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:73) 177 | at com.sun.proxy.$Proxy28.rollback(Unknown Source) 178 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.rollbackConnection(JobStoreSupport.java:3639) 179 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.doCheckin(JobStoreSupport.java:3264) 180 | at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3857) 181 | at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:3894) 182 | 2022-03-20 15:03:40 jdbc[14]: exception 183 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 184 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 185 | at org.h2.message.DbException.get(DbException.java:179) 186 | at org.h2.message.DbException.get(DbException.java:155) 187 | at org.h2.message.DbException.get(DbException.java:144) 188 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 189 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 190 | at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:476) 191 | at com.mchange.v2.c3p0.impl.C3P0ImplUtils.resetTxnState(C3P0ImplUtils.java:245) 192 | at com.mchange.v2.c3p0.impl.NewPooledConnection.reset(NewPooledConnection.java:461) 193 | at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:417) 194 | at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:87) 195 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.closeConnection(JobStoreSupport.java:3614) 196 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanupConnection(JobStoreSupport.java:3590) 197 | at org.quartz.impl.jdbcjobstore.JobStoreSupport.doCheckin(JobStoreSupport.java:3273) 198 | at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3857) 199 | at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:3894) 200 | 2022-03-22 13:05:01 jdbc[8]: exception 201 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 202 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 203 | at org.h2.message.DbException.get(DbException.java:179) 204 | at org.h2.message.DbException.get(DbException.java:155) 205 | at org.h2.message.DbException.get(DbException.java:144) 206 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 207 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 208 | at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:302) 209 | at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:387) 210 | at clojure.java.jdbc$prepare_statement.invokeStatic(jdbc.clj:679) 211 | at clojure.java.jdbc$prepare_statement.invoke(jdbc.clj:626) 212 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1112) 213 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093) 214 | at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182) 215 | at clojure.java.jdbc$query.invoke(jdbc.clj:1144) 216 | at toucan.db$query.invokeStatic(db.clj:288) 217 | at toucan.db$query.doInvoke(db.clj:284) 218 | at clojure.lang.RestFn.invoke(RestFn.java:410) 219 | at toucan.db$simple_select.invokeStatic(db.clj:394) 220 | at toucan.db$simple_select.invoke(db.clj:383) 221 | at toucan.db$simple_select_one.invokeStatic(db.clj:420) 222 | at toucan.db$simple_select_one.invoke(db.clj:409) 223 | at toucan.db$select_one.invokeStatic(db.clj:627) 224 | at toucan.db$select_one.doInvoke(db.clj:620) 225 | at clojure.lang.RestFn.applyTo(RestFn.java:139) 226 | at clojure.core$apply.invokeStatic(core.clj:667) 227 | at clojure.core$apply.invoke(core.clj:660) 228 | at toucan.db$select_one_field.invokeStatic(db.clj:636) 229 | at toucan.db$select_one_field.doInvoke(db.clj:629) 230 | at clojure.lang.RestFn.invoke(RestFn.java:442) 231 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invokeStatic(cache.clj:96) 232 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invoke(cache.clj:77) 233 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invokeStatic(cache.clj:149) 234 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invoke(cache.clj:126) 235 | at metabase.models.setting$db_or_cache_value.invokeStatic(setting.clj:185) 236 | at metabase.models.setting$db_or_cache_value.invoke(setting.clj:179) 237 | at metabase.models.setting$get_string.invokeStatic(setting.clj:198) 238 | at metabase.models.setting$get_string.invoke(setting.clj:188) 239 | at clojure.lang.Var.invoke(Var.java:384) 240 | at metabase.util.i18n.impl$fn__14806$f__14807.invoke(impl.clj:169) 241 | at metabase.util.i18n.impl$site_locale_from_setting.invokeStatic(impl.clj:176) 242 | at metabase.util.i18n.impl$site_locale_from_setting.invoke(impl.clj:173) 243 | at metabase.util.i18n$site_locale.invokeStatic(i18n.clj:30) 244 | at metabase.util.i18n$site_locale.invoke(i18n.clj:27) 245 | at metabase.util.i18n$translate_site_locale.invokeStatic(i18n.clj:51) 246 | at metabase.util.i18n$translate_site_locale.doInvoke(i18n.clj:48) 247 | at clojure.lang.RestFn.invoke(RestFn.java:410) 248 | at clojure.lang.AFn.applyToHelper(AFn.java:154) 249 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 250 | at clojure.core$apply.invokeStatic(core.clj:667) 251 | at clojure.core$apply.invoke(core.clj:660) 252 | at metabase.util.i18n.SiteLocalizedString.toString(i18n.clj:74) 253 | at clojure.core$str.invokeStatic(core.clj:553) 254 | at clojure.core$str.invoke(core.clj:544) 255 | at metabase.core$destroy_BANG_.invokeStatic(core.clj:67) 256 | at metabase.core$destroy_BANG_.invoke(core.clj:64) 257 | at clojure.lang.AFn.run(AFn.java:22) 258 | at java.base/java.lang.Thread.run(Unknown Source) 259 | 2022-03-22 13:05:01 jdbc[8]: exception 260 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 261 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 262 | at org.h2.message.DbException.get(DbException.java:179) 263 | at org.h2.message.DbException.get(DbException.java:155) 264 | at org.h2.message.DbException.get(DbException.java:144) 265 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 266 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 267 | at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:476) 268 | at com.mchange.v2.c3p0.impl.C3P0ImplUtils.resetTxnState(C3P0ImplUtils.java:245) 269 | at com.mchange.v2.c3p0.impl.NewPooledConnection.reset(NewPooledConnection.java:461) 270 | at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:417) 271 | at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:87) 272 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111) 273 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093) 274 | at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182) 275 | at clojure.java.jdbc$query.invoke(jdbc.clj:1144) 276 | at toucan.db$query.invokeStatic(db.clj:288) 277 | at toucan.db$query.doInvoke(db.clj:284) 278 | at clojure.lang.RestFn.invoke(RestFn.java:410) 279 | at toucan.db$simple_select.invokeStatic(db.clj:394) 280 | at toucan.db$simple_select.invoke(db.clj:383) 281 | at toucan.db$simple_select_one.invokeStatic(db.clj:420) 282 | at toucan.db$simple_select_one.invoke(db.clj:409) 283 | at toucan.db$select_one.invokeStatic(db.clj:627) 284 | at toucan.db$select_one.doInvoke(db.clj:620) 285 | at clojure.lang.RestFn.applyTo(RestFn.java:139) 286 | at clojure.core$apply.invokeStatic(core.clj:667) 287 | at clojure.core$apply.invoke(core.clj:660) 288 | at toucan.db$select_one_field.invokeStatic(db.clj:636) 289 | at toucan.db$select_one_field.doInvoke(db.clj:629) 290 | at clojure.lang.RestFn.invoke(RestFn.java:442) 291 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invokeStatic(cache.clj:96) 292 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invoke(cache.clj:77) 293 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invokeStatic(cache.clj:149) 294 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invoke(cache.clj:126) 295 | at metabase.models.setting$db_or_cache_value.invokeStatic(setting.clj:185) 296 | at metabase.models.setting$db_or_cache_value.invoke(setting.clj:179) 297 | at metabase.models.setting$get_string.invokeStatic(setting.clj:198) 298 | at metabase.models.setting$get_string.invoke(setting.clj:188) 299 | at clojure.lang.Var.invoke(Var.java:384) 300 | at metabase.util.i18n.impl$fn__14806$f__14807.invoke(impl.clj:169) 301 | at metabase.util.i18n.impl$site_locale_from_setting.invokeStatic(impl.clj:176) 302 | at metabase.util.i18n.impl$site_locale_from_setting.invoke(impl.clj:173) 303 | at metabase.util.i18n$site_locale.invokeStatic(i18n.clj:30) 304 | at metabase.util.i18n$site_locale.invoke(i18n.clj:27) 305 | at metabase.util.i18n$translate_site_locale.invokeStatic(i18n.clj:51) 306 | at metabase.util.i18n$translate_site_locale.doInvoke(i18n.clj:48) 307 | at clojure.lang.RestFn.invoke(RestFn.java:410) 308 | at clojure.lang.AFn.applyToHelper(AFn.java:154) 309 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 310 | at clojure.core$apply.invokeStatic(core.clj:667) 311 | at clojure.core$apply.invoke(core.clj:660) 312 | at metabase.util.i18n.SiteLocalizedString.toString(i18n.clj:74) 313 | at clojure.core$str.invokeStatic(core.clj:553) 314 | at clojure.core$str.invoke(core.clj:544) 315 | at metabase.core$destroy_BANG_.invokeStatic(core.clj:67) 316 | at metabase.core$destroy_BANG_.invoke(core.clj:64) 317 | at clojure.lang.AFn.run(AFn.java:22) 318 | at java.base/java.lang.Thread.run(Unknown Source) 319 | 2022-06-01 23:37:33 jdbc[6]: exception 320 | org.h2.jdbc.JdbcSQLException: Column "T.SETTINGS" not found; SQL statement: 321 | select t."SETTINGS" from "PUBLIC"."METABASE_DATABASE" t where 0=1 [42122-197] 322 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 323 | at org.h2.message.DbException.get(DbException.java:179) 324 | at org.h2.message.DbException.get(DbException.java:155) 325 | at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:150) 326 | at org.h2.command.dml.Select.prepare(Select.java:858) 327 | at org.h2.command.Parser.prepareCommand(Parser.java:283) 328 | at org.h2.engine.Session.prepareLocal(Session.java:611) 329 | at org.h2.engine.Session.prepareCommand(Session.java:549) 330 | at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247) 331 | at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78) 332 | at com.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.java:327) 333 | at liquibase.precondition.core.ColumnExistsPrecondition.checkFast(ColumnExistsPrecondition.java:163) 334 | at liquibase.precondition.core.ColumnExistsPrecondition.check(ColumnExistsPrecondition.java:81) 335 | at liquibase.precondition.core.NotPrecondition.check(NotPrecondition.java:40) 336 | at liquibase.precondition.core.AndPrecondition.check(AndPrecondition.java:45) 337 | at liquibase.precondition.core.PreconditionContainer.check(PreconditionContainer.java:213) 338 | at liquibase.changelog.ChangeSet.execute(ChangeSet.java:577) 339 | at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:56) 340 | at liquibase.changelog.ChangeLogIterator$2.lambda$null$0(ChangeLogIterator.java:113) 341 | at liquibase.Scope.lambda$child$0(Scope.java:180) 342 | at liquibase.Scope.child(Scope.java:189) 343 | at liquibase.Scope.child(Scope.java:179) 344 | at liquibase.Scope.child(Scope.java:158) 345 | at liquibase.changelog.ChangeLogIterator$2.lambda$run$1(ChangeLogIterator.java:112) 346 | at liquibase.Scope.lambda$child$0(Scope.java:180) 347 | at liquibase.Scope.child(Scope.java:189) 348 | at liquibase.Scope.child(Scope.java:179) 349 | at liquibase.Scope.child(Scope.java:158) 350 | at liquibase.Scope.child(Scope.java:243) 351 | at liquibase.changelog.ChangeLogIterator$2.run(ChangeLogIterator.java:93) 352 | at liquibase.Scope.lambda$child$0(Scope.java:180) 353 | at liquibase.Scope.child(Scope.java:189) 354 | at liquibase.Scope.child(Scope.java:179) 355 | at liquibase.Scope.child(Scope.java:158) 356 | at liquibase.Scope.child(Scope.java:243) 357 | at liquibase.Scope.child(Scope.java:247) 358 | at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:65) 359 | at liquibase.Liquibase.lambda$null$0(Liquibase.java:265) 360 | at liquibase.Scope.lambda$child$0(Scope.java:180) 361 | at liquibase.Scope.child(Scope.java:189) 362 | at liquibase.Scope.child(Scope.java:179) 363 | at liquibase.Scope.child(Scope.java:158) 364 | at liquibase.Scope.child(Scope.java:243) 365 | at liquibase.Liquibase.lambda$update$1(Liquibase.java:264) 366 | at liquibase.Scope.lambda$child$0(Scope.java:180) 367 | at liquibase.Scope.child(Scope.java:189) 368 | at liquibase.Scope.child(Scope.java:179) 369 | at liquibase.Scope.child(Scope.java:158) 370 | at liquibase.Liquibase.runInScope(Liquibase.java:2405) 371 | at liquibase.Liquibase.update(Liquibase.java:211) 372 | at liquibase.Liquibase.update(Liquibase.java:197) 373 | at liquibase.Liquibase.update(Liquibase.java:193) 374 | at metabase.db.liquibase$migrate_up_if_needed_BANG_.invokeStatic(liquibase.clj:142) 375 | at metabase.db.liquibase$migrate_up_if_needed_BANG_.invoke(liquibase.clj:130) 376 | at metabase.db.setup$fn__34832$migrate_BANG___34837$fn__34838$fn__34839.invoke(setup.clj:68) 377 | at metabase.db.liquibase$fn__30491$do_with_liquibase__30496$fn__30497.invoke(liquibase.clj:59) 378 | at metabase.db.liquibase$fn__30491$do_with_liquibase__30496.invoke(liquibase.clj:51) 379 | at metabase.db.setup$fn__34832$migrate_BANG___34837$fn__34838.invoke(setup.clj:63) 380 | at metabase.db.setup$fn__34832$migrate_BANG___34837.invoke(setup.clj:40) 381 | at metabase.db.setup$fn__34891$run_schema_migrations_BANG___34896$fn__34897.invoke(setup.clj:121) 382 | at metabase.db.setup$fn__34891$run_schema_migrations_BANG___34896.invoke(setup.clj:115) 383 | at metabase.db.setup$fn__34943$setup_db_BANG___34948$fn__34949$fn__34952$fn__34953.invoke(setup.clj:147) 384 | at metabase.util$do_with_us_locale.invokeStatic(util.clj:715) 385 | at metabase.util$do_with_us_locale.invoke(util.clj:701) 386 | at metabase.db.setup$fn__34943$setup_db_BANG___34948$fn__34949$fn__34952.invoke(setup.clj:145) 387 | at metabase.db.setup$fn__34943$setup_db_BANG___34948$fn__34949.invoke(setup.clj:144) 388 | at metabase.db.setup$fn__34943$setup_db_BANG___34948.invoke(setup.clj:138) 389 | at metabase.db$setup_db_BANG_$fn__34978.invoke(db.clj:65) 390 | at metabase.db$setup_db_BANG_.invokeStatic(db.clj:60) 391 | at metabase.db$setup_db_BANG_.invoke(db.clj:51) 392 | at metabase.core$init_BANG__STAR_.invokeStatic(core.clj:98) 393 | at metabase.core$init_BANG__STAR_.invoke(core.clj:81) 394 | at metabase.core$init_BANG_.invokeStatic(core.clj:138) 395 | at metabase.core$init_BANG_.invoke(core.clj:133) 396 | at metabase.core$start_normally.invokeStatic(core.clj:150) 397 | at metabase.core$start_normally.invoke(core.clj:144) 398 | at metabase.core$_main.invokeStatic(core.clj:183) 399 | at metabase.core$_main.doInvoke(core.clj:177) 400 | at clojure.lang.RestFn.invoke(RestFn.java:397) 401 | at clojure.lang.AFn.applyToHelper(AFn.java:152) 402 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 403 | at metabase.core.main(Unknown Source) 404 | 2022-06-01 23:45:51 jdbc[3]: exception 405 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 406 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 407 | at org.h2.message.DbException.get(DbException.java:179) 408 | at org.h2.message.DbException.get(DbException.java:155) 409 | at org.h2.message.DbException.get(DbException.java:144) 410 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 411 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 412 | at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:302) 413 | at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:567) 414 | at clojure.java.jdbc$prepare_statement.invokeStatic(jdbc.clj:679) 415 | at clojure.java.jdbc$prepare_statement.invoke(jdbc.clj:626) 416 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1112) 417 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093) 418 | at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182) 419 | at clojure.java.jdbc$query.invoke(jdbc.clj:1144) 420 | at toucan.db$query.invokeStatic(db.clj:288) 421 | at toucan.db$query.doInvoke(db.clj:284) 422 | at clojure.lang.RestFn.invoke(RestFn.java:410) 423 | at toucan.db$simple_select.invokeStatic(db.clj:394) 424 | at toucan.db$simple_select.invoke(db.clj:383) 425 | at toucan.db$simple_select_one.invokeStatic(db.clj:420) 426 | at toucan.db$simple_select_one.invoke(db.clj:409) 427 | at toucan.db$select_one.invokeStatic(db.clj:650) 428 | at toucan.db$select_one.doInvoke(db.clj:644) 429 | at clojure.lang.RestFn.applyTo(RestFn.java:139) 430 | at clojure.core$apply.invokeStatic(core.clj:669) 431 | at clojure.core$apply.invoke(core.clj:662) 432 | at toucan.db$select_one_field.invokeStatic(db.clj:662) 433 | at toucan.db$select_one_field.doInvoke(db.clj:655) 434 | at clojure.lang.RestFn.invoke(RestFn.java:442) 435 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invokeStatic(cache.clj:111) 436 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invoke(cache.clj:92) 437 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invokeStatic(cache.clj:164) 438 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invoke(cache.clj:141) 439 | at metabase.models.setting$db_or_cache_value.invokeStatic(setting.clj:391) 440 | at metabase.models.setting$db_or_cache_value.invoke(setting.clj:383) 441 | at metabase.models.setting$get_raw_value.invokeStatic(setting.clj:428) 442 | at metabase.models.setting$get_raw_value.invoke(setting.clj:402) 443 | at metabase.models.setting$get_raw_value.invokeStatic(setting.clj:442) 444 | at metabase.models.setting$get_raw_value.invoke(setting.clj:402) 445 | at metabase.models.setting$fn__30113.invokeStatic(setting.clj:461) 446 | at metabase.models.setting$fn__30113.invoke(setting.clj:459) 447 | at clojure.lang.MultiFn.invoke(MultiFn.java:234) 448 | at clojure.lang.Var.invoke(Var.java:388) 449 | at metabase.util.i18n.impl$fn__1646$f__1647.invoke(impl.clj:188) 450 | at metabase.util.i18n.impl$site_locale_from_setting.invokeStatic(impl.clj:199) 451 | at metabase.util.i18n.impl$site_locale_from_setting.invoke(impl.clj:192) 452 | at metabase.util.i18n$site_locale_string.invokeStatic(i18n.clj:37) 453 | at metabase.util.i18n$site_locale_string.invoke(i18n.clj:32) 454 | at metabase.util.i18n$site_locale.invokeStatic(i18n.clj:50) 455 | at metabase.util.i18n$site_locale.invoke(i18n.clj:47) 456 | at metabase.util.i18n$translate_site_locale.invokeStatic(i18n.clj:69) 457 | at metabase.util.i18n$translate_site_locale.doInvoke(i18n.clj:66) 458 | at clojure.lang.RestFn.invoke(RestFn.java:410) 459 | at clojure.lang.AFn.applyToHelper(AFn.java:154) 460 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 461 | at clojure.core$apply.invokeStatic(core.clj:669) 462 | at clojure.core$apply.invoke(core.clj:662) 463 | at metabase.util.i18n.SiteLocalizedString.toString(i18n.clj:94) 464 | at clojure.core$str.invokeStatic(core.clj:555) 465 | at clojure.core$str.invoke(core.clj:546) 466 | at metabase.core$destroy_BANG_.invokeStatic(core.clj:74) 467 | at metabase.core$destroy_BANG_.invoke(core.clj:71) 468 | at clojure.lang.AFn.run(AFn.java:22) 469 | at java.base/java.lang.Thread.run(Unknown Source) 470 | 2022-06-01 23:45:51 jdbc[3]: exception 471 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 472 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 473 | at org.h2.message.DbException.get(DbException.java:179) 474 | at org.h2.message.DbException.get(DbException.java:155) 475 | at org.h2.message.DbException.get(DbException.java:144) 476 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 477 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 478 | at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:476) 479 | at com.mchange.v2.c3p0.impl.C3P0ImplUtils.resetTxnState(C3P0ImplUtils.java:245) 480 | at com.mchange.v2.c3p0.impl.NewPooledConnection.reset(NewPooledConnection.java:461) 481 | at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:417) 482 | at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:87) 483 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111) 484 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093) 485 | at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182) 486 | at clojure.java.jdbc$query.invoke(jdbc.clj:1144) 487 | at toucan.db$query.invokeStatic(db.clj:288) 488 | at toucan.db$query.doInvoke(db.clj:284) 489 | at clojure.lang.RestFn.invoke(RestFn.java:410) 490 | at toucan.db$simple_select.invokeStatic(db.clj:394) 491 | at toucan.db$simple_select.invoke(db.clj:383) 492 | at toucan.db$simple_select_one.invokeStatic(db.clj:420) 493 | at toucan.db$simple_select_one.invoke(db.clj:409) 494 | at toucan.db$select_one.invokeStatic(db.clj:650) 495 | at toucan.db$select_one.doInvoke(db.clj:644) 496 | at clojure.lang.RestFn.applyTo(RestFn.java:139) 497 | at clojure.core$apply.invokeStatic(core.clj:669) 498 | at clojure.core$apply.invoke(core.clj:662) 499 | at toucan.db$select_one_field.invokeStatic(db.clj:662) 500 | at toucan.db$select_one_field.doInvoke(db.clj:655) 501 | at clojure.lang.RestFn.invoke(RestFn.java:442) 502 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invokeStatic(cache.clj:111) 503 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invoke(cache.clj:92) 504 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invokeStatic(cache.clj:164) 505 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invoke(cache.clj:141) 506 | at metabase.models.setting$db_or_cache_value.invokeStatic(setting.clj:391) 507 | at metabase.models.setting$db_or_cache_value.invoke(setting.clj:383) 508 | at metabase.models.setting$get_raw_value.invokeStatic(setting.clj:428) 509 | at metabase.models.setting$get_raw_value.invoke(setting.clj:402) 510 | at metabase.models.setting$get_raw_value.invokeStatic(setting.clj:442) 511 | at metabase.models.setting$get_raw_value.invoke(setting.clj:402) 512 | at metabase.models.setting$fn__30113.invokeStatic(setting.clj:461) 513 | at metabase.models.setting$fn__30113.invoke(setting.clj:459) 514 | at clojure.lang.MultiFn.invoke(MultiFn.java:234) 515 | at clojure.lang.Var.invoke(Var.java:388) 516 | at metabase.util.i18n.impl$fn__1646$f__1647.invoke(impl.clj:188) 517 | at metabase.util.i18n.impl$site_locale_from_setting.invokeStatic(impl.clj:199) 518 | at metabase.util.i18n.impl$site_locale_from_setting.invoke(impl.clj:192) 519 | at metabase.util.i18n$site_locale_string.invokeStatic(i18n.clj:37) 520 | at metabase.util.i18n$site_locale_string.invoke(i18n.clj:32) 521 | at metabase.util.i18n$site_locale.invokeStatic(i18n.clj:50) 522 | at metabase.util.i18n$site_locale.invoke(i18n.clj:47) 523 | at metabase.util.i18n$translate_site_locale.invokeStatic(i18n.clj:69) 524 | at metabase.util.i18n$translate_site_locale.doInvoke(i18n.clj:66) 525 | at clojure.lang.RestFn.invoke(RestFn.java:410) 526 | at clojure.lang.AFn.applyToHelper(AFn.java:154) 527 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 528 | at clojure.core$apply.invokeStatic(core.clj:669) 529 | at clojure.core$apply.invoke(core.clj:662) 530 | at metabase.util.i18n.SiteLocalizedString.toString(i18n.clj:94) 531 | at clojure.core$str.invokeStatic(core.clj:555) 532 | at clojure.core$str.invoke(core.clj:546) 533 | at metabase.core$destroy_BANG_.invokeStatic(core.clj:74) 534 | at metabase.core$destroy_BANG_.invoke(core.clj:71) 535 | at clojure.lang.AFn.run(AFn.java:22) 536 | at java.base/java.lang.Thread.run(Unknown Source) 537 | 2022-06-01 23:56:59 jdbc[5]: exception 538 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 539 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 540 | at org.h2.message.DbException.get(DbException.java:179) 541 | at org.h2.message.DbException.get(DbException.java:155) 542 | at org.h2.message.DbException.get(DbException.java:144) 543 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 544 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 545 | at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:302) 546 | at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:567) 547 | at clojure.java.jdbc$prepare_statement.invokeStatic(jdbc.clj:679) 548 | at clojure.java.jdbc$prepare_statement.invoke(jdbc.clj:626) 549 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1112) 550 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093) 551 | at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182) 552 | at clojure.java.jdbc$query.invoke(jdbc.clj:1144) 553 | at toucan.db$query.invokeStatic(db.clj:288) 554 | at toucan.db$query.doInvoke(db.clj:284) 555 | at clojure.lang.RestFn.invoke(RestFn.java:410) 556 | at toucan.db$simple_select.invokeStatic(db.clj:394) 557 | at toucan.db$simple_select.invoke(db.clj:383) 558 | at toucan.db$simple_select_one.invokeStatic(db.clj:420) 559 | at toucan.db$simple_select_one.invoke(db.clj:409) 560 | at toucan.db$select_one.invokeStatic(db.clj:650) 561 | at toucan.db$select_one.doInvoke(db.clj:644) 562 | at clojure.lang.RestFn.applyTo(RestFn.java:139) 563 | at clojure.core$apply.invokeStatic(core.clj:669) 564 | at clojure.core$apply.invoke(core.clj:662) 565 | at toucan.db$select_one_field.invokeStatic(db.clj:662) 566 | at toucan.db$select_one_field.doInvoke(db.clj:655) 567 | at clojure.lang.RestFn.invoke(RestFn.java:442) 568 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invokeStatic(cache.clj:111) 569 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invoke(cache.clj:92) 570 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invokeStatic(cache.clj:164) 571 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invoke(cache.clj:141) 572 | at metabase.models.setting$db_or_cache_value.invokeStatic(setting.clj:391) 573 | at metabase.models.setting$db_or_cache_value.invoke(setting.clj:383) 574 | at metabase.models.setting$get_raw_value.invokeStatic(setting.clj:428) 575 | at metabase.models.setting$get_raw_value.invoke(setting.clj:402) 576 | at metabase.models.setting$get_raw_value.invokeStatic(setting.clj:442) 577 | at metabase.models.setting$get_raw_value.invoke(setting.clj:402) 578 | at metabase.models.setting$fn__30113.invokeStatic(setting.clj:461) 579 | at metabase.models.setting$fn__30113.invoke(setting.clj:459) 580 | at clojure.lang.MultiFn.invoke(MultiFn.java:234) 581 | at clojure.lang.Var.invoke(Var.java:388) 582 | at metabase.util.i18n.impl$fn__1646$f__1647.invoke(impl.clj:188) 583 | at metabase.util.i18n.impl$site_locale_from_setting.invokeStatic(impl.clj:199) 584 | at metabase.util.i18n.impl$site_locale_from_setting.invoke(impl.clj:192) 585 | at metabase.util.i18n$site_locale_string.invokeStatic(i18n.clj:37) 586 | at metabase.util.i18n$site_locale_string.invoke(i18n.clj:32) 587 | at metabase.util.i18n$site_locale.invokeStatic(i18n.clj:50) 588 | at metabase.util.i18n$site_locale.invoke(i18n.clj:47) 589 | at metabase.util.i18n$translate_site_locale.invokeStatic(i18n.clj:69) 590 | at metabase.util.i18n$translate_site_locale.doInvoke(i18n.clj:66) 591 | at clojure.lang.RestFn.invoke(RestFn.java:410) 592 | at clojure.lang.AFn.applyToHelper(AFn.java:154) 593 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 594 | at clojure.core$apply.invokeStatic(core.clj:669) 595 | at clojure.core$apply.invoke(core.clj:662) 596 | at metabase.util.i18n.SiteLocalizedString.toString(i18n.clj:94) 597 | at clojure.core$str.invokeStatic(core.clj:555) 598 | at clojure.core$str.invoke(core.clj:546) 599 | at metabase.core$destroy_BANG_.invokeStatic(core.clj:74) 600 | at metabase.core$destroy_BANG_.invoke(core.clj:71) 601 | at clojure.lang.AFn.run(AFn.java:22) 602 | at java.base/java.lang.Thread.run(Unknown Source) 603 | 2022-06-01 23:56:59 jdbc[5]: exception 604 | org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] 605 | at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) 606 | at org.h2.message.DbException.get(DbException.java:179) 607 | at org.h2.message.DbException.get(DbException.java:155) 608 | at org.h2.message.DbException.get(DbException.java:144) 609 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) 610 | at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1502) 611 | at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:476) 612 | at com.mchange.v2.c3p0.impl.C3P0ImplUtils.resetTxnState(C3P0ImplUtils.java:245) 613 | at com.mchange.v2.c3p0.impl.NewPooledConnection.reset(NewPooledConnection.java:461) 614 | at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:417) 615 | at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:87) 616 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111) 617 | at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093) 618 | at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182) 619 | at clojure.java.jdbc$query.invoke(jdbc.clj:1144) 620 | at toucan.db$query.invokeStatic(db.clj:288) 621 | at toucan.db$query.doInvoke(db.clj:284) 622 | at clojure.lang.RestFn.invoke(RestFn.java:410) 623 | at toucan.db$simple_select.invokeStatic(db.clj:394) 624 | at toucan.db$simple_select.invoke(db.clj:383) 625 | at toucan.db$simple_select_one.invokeStatic(db.clj:420) 626 | at toucan.db$simple_select_one.invoke(db.clj:409) 627 | at toucan.db$select_one.invokeStatic(db.clj:650) 628 | at toucan.db$select_one.doInvoke(db.clj:644) 629 | at clojure.lang.RestFn.applyTo(RestFn.java:139) 630 | at clojure.core$apply.invokeStatic(core.clj:669) 631 | at clojure.core$apply.invoke(core.clj:662) 632 | at toucan.db$select_one_field.invokeStatic(db.clj:662) 633 | at toucan.db$select_one_field.doInvoke(db.clj:655) 634 | at clojure.lang.RestFn.invoke(RestFn.java:442) 635 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invokeStatic(cache.clj:111) 636 | at metabase.models.setting.cache$cache_out_of_date_QMARK_.invoke(cache.clj:92) 637 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invokeStatic(cache.clj:164) 638 | at metabase.models.setting.cache$restore_cache_if_needed_BANG_.invoke(cache.clj:141) 639 | at metabase.models.setting$db_or_cache_value.invokeStatic(setting.clj:391) 640 | at metabase.models.setting$db_or_cache_value.invoke(setting.clj:383) 641 | at metabase.models.setting$get_raw_value.invokeStatic(setting.clj:428) 642 | at metabase.models.setting$get_raw_value.invoke(setting.clj:402) 643 | at metabase.models.setting$get_raw_value.invokeStatic(setting.clj:442) 644 | at metabase.models.setting$get_raw_value.invoke(setting.clj:402) 645 | at metabase.models.setting$fn__30113.invokeStatic(setting.clj:461) 646 | at metabase.models.setting$fn__30113.invoke(setting.clj:459) 647 | at clojure.lang.MultiFn.invoke(MultiFn.java:234) 648 | at clojure.lang.Var.invoke(Var.java:388) 649 | at metabase.util.i18n.impl$fn__1646$f__1647.invoke(impl.clj:188) 650 | at metabase.util.i18n.impl$site_locale_from_setting.invokeStatic(impl.clj:199) 651 | at metabase.util.i18n.impl$site_locale_from_setting.invoke(impl.clj:192) 652 | at metabase.util.i18n$site_locale_string.invokeStatic(i18n.clj:37) 653 | at metabase.util.i18n$site_locale_string.invoke(i18n.clj:32) 654 | at metabase.util.i18n$site_locale.invokeStatic(i18n.clj:50) 655 | at metabase.util.i18n$site_locale.invoke(i18n.clj:47) 656 | at metabase.util.i18n$translate_site_locale.invokeStatic(i18n.clj:69) 657 | at metabase.util.i18n$translate_site_locale.doInvoke(i18n.clj:66) 658 | at clojure.lang.RestFn.invoke(RestFn.java:410) 659 | at clojure.lang.AFn.applyToHelper(AFn.java:154) 660 | at clojure.lang.RestFn.applyTo(RestFn.java:132) 661 | at clojure.core$apply.invokeStatic(core.clj:669) 662 | at clojure.core$apply.invoke(core.clj:662) 663 | at metabase.util.i18n.SiteLocalizedString.toString(i18n.clj:94) 664 | at clojure.core$str.invokeStatic(core.clj:555) 665 | at clojure.core$str.invoke(core.clj:546) 666 | at metabase.core$destroy_BANG_.invokeStatic(core.clj:74) 667 | at metabase.core$destroy_BANG_.invoke(core.clj:71) 668 | at clojure.lang.AFn.run(AFn.java:22) 669 | at java.base/java.lang.Thread.run(Unknown Source) 670 | --------------------------------------------------------------------------------