Skip to content
CAI
Software that uses CAICheck a score

dianping/cat

38.8

Weak · 25 September 2026

486.2k

lines of production code

JavaScript

with Java, C

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

CAT is a distributed system monitoring and alerting platform that collects, processes, and visualizes telemetry data from applications. It provides comprehensive reporting on transactions, dependencies, errors, and system health, while offering configurable alerting mechanisms for real-time anomaly detection. The system supports multi-channel notifications, SSO integration, and flexible configuration management for domains, projects, and alert rules.

How it got here

2011–2013 — CAT 3.0 architecture and UI overhaul

119 changes.

This period focused on the comprehensive refactoring of the CAT platform towards version 3.0, introducing a new MVC-based architecture for the home module and a new SPI for message tree serialization. The work expanded the system's capabilities by adding support for .NET and Python clients, Hadoop/HDFS storage, and a Chrome extension, while significantly enhancing the web interface with new reporting pages for state, problem, and dependency analysis.

2014–2015 — CAT 3.0 report and alerting expansion

92 changes.

This period focused on the comprehensive expansion of the CAT monitoring system's reporting and alerting capabilities, introducing new dashboards for storage, heartbeat, and event metrics. The work also standardized the underlying MVC and model service architecture to support these new features, while adding extensive unit test coverage for the alerting subsystem.

2018–2022 — multi-language client libraries and infrastructure expansion

53 changes.

This period focused on expanding the CAT ecosystem by introducing official client libraries for Python, C, Go, Node.js, C\#, and Erlang, alongside a Java agent for application monitoring. The backend was significantly enhanced with Hadoop-based message storage, new alerting and business analytics modules, and a comprehensive UI for log and browser monitoring.

Features

Add C++ client library (cppcat) with build, API, and test scaffolding

The \lib/cpp\ directory now contains the initial scaffolding for the C++ client library (\cppcat\). This includes a \CMakeLists.txt\ for building the shared library, a \client.hpp\ header defining the \cat\ namespace with \Config\, \Transaction\, and \Event\ classes, and corresponding implementation files. The change also adds English and Chinese documentation (\README.md\, \docs/api.md\) and unit tests for the client, concurrency primitives, and other utilities.

lib/cpp · high confidence

Add CAT Chrome extension for log viewing and trace mode

A new Chrome extension named 'CAT Extension' (version 0.2) is introduced to provide a browser-based interface for viewing CAT logs. The extension injects a 'X-CAT-TRACE-MODE' header into requests and monitors page headers to identify and track CAT-enabled tabs, allowing users to click the extension icon to open the corresponding CAT log view. It also supports a trace mode for debugging purposes.

cat-home/src/main/resources/chrome/cat · high confidence

Add CatServlet for sequential initialization of client and server configurations

A new CatServlet has been introduced to handle the sequential initialization of the CAT client and server components. The servlet reads separate XML configuration files for the client (defaulting to client.xml) and the server (defaulting to server.xml) from the Cat home directory, allowing for distinct configuration paths for each component. This change supports a more robust startup process by ensuring both client and server contexts are properly initialized before the service is considered ready.

cat-home/src/main/java/com/dianping/cat/servlet · high confidence

Add Cross Report JSP views for hourly and historical analysis

The Cross Report feature is now available in the UI, providing JSP templates for viewing cross-service call and service provision metrics. The new views cover current and historical data for projects, hosts, and methods, displaying columns for total calls, failures, failure percentage, average latency, and QPS. The interface includes navigation for filtering by IP, domain, and date, and supports searching by method or project name.

cat-home/src/main/webapp/jsp/report/cross · high confidence

Add Docker support for local development and deployment

Users can now run the application in a containerized environment using the new Dockerfile and docker-compose.yml. The setup includes a Tomcat-based image that packages the application, configures MySQL connectivity via environment variables, and links to a MySQL 5.7 service for local development.

docker · high confidence

Add Erlang client for CAT distributed tracing

Added an Erlang client implementation for CAT, including C source code for the core client library, build configuration files (Makefile, CMakeLists.txt), and comprehensive documentation (README.md, README\_zh\_CN.md). The client supports initializing contexts, logging events and errors, recording metrics, and managing transactions with configurable options such as encoder type (binary/text), sampling, heartbeat, and multiprocessing.

lib/erlang · high confidence

Add HDFS-based message storage and retrieval for CAT logs

The system now supports storing and retrieving CAT messages on HDFS. A new \HdfsMessageBucketManager\ manages HDFS connections and handles message loading, while \FileSystemManager\ and \HarConnectionPool\ manage the underlying Hadoop file system interactions. This enables users to access remote HDFS logs via the HDFS log view.

cat-hadoop/src/main/java/com/dianping/cat/hadoop/hdfs · medium confidence

Add JAR version report page

A new JSP page has been added to display a report of JAR versions across domains and machines. The page renders a table showing domain, IP, and the versions of various JARs, with navigation links to view reports for different time steps or the current state.

cat-home/src/main/webapp/jsp/report/jar · high confidence

Add JSP tag libraries and web configuration for CAT home

Introduced new JSP tag libraries (app.tld, web-core.tld, webres.tld) and web.xml configuration for the CAT home module. The app.tld defines custom tags for errors, base templates, and various report views, along with utility functions for URI building and IP location lookup. The web-core.tld provides standard web utilities including error handling, string formatting, and form element generation. The webres.tld adds resource management tags for CSS, JavaScript, and static assets. The web.xml configures filters (cat-filter, permission-filter, domain-filter) and servlet mappings for /r, /s, and /jsp paths, enabling the web application's request handling and security constraints.

cat-home/src/main/webapp/WEB-INF · high confidence

Add Jetty-based HTTP server and Java agent for application monitoring

Introduces a new Jetty-based HTTP server transport for Elasticsearch, including the \JettyHttpServerTransport\ and related handler classes, which enable HTTP/REST API access via the Jetty container. Additionally, adds a Java agent (\cat-client-agent\) that uses bytecode instrumentation to pre-set classpaths for monitoring tools (CAT) across Tomcat, Jetty, and Spring Boot environments, supporting dynamic loading of client and plugin JARs based on the application type.

integration/elasticsearch-jetty, integration/javaagent-client-agent/cat-client-agent, integration/springmvc-url/api · high confidence

Add UI for configuring transaction and event alert rules

The system now provides web interfaces for managing alert rules for both transactions and events. Users can view, edit, and delete rules for transaction monitoring (including metrics like execution count, response time, failure rate, and max response time) and event monitoring (execution count and failure rate). Each rule can be individually enabled or disabled via a toggle in the UI, allowing administrators to control which alerts are active.

cat-home/src/main/webapp/jsp/system/transactionRule · high confidence

Add URL pattern management interface

The system now provides a new web interface for managing URL patterns. Users can view a list of existing patterns, edit their properties (name, group, pattern, and domain), and update or delete them via the new urlPattern.jsp, urlPatternConfig.jsp, and urlPatternUpdate.jsp pages.

cat-home/src/main/webapp/jsp/system/urlPattern · high confidence

Add activity configuration update page

A new JSP page for updating activity configurations has been added. It provides a web interface with a text editor for content editing and a submit button to save changes, displaying success or failure status to the user.

cat-home/src/main/webapp/jsp/system/activity · high confidence

Add alteration monitoring and query interface

The system now provides a new alteration monitoring and query interface, introducing JSP views (alter\_query.jsp, alter\_view.jsp, alter\_insertResult.jsp) that allow users to filter and view change records by time range, application name, hostname, and specific alteration types (puppet, workflow, lazyman). The interface includes a 'Select All' checkbox for alteration types, a datetime picker with a 30-minute step, and a modal view for detailed change information. Additionally, URLs in the view are URL-decoded for proper display.

cat-home/src/main/webapp/jsp/report/alteration · high confidence

Add alteration monitoring page

Introduces a new alteration monitoring feature, including the backend handler, model, payload, and JSP viewer components for the alteration report page.

cat-home/src/main/java/com/dianping/cat/report/page/alteration · high confidence

Add app and crash alert rule management pages

Added new JSP pages for managing application alert rules and crash monitoring rules. The appRule.jsp and appRuleUpdate.jsp files provide a tabbed interface for configuring alert conditions including command, return code, network type, version, connection type, platform, city, operator, and metric. The crashRuleList.jsp and crashRuleUpdate.jsp files enable administrators to define and edit crash alert thresholds (warning/error limits) for specific apps, platforms, and modules.

cat-home/src/main/webapp/jsp/system/appRule · high confidence

Add app log and browser monitoring UI and SAML configuration

The application now supports application-level log analysis and browser performance monitoring through new JSP pages (appLog, appLogDetail, appLogGraph, statistics, ajaxLineChart, ajaxPieChart, and their detail counterparts). These pages provide UIs for filtering and displaying app logs, app statistics, and browser metrics. Additionally, a new SAML configuration file (onelogin.saml.properties) has been added to support Single Sign-On integration with OneLogin, including entity IDs, endpoints, and security settings.

(repo-wide) · high confidence

Add business monitoring configuration and management pages

The system now includes new JSP templates for managing business monitoring rules, including add, alert, custom, list, and tag configuration pages. These pages provide a user interface for creating and editing business item configurations, setting up alert rules, and managing tags, enabling users to define and customize monitoring parameters for their applications.

cat-home/src/main/webapp/jsp/system/business · medium confidence

Add business page handler and supporting classes

The system now includes a new business page handler and associated classes (Action, Context, Handler, JspFile, JspViewer, Model, Payload, and BusinessTagConfigManager) in the cat-home module. This introduces a new 'business' page with actions for listing, adding, deleting, and configuring business items, custom items, and alert rules, enabling users to manage business configurations through the CAT interface.

cat-home/src/main/java/com/dianping/cat/system/page/business · high confidence

Add cache report and history pages

The system now includes new JSP templates for displaying cache performance metrics. The \cache.jsp\ template renders the current hourly cache report, showing total requests, misses, hit rate, and average latency, with a pie chart visualization. The \cacheHistory.jsp\ template provides a historical view of cache metrics over time, allowing users to filter by domain, IP, and query name. Both pages support sorting and filtering, enabling users to monitor cache efficiency and troubleshoot performance issues.

cat-home/src/main/webapp/jsp/report/cache · high confidence

Add capacity update tasks and status tracking for overload reports

Introduced a new set of background tasks that monitor and record when daily, hourly, weekly, and monthly report sizes exceed a defined capacity threshold. The \CapacityUpdateTask\ orchestrates the execution of updaters for each time granularity, while \CapacityUpdater\ implementations (e.g., \DailyCapacityUpdater\) process report contents and insert overload records into the database. A new \CapacityUpdateStatusManager\ is added to persist and retrieve the last processed status for each granularity, ensuring that the system tracks progress and avoids reprocessing. Additionally, \TableCapacityService\ and \OverloadReport\ classes are introduced to support querying and generating overload reports based on the stored data.

cat-home/src/main/java/com/dianping/cat/report/page/overload/task · high confidence

Add comprehensive alerting documentation and UI for monitoring various system states

The home page's alerting interface has been significantly expanded with new JSP files that provide detailed documentation and configuration guides for monitoring different system states. This includes tabs for business, database, exception, frontend JS, heartbeat, network, system, and third-party (ping) alerts. Each new file (e.g., \alertDocument/business.jsp\, \alertDocument/exception.jsp\) contains specific instructions on how to configure monitoring rules and alert policies for that category. The \alert.jsp\ file serves as the main container, integrating these new documentation pages into the home page's tabbed interface, allowing users to access these new monitoring capabilities directly from the home page.

cat-home/src/main/webapp/jsp/report/home · high confidence

Add cross-report display models and sorters

The cross-report page now supports displaying aggregated metrics for projects, hosts, and methods. New classes in the \cross/display\ package—\ProjectInfo\, \HostInfo\, \MethodInfo\, and \MethodQueryInfo\—handle the aggregation and storage of cross-service call data. Additionally, \TypeComparator\ and \NameComparator\ enable sorting these reports by metrics such as average latency, total count, and failure rates.

cat-home/src/main/java/com/dianping/cat/report/page/cross/display · high confidence

Add default alert receiver configuration page

A new JSP page (alertDefaultReceivers.jsp) has been added to the system, providing a user interface for configuring default alert receivers. The page includes a text editor for content and buttons to enable or disable all alerts, allowing users to manage alert settings directly from the web interface.

cat-home/src/main/webapp/jsp/system/defaultReceiver · high confidence

Add display policy configuration page

A new JSP page for configuring display policies has been added at cat-home/src/main/webapp/jsp/system/display/policy.jsp. The page provides a form with a text editor for content and a submit button, using jQuery and Ace editor libraries. On submission, it sends the content to the server and displays a success or failure message that automatically clears after 3 seconds.

cat-home/src/main/webapp/jsp/system/alert, cat-home/src/main/webapp/jsp/system/display · medium confidence

Add domain group configuration management

A new domain group configuration interface has been added to the system, allowing users to view, edit, and delete groupings of domains. The update introduces a list view (domainGroupConfig.jsp) that displays existing domain groups and an edit form (domainGroupConfigUpdate.jsp) that enables users to modify group assignments and associated IP addresses via a dynamic form with add/remove capabilities.

cat-home/src/main/webapp/jsp/system/domainGroup · high confidence

Add event alerting capability to CAT

The CAT monitoring system now supports alerting on event metrics. This change introduces a new alerting module for 'Event' type, including the core logic (EventAlert), configuration management (EventRuleConfigManager, UserDefinedRuleManager), and template rendering (EventDecorator). Users can now configure and receive alerts based on event data, similar to existing transaction or heartbeat alerts.

cat-home/src/main/java/com/dianping/cat/report/alert/event · high confidence

Add exception alert reporting pages

The system now includes new JSP templates for exception alert reporting, specifically \alert.jsp\ and \alertHistory.jsp\ for current and historical views, along with \detail.jsp\, \detailHistory.jsp\, and \exceptionDetail.jsp\ to display domain and exception breakdowns. These templates enable users to view and navigate through alert statistics, with interactive features like modal popups for detailed views.

cat-home/src/main/webapp/jsp/report/exceptionAlert · high confidence

Add heavy report pages for remote calls, SQL, and cache statistics

The CAT home interface now includes new JSP templates for the 'heavy' report section, providing detailed views for remote calls, SQL, and cache operations. The \heavy.jsp\ and \heavyHistory.jsp\ files introduce tabbed interfaces that display top URLs and services for remote calls, database interactions, and cache accesses. Each tab presents a table showing the domain, name, log view link, and access count, allowing users to drill down into specific performance metrics for these heavy operations.

cat-home/src/main/webapp/jsp/report/heavy · high confidence

Add highload report page with date filtering and tabbed detail view

A new highload report page has been added to the CAT home module, providing a date-filtered view of high-load metrics. The main page (highload.jsp) includes a date picker and a query button that navigates to the detail view. The detail view (detail.jsp) displays a tabbed interface for different report types, each showing a sortable table of metrics including domain, name, BU, product line, total count, error count, failure rate, and performance lines (Avg, 95Line).

cat-home/src/main/webapp/jsp/report/highload · high confidence

Add initial Helm chart for deploying the Cat application

Introduces a new Helm chart for the 'cat' application, enabling deployment of its server and MySQL components on Kubernetes. The release includes StatefulSets for both the server and database, along with associated Services, Secrets, ConfigMaps, and helper templates to manage the application's infrastructure.

helm · high confidence

Add integration support for Apache Dubbo, Druid, and HTTP context propagation

This change introduces new integration components across three areas. For Apache Dubbo, it adds a monitoring filter (\CatTransaction\) and registry wrapper (\CatRegistryFactoryWrapper\) to track RPC execution, latency, and exceptions, along with a utility (\DubboCat\) to enable/disable monitoring. For Druid, it adds a \DruidCatFilter\ to intercept SQL statements, logging database type, URL, and the SQL text as CAT events. For HTTP/Feign context propagation, it provides a \CatContextServletFilter\ to extract and link distributed traces via HTTP headers, and a \CatFeignConfiguration\ to inject context headers into Feign client requests, supported by a \CatConstantsExt\ class defining relevant constants.

integration · high confidence

Add matrix report analysis and reporting components

Introduced new classes to support matrix-based reporting: MatrixAnalyzer processes transaction messages to aggregate metrics for URL, Service, and PigeonService types, tracking counts, durations, and ratios for calls, SQL, and cache operations. MatrixDelegate handles serialization, deserialization, and task scheduling for matrix reports. MatrixReportFilter limits the number of entries in a report to a configurable maximum (default 400), sorting by count and grouping excess entries under an 'OTHERS' category. MatrixReportMerger combines data from multiple matrix reports, aggregating counts, times, and min/max statistics. These changes enable the system to generate and manage matrix reports for performance analysis.

cat-consumer/src/main/java/com/dianping/cat/consumer/matrix · high confidence

Add matrix report page to CAT home

A new matrix report page has been added to the CAT home interface, enabling users to view and sort matrix data. The implementation includes a new MVC structure with an Action enum (HISTORY\_REPORT, HOURLY\_REPORT), a Context, a Handler for processing requests, a Model for data binding, and a JspViewer for rendering. The page supports sorting and displays both hourly and historical matrix reports.

cat-home/src/main/java/com/dianping/cat/report/page/matrix · high confidence

Add metric time-range selection options

A new Range enum is introduced to define available time intervals for the metric report page, supporting selections of 1, 2, 4, 6, 8, 12, 24, and 48 hours. This change provides the backend structure for users to filter and view metric data across these specific time durations.

cat-home/src/main/java/com/dianping/cat/report/page/metric · high confidence

Add permission management and metric storage query interfaces

Added new files for managing user and resource permissions, including a permission filter, handler, and JSP viewers for user and resource configuration updates. Additionally, introduced metric storage query interfaces and model classes to support querying and grouping of metric data, enabling new capabilities for monitoring and alerting on storage metrics.

(repo-wide) · high confidence

Add problem report transformation and graph building components

Introduced new Java classes in the problem report transform package to handle data aggregation and visualization for the CAT monitoring system. The changes add \DetailStatistics\, \HourlyLineChartVisitor\, \PieGraphChartVisitor\, \ProblemStatistics\, and \ProblemTrendGraphBuilder\ to process problem data, calculate statistics, and generate line and pie charts for the user interface.

cat-home/src/main/java/com/dianping/cat/report/page/problem/transform · high confidence

Add project management page handling

The system now supports managing projects through a new project page. Users can view a list of domains and update project information via the new \project\ action, which handles both domain listing and project creation or updates through the \Handler\ and \Payload\ classes.

cat-home/src/main/java/com/dianping/cat/system/page/project · high confidence

Add report reload task and module for hourly report persistence

Introduced a new report reload task that periodically loads and persists hourly reports for various analyzers (including Business, Cross, Dependency, Event, Heartbeat, Matrix, Problem, State, Storage, Top, and Transaction). The change adds a \CatHadoopModule\ to initialize the report processing thread and implements the \ReportReloadTask\ which iterates through configured report types, invoking specific \ReportReloader\ implementations to fetch, merge, and store report data into the database.

cat-hadoop/src/main/java/com/dianping/cat/hadoop, cat-home/src/main/java/com/dianping/cat/report/task/reload · high confidence

Add router configuration and API JSP views

The system now includes new JSP views for the router module: api.jsp and router.jsp provide API endpoints, while routerConfig.jsp introduces a web interface for editing router configurations. The configuration page features an Ace-based code editor, a submit form to save changes, and a 'Rebuild Route' button that triggers a confirmation dialog before executing the rebuild operation.

cat-home/src/main/webapp/jsp/system/router · high confidence

Add service report and history views

Introduced new JSP templates for the service report feature, including a current view (service.jsp) and a historical view (serviceHistory.jsp). These templates render tables displaying server metrics such as total requests, failures, failure percentage, availability, and average response time, with specific styling for error conditions.

cat-home/src/main/webapp/jsp/report/service · high confidence

Add utility classes for string manipulation and Base64 encoding

The cat-consumer module introduces new utility classes to handle string processing and encoding. A new \InvidStringBuilder\ class is added to sanitize and validate strings, including a fallback to Base64 encoding for non-printable characters. Additionally, \StringUtils\ provides methods for checking emptiness, splitting, joining collections/arrays, and normalizing spaces. The underlying Base64 encoding is supported by newly added \BASE64Encoder\ and \CharacterEncoder\ classes, which implement the logic for converting byte arrays to Base64-encoded strings.

cat-consumer/src/main/java/com/dianping/cat/consumer/util · high confidence

Add utilization report pages for web and service metrics

The CAT home page now includes new JSP templates for the utilization report feature. The \utilization.jsp\ template provides a tabbed interface displaying web application and service utilization metrics, including access counts, QPS, error rates, response times, and system load. A corresponding \utilizationHistory.jsp\ template enables historical data navigation, allowing users to switch between current and past reporting periods. These templates render detailed tables of performance indicators for both web and service components.

cat-home/src/main/webapp/jsp/report/utilization · high confidence

Add web monitoring rule management and speed test configuration interfaces

Added new JSP pages for managing web monitoring rules, including listing, creating, and editing rules based on URL patterns, HTTP status codes, city, operator, network type, and metrics. Also added interfaces for configuring speed test pages and their associated timing steps, as well as editing web constants and JS alert rules.

cat-home/src/main/webapp/jsp/system/webRule · high confidence

Added Bootstrap 2.3.1 CSS framework and alert styling

The application now includes the full Bootstrap 2.3.1 CSS framework (bootstrap.css, bootstrap.min.css, bootstrap-responsive.css, bootstrap-responsive.min.css) along with the bootstrap-rowlink extension and a new alert.css stylesheet. This adds responsive layout support, grid system, and component styling to the home page, while alert.css defines specific color coding for different alert types (network, business, exception, etc) in the alert view.

cat-home/src/main/webapp/css · high confidence

Added CAT client support utilities and servlet integration

Added new utility classes for file and I/O operations (Files), string and map splitting (Splitters), thread management (Threads), URL connection handling (Urls), and a Log4j appender (CatAppender). Additionally, introduced servlet components including a filter (CatFilter) for request tracing and payload logging, and a listener (CatListener) for initialization and cleanup, enabling automatic HTTP request tracking and error reporting via CAT.

cat-client/src/main/java/com/dianping/cat/support · high confidence

Added CAT monitoring integration for Dubbo services

Introduced a new Dubbo integration module under \integration/dubbo\ that enables application-level monitoring via CAT. This includes RPC filters (\CatTransaction\, \AppNameAppendFilter\) that capture transaction metrics, error states, and context propagation for both providers and consumers. A custom \RegistryFactory\ wrapper (\CatRegistryFactory\) is also added to append application name parameters to registry URLs, facilitating service discovery tracking. These changes provide observability for Dubbo RPC calls.

integration/dubbo · high confidence

Added CMDB project update task to sync project metadata

A new scheduled task, CmdbInfoReloadBuilder, has been introduced in the cat-home module to periodically fetch and update project information from the internal CMDB (Configuration Management Database). This task, implemented via ProjectUpdateTask, retrieves project details such as owner, email, and level from the CMDB API and updates the local project registry, ensuring that the monitoring system's project metadata remains synchronized with the central configuration database.

cat-home/src/main/java/com/dianping/cat/report/task/cmdb · high confidence

Added DataExtractorImpl for metric data extraction

The system now includes a new implementation, DataExtractorImpl, which handles the extraction and interval calculation for metric data. This component provides methods to calculate optimal data points for graphing and extracts aggregated values from raw data arrays, supporting both single and multi-dimensional metric processing.

cat-home/src/main/java/com/dianping/cat/report/graph/metric/impl · high confidence

Added Hadoop message storage configuration

A new ComponentsConfigurator class has been added to the cat-hadoop module, registering Hadoop-based storage components (HdfsMessageBucket, HdfsMessageBucketManager, etc.) alongside local storage defaults. This enables the system to route and process messages to HDFS storage backends.

cat-hadoop/src/main/java/com/dianping/cat/hadoop/build · high confidence

Added HttpUtils utility for retrieving client IP addresses

A new HttpUtils class was added to the cat-home module, providing a getRemoteAddress method that attempts to determine the client's IP address by checking the X-Forwarded-For, Proxy-Client-IP, and WL-Proxy-Client-IP headers before falling back to the standard remote address.

cat-home/src/main/java/com/dianping/cat/util · high confidence

Added MANIFEST.MF and app.properties for Cat server configuration

The cat-home module now includes a MANIFEST.MF file defining the main class as com.dianping.cat.Server, and an app.properties file setting the application name to 'cat' with system-level tenant configuration. This provides the necessary metadata and configuration for the Cat server to run.

cat-home/src/main/resources/META-INF · medium confidence

Added MessageId class for parsing and managing message identifiers

A new MessageId class has been introduced in the cat-core module to handle the parsing, storage, and equality comparison of message identifiers. This class encapsulates domain, IP address (in hex), hour, and index components, providing methods to parse message ID strings and convert hexadecimal IP representations back to standard dotted-decimal format.

cat-core/src/main/java/com/dianping/cat/message/tree · high confidence

Added SQL schema for reporting, task scheduling, and configuration

The \script/CatApplication.sql\ file was added, introducing a new database schema that includes tables for daily, weekly, monthly, and hourly reports, along with their corresponding binary content storage. The schema also adds tables for host information, business monitoring, background task scheduling, project metadata, topology graph history, system configuration, baselines, and change records. This provides the underlying data structure for the reporting and monitoring features.

script · high confidence

Added SampleConfigManager for sample configuration management

A new SampleConfigManager class has been introduced to handle the loading, parsing, and synchronization of sample configuration data. This component manages the lifecycle of the 'sampleConfig' configuration, including fetching content from a remote source if not found locally, parsing XML content using DefaultSaxParser, and registering a periodic sync task to refresh the configuration when changes are detected.

cat-core/src/main/java/com/dianping/cat/config/sample · high confidence

Added TopoGraphFormatConfigManager for topology graph configuration

A new configuration manager, TopoGraphFormatConfigManager, has been added to handle topology graph format settings. This component manages the loading, parsing, and storage of TopoGraphFormatConfig data, including methods to build format JSON, query product lines, and insert configuration updates.

cat-home/src/main/java/com/dianping/cat/report/page/dependency/config · high confidence

Added aggregation rule management UI

Introduced new JSP templates for the aggregation feature, including a list view (aggregation.jsp) that displays existing rules for transactions, events, and problems, and an update form (aggregationUpdate.jsp) that allows users to configure domain, pattern, warning thresholds, and contact emails for each rule.

cat-home/src/main/webapp/jsp/system/aggregation · high confidence

Added app configuration management pages

Added a suite of new JSP pages for managing application configurations, including app batch addition, command grouping and updates, code and constant management, and speed monitoring. These pages provide the user interface for configuring app commands, managing return codes and statuses, and setting thresholds, supporting the backend changes for app configuration.

cat-home/src/main/webapp/jsp/system/appConfig · high confidence

Added baseline service for metric reporting

Introduced a new baseline service interface and its default implementation to manage and query daily and hourly baseline data for metrics. This adds the capability to insert, check for existence, and retrieve baseline values, supporting the underlying metric reporting functionality.

cat-home/src/main/java/com/dianping/cat/report/page/metric/service · high confidence

Added blacklist configuration update interface

A new JSP page (blackConfigUpdate.jsp) has been added to the system's black configuration module. This page provides a user interface for updating the client blacklist, allowing users to submit domain and IP addresses that will be discarded. The interface includes a text editor for input and displays success or failure status messages to the user.

cat-home/src/main/webapp/jsp/system/black · high confidence

Introduced CatHomeModule to manage the startup of background tasks, including a ReportReloadTask, a DefaultTaskConsumer (for job machines), and an AlarmManager (for alert machines). Additionally, added a CookieFilter that validates and potentially invalidates cookies based on a whitelist configuration file, enhancing security by removing unauthorized cookies.

cat-home/src/main/java/com/dianping/cat · high confidence

Added current weekly and monthly report generation tasks

The system now supports generating current weekly and monthly reports. This change introduces new components in the \cat-core\ and \cat-home\ modules: \RemoteServersManager\ and \ServersUpdaterManager\ handle server state and updates, while \CurrentReportBuilder\ and \CurrentWeeklyMonthlyReportTask\ manage the scheduling and execution of the weekly and monthly report generation tasks.

(repo-wide) · high confidence

Added dependency analysis for service calls and databases

Introduced new components in the cat-consumer module to analyze and report on service dependencies. This includes a DependencyAnalyzer to process message trees for SQL and PigeonCall transactions, a DependencyDelegate to handle report serialization and task management, and a DependencyReportMerger to combine hourly reports. Users will now see aggregated metrics on service-to-service and service-to-database interactions, including total counts, error counts, and average latencies.

cat-consumer/src/main/java/com/dianping/cat/consumer/dependency · high confidence

Added frontend libraries and UI components for enhanced reporting and interaction

The application now includes several new JavaScript libraries and UI components to improve the user interface and data visualization. A new alarm subscription feature allows users to subscribe or unsubscribe to alarms via an AJAX call. Graphical reporting is enhanced with new charting functions for pie charts, maps, columns, and bars using Highcharts and ECharts. A date-time picker widget is added to support date and time selection in forms. Additionally, a row-linking utility enables clicking on table rows to navigate, and a validation plugin provides client-side form validation for required fields, numbers, emails, and other formats.

cat-home/src/main/webapp/js · high confidence

Added helper utilities for Chinese labels, JSON serialization, sorting, and time calculations

The cat-core module introduces several new helper classes to support internal functionality. Chinese labels for metrics and statuses are now defined in the Chinese and Status classes. File name generation for index files is handled by FileNameHelper. JSON parsing and serialization are managed by JsonBuilder, which configures Gson with a custom field naming strategy and timestamp formatting. Metric types and sorting logic are encapsulated in MetricType and SortHelper, which provide comparators for domains and IP addresses. Time calculations are supported by TimeHelper, which offers methods for date arithmetic and formatting. These additions support the overall refactoring and version 3.0.0 update.

cat-core/src/main/java/com/dianping/cat/helper · high confidence

Added local font and IE10+ CSS assets

The application now includes local CSS files for the 'Open Sans' font and Internet Explorer 10+ styling. By serving the 'Open Sans' font locally via \ace-fonts.css\, the UI no longer depends on external Google servers for this typeface. Additionally, \ace-ie.min.css\ and \ace-part2.min.css\ provide specific styling rules for modern browsers and legacy IE10+ compatibility, ensuring consistent visual presentation across supported environments.

cat-home/src/main/webapp/assets · high confidence

Added network topology visualization and navigation components

The network report page now includes a new time-based navigation bar (TimeNavTab.jsp) for selecting specific minutes, a metric operation navigation header (metricOpNav.jsp) with full-screen toggle and auto-refresh controls, and a main topology view (nettopology.jsp) that renders network graphs using the netgraph.js library. These JSPs provide the frontend structure for displaying network topology data and controlling the report view.

cat-home/src/main/webapp/jsp/report/network · high confidence

Added new configuration and formatting classes for message handling

The cat-core module introduces several new classes in the \com.dianping.cat.config\ package to support message configuration and formatting. \AggregationMessageFormat\ and \CompositeFormat\ handle pattern-based message formatting and parsing, while \DefaultFormat\ provides standard parsing logic. \AtomicMessageConfigManager\ and \ReportReloadConfigManager\ manage the loading, caching, and periodic synchronization of XML-based configuration data from the database or remote fetchers. Additionally, \Level\ and \LogLevel\ enums define logging severity and status codes, and \TrieTreeNode\ supports trie-based data structures for efficient lookups.

cat-core/src/main/java/com/dianping/cat/config · high confidence

Added plugin management page

A new JSP view for the plugin management system has been introduced, exposing the context, payload, and model beans to render the plugin page under the system section.

cat-home/src/main/webapp/jsp/system/plugin · high confidence

Added plugin page handler for downloading Chrome extension and documentation files

The system now includes a new plugin page handler that allows users to download the CAT Chrome extension (as a .crx or .zip file) and retrieve documentation files. The handler supports downloading a server-to-hostname mapping JSON, serving the main plugin JSP view, and providing access to static resources like manifest.json, cat.png, and cat.js for the browser extension.

cat-home/src/main/java/com/dianping/cat/system/page/plugin · high confidence

Added private key for Chrome plugin

A new file, cat.pem, containing a private key has been added to the Chrome plugin resources. This key is likely used for secure communication or authentication within the Chrome extension.

cat-home/src/main/resources/chrome · high confidence

Added server configuration and filter update pages

The system now provides dedicated JSP pages for updating server and filter configurations. The new \serverConfigUpdate.jsp\ page includes a detailed configuration guide explaining key settings such as local-mode, HDFS storage, job-machine, alarm-machine, and various storage/URI parameters. Both pages feature an Ace editor for editing configuration content and display success or failure status messages to the user after submission.

cat-home/src/main/webapp/jsp/system/server · high confidence

Added state report generation tasks for daily, weekly, monthly, and hourly periods

The \cat-home\ module now includes new task builders (\StateReportBuilder\) and a merger utility (\HistoryStateReportMerger\) in the \com.dianping.cat.report.page.state.task\ package. These components enable the system to generate and persist state reports across multiple time granularities (hourly, daily, weekly, and monthly) by querying historical data, merging it, and storing the results via the \StateReportService\. This introduces new scheduled tasks for state report aggregation.

cat-home/src/main/java/com/dianping/cat/report/page/state/task · medium confidence

Added storage group configuration page

A new JSP view for configuring storage groups has been introduced, providing a web interface with an editor for content submission and status feedback.

cat-home/src/main/webapp/jsp/system/storage · high confidence

Added storage monitoring for SQL, RPC, and Cache operations

Introduced a new storage analysis module in the consumer component to track and report on SQL, RPC, and Cache performance metrics. The change adds a new \StorageAnalyzer\ and supporting classes (\StorageDelegate\, \StorageReportMerger\, \StorageReportUpdater\) to process and aggregate storage-related telemetry data. Specific builders (\StorageSQLBuilder\, \StorageRPCBuilder\, \StorageCacheBuilder\) are added to parse and categorize transactions into SQL, RPC, and Cache types, enabling hourly storage reports that capture operation counts, durations, and error rates for these storage interactions.

cat-consumer/src/main/java/com/dianping/cat/consumer/storage · high confidence

Added storage report task builders and services

Introduced new components for generating and managing storage reports. The \StorageReportBuilder\ implements the \TaskBuilder\ interface to construct daily, weekly, and monthly storage reports by querying and merging hourly data. A corresponding \StorageReportService\ handles the underlying data access for these reports. Additionally, a \HistoryStorageReportMerger\ was added to manage the aggregation of historical storage report data.

cat-home/src/main/java/com/dianping/cat/report/page/storage/task · high confidence

Added storage rule management interface

Introduced new JSP views for viewing and editing storage rules for SQL, Cache, and RPC monitoring. The 'storageRule' page displays a table of existing rules with options to edit or delete them, while the 'storageRuleUpdate' page provides a form to create or modify rules, including fields for name, machine, method, monitoring metric (error count, error rate, or response time), and conditional logic.

cat-home/src/main/webapp/jsp/system/storageRule · high confidence

Added task scheduling and sync infrastructure

Introduced the TaskManager component to automate the creation of periodic tasks (hourly, daily, weekly, monthly) based on configurable policies, and added the TimerSyncTask scheduler to execute registered sync handlers on a fixed thread pool, enabling background synchronization tasks to run reliably at specified intervals.

cat-core/src/main/java/com/dianping/cat/task · high confidence

Added third-party monitoring configuration interface

A new JSP page for configuring third-party monitoring rules has been added. The interface supports editing HTTP URL-based monitors (specifying method, domain, and parameters) and Socket-based monitors (specifying IP, port, and domain). Users can now add, edit, or delete these third-party rules through the system's configuration UI.

cat-home/src/main/webapp/jsp/system/thirdParty · high confidence

Adds internal logging infrastructure and lifecycle interfaces

The cat-client module introduces a new internal logging framework, including the \Logger\ interface with debug/info/warn/error methods and a \DefaultLogger\ implementation that writes to the console. This is accompanied by supporting interfaces for component lifecycle management (\Initializable\, \Disposable\, \LogEnabled\) and a \LoggerWrapper\ for delegation, all marked as internal API since version 3.1.

cat-client/src/main/java/com/dianping/cat/component/lifecycle · medium confidence

Auto-generated status model classes and serialization infrastructure

The \cat-client\ module now includes a complete set of auto-generated model classes for system status data, including \StatusInfo\, \OsInfo\, \MemoryInfo\, \ThreadsInfo\, \MessageInfo\, \GcInfo\, \DiskInfo\, \Extension\, and their respective detail and helper classes. These classes implement a visitor pattern via \IVisitor\ and \BaseVisitor\ interfaces, enabling structured traversal of the status hierarchy. The update also introduces \StatusInfoHelper\ for XML serialization and parsing, along with \DefaultXmlBuilder\ and \DefaultLinker\ to handle XML transformation and object linking, providing a robust foundation for status data exchange.

cat-client/src/main/java/com/dianping/cat/status/model · high confidence

Introduce C client library (ccat) with fork and multiprocessing support

The C client library (ccat) is now available, providing a C API for the CAT monitoring system. The library supports initialization in child processes after a fork, with a new \enableAutoInitialize\ configuration option to automatically initialize CAT in each forked child. The release includes fixes for segmentation faults when retrieving the local IP, HTTP protocol bugs, and memory errors when handling multiple servers. Additionally, the library supports building static and shared libraries via CMake, includes Dockerfiles for various Linux distributions, and provides comprehensive API documentation and test scripts.

lib/c · high confidence

Introduce C\# client library for CAT monitoring

Added a new C\# client library (\lib/csharp\) that provides instrumentation for the CAT monitoring system. The library includes core components such as \Cat.cs\ for transaction and event logging, \DBUtil.cs\ for database operation wrapping, and configuration classes (\CatConfigurationSection.cs\, \LocalClientConfig.cs\) that support reading server and domain settings from both XML files and .NET configuration sections. The implementation supports .NET Framework 4.6.1 and .NET Standard 2.0, enabling developers to integrate CAT's distributed tracing and metrics capabilities into their C\# applications.

lib/csharp · high confidence

Introduce Go client library (gocat) for CAT

Added the Go client library (gocat) for CAT, including the core implementation in the ccat package, the public API in the gocat package, and comprehensive documentation in README.md and README.zh-CN.md. The library supports Go 1.8+ and provides APIs for transactions, events, errors, and metrics. It is versioned at 3.0.0.

lib/go · high confidence

Introduce Python client (pycat) for CAT with multi-platform Docker support

The Python client for CAT is now available, allowing Python applications to initialize tracing and metrics via \cat.init()\. The SDK supports both Python 2.7 and Python 3.5+ and includes a \cat.init(auto\_init=True)\ option to automatically initialize CAT in child processes after a fork. The release also includes Dockerfiles for Alpine, CentOS 7, and various Ubuntu versions to facilitate containerized deployments.

lib/python · high confidence

Introduce alert summary generation and storage components

Added AlertSummaryExecutor and AlertSummaryService to handle the generation and persistence of alert summaries. The executor coordinates multiple summary builders (related, failure, alteration) to produce HTML content, while the service persists the summary to the database.

cat-home/src/main/java/com/dianping/cat/report/alert/summary · high confidence

Introduce block-based message dumping with new dump components

The dump module now includes new classes—BlockDumper, DumpAnalyzer, LocalMessageBucketManager, and MessageItem—that implement a block-based approach to dumping and analyzing CAT messages. This introduces a new mechanism for handling message storage and processing, likely improving performance and reliability for local message bucket management and dump operations.

cat-consumer/src/main/java/com/dianping/cat/consumer/dump · high confidence

Introduce cross-domain reporting and analysis for RPC calls

Adds new components to analyze and report on cross-domain RPC traffic (specifically Pigeon calls). The \CrossAnalyzer\ processes message trees to extract client/server address and application details, while \CrossDelegate\ handles report serialization and task creation. A \CrossReportMerger\ combines hourly reports, and an \IpConvertManager\ resolves hostnames to IP addresses. This enables visibility into cross-service communication metrics.

cat-consumer/src/main/java/com/dianping/cat/consumer/cross · high confidence

Introduce exception alerting with configurable thresholds and exclusion rules

Added a new exception alerting system in the cat-home module, comprising five new classes: ExceptionAlert (the main alerting task), ExceptionContactor (contact info provider), ExceptionDecorator (template-based alert content generation), ExceptionRuleConfigManager (manages exception limits and exclusions), and AlertExceptionBuilder (builds alert objects). This enables users to configure per-domain and per-exception warning/error thresholds, exclude specific exceptions from alerts, and receive structured notifications when exception counts exceed defined limits.

cat-home/src/main/java/com/dianping/cat/report/alert/exception · high confidence

Introduce new component context and lifecycle management

The cat-client module now includes a new component context system, introducing the ComponentContext interface and its DefaultComponentContext implementation. This adds support for looking up components by role, including single instances, lists, and maps of components. It also introduces a component lifecycle management system that handles initialization, logging, and disposal of components. This change enables more flexible component registration and lookup, supporting both singleton and prototype instantiation strategies.

cat-client/src/main/java/com/dianping/cat/component · high confidence

Introduce new consumer-side utilities and modules for CAT 3.0

The cat-consumer module now includes a new CatConsumerModule for dependency management, a DatabaseParser class that parses and caches JDBC connection strings for MySQL and Oracle, and a GraphTrendUtil helper for parsing graph trend data into Double and Long arrays. These additions support the broader CAT 3.0 release and provide new capabilities for database connection handling and graph data processing within the consumer layer.

cat-consumer/src/main/java/com/dianping/cat/consumer · medium confidence

Introduce new message encoding and decoding implementations

The message codec package has been completely rewritten with new implementations for serializing and deserializing CAT messages. A native binary format (ID 'NT1') is introduced for efficient serialization, alongside updated codecs for plain text ('PT1'), HTML ('html'), and waterfall visualization ('WF2'). The changes also add support for decoding metric bags in the native format ('NM1') and include new buffer writer utilities for escaping and HTML encoding data during serialization.

cat-core/src/main/java/com/dianping/cat/message/codec · high confidence

Introduce new model page and handler for XML-based report rendering

Added a new model page and handler in the cat-home module that enables rendering reports as gzipped XML. The change introduces a new Action enum, Context, Handler, JspFile, JspViewer, Model, and Payload classes. The Handler processes inbound requests, calls the appropriate LocalModelService to generate XML, and returns it as a gzipped response. This provides a new way to access report data in XML format via the model page.

cat-home/src/main/java/com/dianping/cat/report/page/model · high confidence

Introduce new network transport layer for CAT client

A new network package has been added to the CAT client, introducing a Netty-based transport layer. This includes a ClientTransportManager to manage connections to CAT servers, a MessageTransporter to handle message sending, and supporting classes like DaemonThreadFactory. This change provides the underlying mechanism for the client to connect to and communicate with the CAT server.

cat-client/src/main/java/com/dianping/cat/network · high confidence

Introduce new report infrastructure and alerting framework

The report module now includes a new \LogMsg\ class for managing message counts and IDs, a \ReportContext\ to initialize resource configurations, and a \ReportModule\ that registers handlers for various report pages such as home, problem, transaction, event, heartbeat, logview, model, matrix, cross, cache, state, dependency, statistics, alteration, monitor, overload, storage, top, business, and alert. Additionally, an \AlarmManager\ has been added to start background threads for business, exception, heartbeat, transaction, and event alerts, enabling automated alerting capabilities within the CAT home interface.

cat-home/src/main/java/com/dianping/cat/report · high confidence

Introduce new report management and storage components

Added new classes to handle report lifecycle and storage: DefaultReportManager and DefaultReportBucketManager for managing hourly reports and buckets, along with supporting interfaces (ReportManager, ReportBucket, ReportBucketManager, ReportDelegate) and implementations (LocalReportBucket, DomainValidator, HourlyReportTable/ContentTableProvider). This provides the core infrastructure for storing, retrieving, and cleaning up hourly reports.

cat-core/src/main/java/com/dianping/cat/report · high confidence

Introduce nodecat: a new Node.js client for distributed application tracing

Added the \nodecat\ module, providing a Node.js client for the Cat distributed application tracing system. This includes the core implementation in \lib/node.js/lib/cat.js\, native bindings in \src/nodecat.cc\, and build configuration files (\CMakeLists.txt\, \binding.gyp\). The client supports initializing with an app key, creating transactions and events, and operating in either 'Atomic Mode' (default, sending messages immediately) or 'Thread Mode' (hierarchical message trees). Example scripts demonstrating transaction and event logging are also included.

lib/node.js · high confidence

Introduce state analysis and reporting for CAT metrics

The system now includes a new state analysis pipeline that aggregates and stores hourly metrics about server health, network topology, and domain-level statistics. This change introduces the core components for this capability: a \StateAnalyzer\ that processes message trees to compute per-minute and aggregate statistics (such as TPS, loss, and delay), a \StateDelegate\ that handles report serialization, task scheduling, and report merging, and a \StateReportMerger\ to combine data from multiple sources. Users will see updated state reports and potentially new data in the CAT monitoring interface reflecting these aggregated state metrics.

cat-consumer/src/main/java/com/dianping/cat/consumer/state · high confidence

Introduced ContentFetcher interface and LocalResourceContentFetcher implementation for loading local configuration files

Users can now retrieve configuration content from local resources via the new ContentFetcher interface and its LocalResourceContentFetcher implementation, which reads XML configuration files from the /config/ directory on the classpath.

cat-core/src/main/java/com/dianping/cat/config/content · high confidence

Introduced HDFS message upload and logview processing components

Added HdfsUploader and LogviewProcessor classes to handle uploading message files to HDFS and processing logview files for deletion or upload. HdfsUploader manages the upload of local files to HDFS using a thread pool, while LogviewProcessor scans local directories to identify old or valid files, triggering uploads or local deletions based on configuration.

cat-hadoop/src/main/java/org/unidal/cat/message/storage/clean · high confidence

Introduced StorageGroupConfigManager for centralized storage configuration

A new StorageGroupConfigManager component has been added to handle the loading, parsing, and persistence of storage group configurations. This manager retrieves configuration data from the database or a remote fetcher, parses XML content into a structured StorageGroupConfig object, and provides utility methods to query storage groups, build URLs, and map storage IDs to their associated departments and product lines. This change centralizes the logic for managing storage group settings within the cat-home module.

cat-home/src/main/java/com/dianping/cat/report/page/storage/config · high confidence

Introduced automatic router configuration adjustment based on state reports

Added new classes in the router configuration package (AdjustStateReportVisitor, RouterConfigAdjustor, RouterConfigHandler, RouterConfigManager, StateReportVisitor) that automatically adjust router configurations by analyzing state reports and server availability. This enables dynamic routing adjustments based on real-time state data, improving load balancing and failover capabilities for the CAT monitoring system.

cat-home/src/main/java/com/dianping/cat/system/page/router/config · high confidence

Introduced domain filtering and navigation bar components

Added new Java classes to the CAT home module: DomainFilter, which manages a browser cookie to track and filter domains; NavigationBar, which defines the set of visible report pages (such as Browser, App, Transaction, and Problem); ProblemReportHelper, which assists in generating HTML links for problem reports; and UriBuilder, which constructs URIs for report pages. These changes introduce new mechanisms for domain-based filtering and navigation structure within the CAT home interface.

cat-home/src/main/java/com/dianping/cat/report/view · high confidence

Introduced new component factory and DI infrastructure

The client module now includes a new component factory system that manages the lifecycle and instantiation of internal components. This includes a \ComponentFactory\ interface and a \ComponentFactorySupport\ base class that implements singleton and prototype bean registration, supporting role-based lookups and configuration sources. A \ServiceLoaderComponentFactory\ is also added to load components via Java's ServiceLoader mechanism. This change restructures how the client initializes and manages its internal components, moving away from previous instantiation patterns.

cat-client/src/main/java/com/dianping/cat/component/factory · high confidence

Introduced new constant and module definitions for Cat core

Added CatConstants.java and Constants.java to define static configuration values, including message types, trace modes, and report identifiers. Additionally, introduced CatCoreModule.java to manage the initialization of the Cat core module, specifically triggering the ServersUpdaterManager.

cat-core/src/main/java/com/dianping/cat · high confidence

Introduced new dependency topology graph and line chart builders

Added new classes to construct dependency topology graphs and line charts: \TopologyGraphBuilder\ and \TopologyGraphManager\ handle the creation and management of \TopologyGraph\ entities, while \LineGraphBuilder\ generates time-series line charts for dependency metrics. Supporting components include \DependencyItemBuilder\ for constructing graph nodes and edges, \ProductLinesDashboard\ for aggregating nodes by product line, and \TopologyGraphConfigManager\ which applies configurable thresholds (OK/WARN/ERROR) to determine the status of nodes and edges. Constants for graph states and types are defined in \GraphConstrant\.

cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph · high confidence

Introduced new server configuration management components

Added three new classes to the server configuration package: ServerConfigManager, ServerConfigValidator, and ServerConfigVisitor, which handle server-level configuration loading, validation, and traversal. Additionally, the existing ServerFilterConfigManager was updated to support dynamic configuration updates via a TimerSyncTask-based refresh mechanism, allowing server filter settings to be modified without restarting the service.

cat-core/src/main/java/com/dianping/cat/config/server · high confidence

Introduced new services for host, IP, and project management

Added HostinfoService, IpService, IpService2, and ProjectService to handle host information, IP geolocation and ISP lookup, and project domain management respectively. These new service classes provide core functionality for querying and managing host metadata, resolving IP addresses to geographic and network details, and maintaining project-to-domain mappings within the CAT core module.

cat-core/src/main/java/com/dianping/cat/service · medium confidence

Introduced new system configuration and authentication pages

The system's user interface has been updated with new JSP templates for the login and registration flow, including a redesigned login page with dark/light/blur theme options and a new user registration form. Additionally, a new 'configTree.jsp' has been added to the system directory, providing a comprehensive navigation menu for configuring project settings, monitoring rules, and alert policies.

cat-home/src/main/webapp/jsp/system · high confidence

Introduced new transaction report generation and graphing tasks

Added new task classes to generate and merge historical transaction reports. The \TransactionReportBuilder\ now handles daily, weekly, and monthly report generation by querying and aggregating hourly data. A new \HistoryTransactionReportMerger\ is used to combine historical transaction data, and dedicated graph creators (\TransactionReportDailyGraphCreator\ and \TransactionReportHourlyGraphCreator\) are introduced to process and format the resulting transaction metrics for display.

cat-home/src/main/java/com/dianping/cat/report/page/transaction/task · high confidence

Introduced server-side statistic tracking for message and block metrics

Added new classes, ServerStatistic and ServerStatisticManager, to the cat-core module. These classes provide a thread-safe mechanism for aggregating and managing server-side statistics, including message totals, sizes, and block metrics, using concurrent data structures like ConcurrentHashMap and AtomicLong.

cat-core/src/main/java/com/dianping/cat/statistic · high confidence

Introduces a new monitor page with API aggregation actions

The monitor page now supports four aggregation operations—count, average, sum, and batch—exposed via the new \Action\ enum and \Payload\ model. This change adds the core Java classes (Handler, Context, Model, JspFile, JspViewer, HttpStatus) that power the monitor interface, enabling users to view and interact with system monitoring data through these specific API endpoints.

cat-home/src/main/java/com/dianping/cat/report/page/monitor · high confidence

Introduces a new task-based reporting architecture

The \cat-home\ module adds a new task-driven reporting system. This includes a \TaskConsumer\ and \DefaultTaskConsumer\ to manage and execute scheduled reports, a \ReportFacade\ to dispatch report building tasks by period (hourly, daily, weekly, monthly), and a \TaskBuilder\ interface for specific report implementations. Additionally, a \DefaultRemoteServersUpdater\ is introduced to aggregate server information, and a \TaskHelper\ provides date/time utilities for report periods.

cat-home/src/main/java/com/dianping/cat/report/task · high confidence

Java client initialization and configuration via SPI

The Java client now supports automatic initialization through the Service Provider Interface (SPI). By implementing the \ClientConfigProvider\ interface and registering it in \META-INF/services\, users can provide custom client configurations, which are then used during the client's lazy initialization process.

lib/java · high confidence

New Business Report page with line charts and custom metrics

A new Business report page has been added to the CAT home interface, enabling users to view line charts for business metrics. The implementation includes a new \Handler\ and \Model\ to process requests, a \BusinessGraphCreator\ to generate line charts for domains and tags, and a \CustomDataCalculator\ that uses JEXL expressions to compute custom metrics from raw data. The feature also introduces a caching layer (\CachedBusinessReportService\) and multiple data fetching strategies (local, remote, historical) to retrieve and merge business reports.

cat-home/src/main/java/com/dianping/cat/report/page/business · high confidence

New HDFS message bucket implementations for message storage

Added new HDFS-based message bucket classes (AbstractHdfsMessageBucket, HdfsMessageBucket, HarfsMessageBucket) that enable reading and decoding message trees from HDFS storage, supporting both standard HDFS and HAR file systems for message retrieval.

cat-hadoop/src/main/java/com/dianping/cat/hadoop/hdfs/bucket · high confidence

New Heartbeat Report and History Graphs UI

The Heartbeat report page now displays a comprehensive set of historical graphs for thread, system, memory, disk, and CAT metrics, alongside extension-specific graphs. The new JSP templates render these visualizations using Highcharts, providing users with detailed historical data for monitoring and debugging purposes.

cat-home/src/main/webapp/jsp/report/heartbeat · high confidence

New Matrix Report and History Report JSP templates

Added new JSP templates for the Matrix Report and its History Report view. The matrix.jsp template renders a detailed table displaying metrics for types, names, total hits, average duration, and breakdowns for call, SQL, and cache operations (ratio and cost). The matrixHistoryReport.jsp template provides a similar tabular view for historical data, including min, max, and average statistics for calls, SQL, and cache operations, allowing users to analyze past performance trends.

cat-home/src/main/webapp/jsp/report/matrix · high confidence

New SVG graph rendering infrastructure in CAT home

A new SVG graphing subsystem has been introduced to the CAT home module, providing a reusable framework for generating SVG-based bar and line charts. The change adds a set of core classes in the \com.dianping.cat.report.graph.svg\ package: the \GraphPayload\ and \ValueTranslater\ interfaces define the data contract and value-scaling logic, while \AbstractGraphPayload\ provides default layout and margin settings. The \DefaultGraphBuilder\ implements the \GraphBuilder\ interface to construct SVG markup, supporting both bar and line chart types. This refactoring centralizes SVG generation logic, allowing existing or future report modules to produce scalable vector graphics for dashboard visualization.

cat-home/src/main/java/com/dianping/cat/report/graph/svg · high confidence

New alarm management and reporting UI pages

Added new JSP views for the alarm subsystem, including a sidebar template (alarm.jsp), an operation state display (alarmOpState.jsp), and detailed record views (alarmRecordDetail.jsp, alarmRecordList.jsp). Additionally, the update and add forms for alarm templates (alarmTemplateUpdate.jsp) and scheduled reports (scheduledReportAdd.jsp, scheduledReportUpdate.jsp, scheduledReports.jsp) have been introduced, enabling users to manage alarm templates and configure scheduled report subscriptions.

cat-home/src/main/webapp/jsp/system/alarm · high confidence

New alert and monitoring templates for web, app, and rule configurations

Added a suite of new FreeMarker templates to the freemaker directory to support alerting and monitoring features. This includes \appAlert.ftl\ and \eventAlert.ftl\ for generating alert notifications, \exceptionAlarm.ftl\ and \serviceAlarm.ftl\ for exception and service failure alerts, and \rule\_configs.ftl\/\server\_rule\_configs.ftl\ for the rule configuration UI. The rule config templates introduce new rule types (SumMaxVal, SumMinVal, UserDefine) and allow filtering of rule types. Additionally, templates for error info (\errorInfo.ftl\), event reports (\event.ftl\), problem reports (\problem.ftl\), and data comparison (\appDataComparison.ftl\) have been added to support various reporting and alerting scenarios.

cat-home/src/main/resources/freemaker · high confidence

New alert management page and backend handlers

The alert module in the CAT home page has been implemented with new Java classes (Action, Context, Handler, JspFile, JspViewer, Model, Payload) that enable viewing, inserting, and sending alerts. Users can now access the alert page to view alert history, insert new alerts, and send alert notifications via configured channels.

cat-home/src/main/java/com/dianping/cat/report/page/alert · high confidence

New alert sender configuration interface

A new JSP page (senderConfig.jsp) has been added to the system's sender module, providing a web interface for configuring alert sending services. The page features a form with a text editor for content and a submit button, allowing users to update alert sender configurations through the application's UI.

cat-home/src/main/webapp/jsp/system/sender · high confidence

New alerting infrastructure with configurable policies and multi-channel delivery

The cat-alarm module introduces a new alerting framework that enables configurable alert policies, multi-channel notification delivery (email, SMS, WeChat, and DX), and structured alert storage. Users can now define alert rules and policies via XML configuration, with the system automatically routing alerts to the appropriate receivers based on the configured policies. The new \AlertManager\ orchestrates the entire flow: it receives alert entities, applies policy-based filtering and suspension logic, formats messages using decorators, and delivers them through the configured channels. The \AlertService\ handles database persistence of alerts, while \AlertPolicyManager\ and \SenderConfigManager\ manage the configuration of alert rules and sender settings respectively. This provides a more flexible and maintainable approach to system monitoring and alerting.

cat-alarm · high confidence

New app report views for connection and line/pie charts

The app report section now includes new JSP templates for displaying connection metrics and chart data. Specifically, \connLinechart.jsp\ and \connLinechartDetail.jsp\ provide a line chart view for connection data, while \connPiechart.jsp\ and \connPiechartDetail.jsp\ offer a pie chart view. Additionally, \dashboard.jsp\ introduces a new dashboard view that aggregates response time, success rate, and access trends across different dimensions like city, operator, platform, and version. These templates introduce new UI components for filtering by app, command, network type, version, platform, city, and operator, enabling users to visualize and compare application performance metrics.

cat-home/src/main/webapp/jsp/report/app · high confidence

New bug configuration page for managing exception specifications

A new JSP page, bugConfig.jsp, has been added to the system/bug directory. This page provides a user interface for configuring exception specifications (异常规范配置). It features a form with a hidden input for the bug content, an editor div, and a submit button. The page also includes client-side JavaScript to handle state messages, displaying success or failure notifications that automatically clear after 3 seconds.

cat-home/src/main/webapp/jsp/system/bug · medium confidence

New business alert monitoring and notification system

The system now supports business-specific alerting, allowing users to configure and receive notifications for business metrics. This change introduces a new alerting module that processes business report data, applies configurable rules to detect anomalies, and generates formatted alert content and titles for users. The implementation includes components for fetching report data, managing alert configurations, and formatting the final alert messages.

cat-home/src/main/java/com/dianping/cat/report/alert/business · high confidence

New business analytics module for tracking metrics

Added new classes to the cat-consumer module that implement a business analytics feature. The BusinessAnalyzer processes message trees to extract and aggregate metrics (count, duration, sum) into BusinessReport objects. The BusinessDelegate handles serialization (XML and binary) and task management for these reports, while the BusinessReportMerger combines data across time periods. This introduces a new reporting capability for business-level metrics.

cat-consumer/src/main/java/com/dianping/cat/consumer/business · high confidence

New cache report page for monitoring cache performance

A new cache report page has been added to the CAT home interface, providing visibility into cache hit rates, miss counts, and transaction metrics. This feature allows users to view historical and hourly reports for cache operations, with support for filtering by domain, IP, and transaction type, and sorting by miss or hit counts.

cat-home/src/main/java/com/dianping/cat/report/page/cache · high confidence

New centralized configuration management interface

The system now provides a unified configuration management interface for managing projects, topology graphs, exception rules, heartbeat rules, and various alert policies. This change introduces a new \config\ page that consolidates the administration of system settings, including project management, topology graph configuration, exception thresholds, and alert sender configurations, allowing users to modify these settings through a single, consistent UI.

cat-home/src/main/java/com/dianping/cat/system/page/config · high confidence

New centralized configuration processors for alerting, topology, and system settings

Added a suite of new Java classes in the \cat-home\ module to handle configuration processing for various system features. This includes \AlertConfigProcessor\ for managing alert policies and default receivers, \BaseProcesser\ providing shared rule management logic, \DependencyConfigProcessor\ for topology graph and edge/node configurations, \EventConfigProcessor\ and \TransactionConfigProcessor\ for event and transaction alert rules, \ExceptionConfigProcessor\ for exception exclusions and limits, \GlobalConfigProcessor\ for global settings like projects, routers, and server filters, \HeartbeatConfigProcessor\ for heartbeat rules and display policies, and \StorageConfigProcessor\ for storage rules. These processors implement the \process\ method to handle specific \Action\ types, updating the \Model\ and \Payload\ to reflect the current state of the system's configuration.

cat-home/src/main/java/com/dianping/cat/system/page/config/processor · high confidence

New chart data models for the CAT report graph module

The cat-home module now includes new Java classes in the \com.dianping.cat.report.graph\ package to support graph reporting. These include \BarChart\, \LineChart\, \PieChart\, \MapChart\, \GraphLine\, and \DistributeDetailInfo\. These classes define the data structures and serialization logic (e.g., JSON output) for various chart types, enabling the frontend or reporting system to consume structured data for visualizing metrics such as bar, line, pie, and map charts.

cat-home/src/main/java/com/dianping/cat/report/graph · high confidence

New configuration managers for domain groups and heartbeat display policies

The cat-home module introduces new configuration management components to support dynamic, database-backed configuration for domain grouping and heartbeat display policies. DomainGroupConfigManager loads and persists domain group configurations (domains, groups, and IPs) from the database, providing methods to insert, delete, and query domain-group mappings. HeartbeatDisplayPolicyManager similarly manages heartbeat display policies, allowing insertion and querying of metric configurations (including alert status and unit conversion) and sorting groups by order. Both managers implement the Initializable interface to load initial state from the database or fallback content fetcher, and provide APIs for runtime updates and queries, enabling more flexible and persistent configuration management for these features.

cat-home/src/main/java/com/dianping/cat/report/page, cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/config · high confidence

New configuration sources for client setup

The client now supports five distinct configuration sources to determine its settings: AppPropertiesSource (reads app.name and tenant.token from a properties file), ClientXmlSource (loads configuration from a local XML file), EnvironmentVariableSource (reads host and server IPs/ports from environment variables), SystemPropertiesSource (reads host and server IPs/ports from system properties), and ServerConfigureSource (fetches dynamic configuration via HTTP requests). Each source implements the ConfigureSource interface and is assigned a specific priority order to determine which configuration takes precedence.

cat-client/src/main/java/com/dianping/cat/configuration/source · high confidence

New cross, matrix, problem, and state report services

The home page now supports querying and displaying reports for cross, matrix, problem, and state analytics. This change introduces new service classes (e.g., \CrossReportService\, \MatrixReportService\, \ProblemReportService\, \StateReportService\) and their corresponding composite, historical, local, and remote implementations. These services handle data retrieval from databases and local disks, merging and filtering report data for each specific analytics type, enabling users to view detailed reports for these previously unsupported or newly added monitoring dimensions.

(repo-wide) · high confidence

New cross-reporting page handler and supporting classes

Added a new cross-reporting page handler (Action, Context, Handler, JspFile, JspViewer, Model, Payload, CrossMethodVisitor) in the cat-home module, enabling users to view cross-domain reports (hourly and historical) for hosts, methods, and projects through the CAT dashboard.

cat-home/src/main/java/com/dianping/cat/report/page/cross · high confidence

New dependency report and dashboard views

The dependency report and dashboard pages have been implemented with new JSP templates. The main report view (dependency.jsp) now includes a line graph for project metrics and dependencies. A new dashboard view (dependencyDashboard.jsp) provides a topological graph of dependencies with full-screen support. Additionally, a detailed data view (dependencyDetailData.jsp) displays project and dependency metrics with configuration links, while supporting components (dependencyLineGraph.jsp, dependencyOpNav.jsp, dependencyTimeNav.jsp, dependencyTopologyGraph.jsp) provide the underlying UI for graphs, navigation, and topology rendering.

cat-home/src/main/webapp/jsp/report/dependency · high confidence

New dependency report service implementations for CAT home page

Added five new Java classes in the dependency report service layer: CompositeDependencyService, DependencyReportService, HistoricalDependencyService, LocalDependencyService, and RemoteDependencyService. These classes implement the logic for generating, merging, and retrieving dependency reports, including handling hourly, daily, weekly, and monthly report queries, as well as local disk and remote service data sources.

cat-home/src/main/java/com/dianping/cat/report/page/dependency/service, cat-home/src/main/java/com/dianping/cat/report/page/storage/service · high confidence

New event analysis and reporting components

Added new classes for event processing: \AllReportConfigManager\ for managing report configurations, \EventAnalyzer\ for analyzing event messages, \EventDelegate\ for report delegation, \EventReportCountFilter\ for filtering reports, \EventReportMerger\ for merging reports, \EventReportTypeAggregator\ for aggregating types, and \EventTpsStatisticsComputer\ for computing TPS statistics.

cat-consumer/src/main/java/com/dianping/cat/consumer/event · high confidence

New event report page with graph and pie chart visualizations

The event report page has been refactored to introduce new visualizations for event data. The \Handler\ now builds hit and failure trend graphs using \HitPayload\ and \FailurePayload\ classes, which aggregate range values for display. Additionally, a pie chart is generated to show the distribution of event names, with sorting options for name, total count, and failure metrics. The page structure is defined by new \Action\, \Context\, \Model\, and \JspFile\ classes, enabling users to view hourly and historical reports with interactive graphs and charts.

cat-home/src/main/java/com/dianping/cat/report/page/event · high confidence

New event report pages with historical and grouped views

The event report module now includes dedicated JSP templates for viewing event data across different scopes. A new \event.jsp\ provides the standard event report, while \eventGroup.jsp\ adds the ability to filter and view events by group. Additionally, \eventHistoryReport.jsp\ and \eventHistoryGroupReport.jsp\ introduce historical reporting capabilities, allowing users to analyze event trends over time. The \eventHistoryGraphs.jsp\ and \event\_graphs.jsp\ templates support visualizing these historical and distribution statistics through line and pie charts.

cat-home/src/main/webapp/jsp/report/event · high confidence

New event report task builders and graph creators for daily, weekly, and monthly reports

The cat-home module introduces new task builder components for event reporting. A new \EventReportBuilder\ implements the \TaskBuilder\ interface to generate daily, weekly, and monthly reports, registering itself with the \CurrentWeeklyMonthlyReportTask\ scheduler. Supporting this are new classes: \EventReportDailyGraphCreator\ and \EventReportHourlyGraphCreator\ to handle graph trend data for different time granularities, and a \HistoryEventReportMerger\ to combine historical event report data. These changes enable the system to automatically generate and store aggregated event reports over various time periods.

cat-home/src/main/java/com/dianping/cat/report/page/event/task · high confidence

New event report transformation and visualization components

Added new classes in the event report transform package to handle data aggregation and visualization. This includes \AllMachineMerger\ and \AllNameMerger\ for merging event reports across all machines or names, \EventMergeHelper\ to orchestrate the merging process, \DistributionDetailVisitor\ to extract distribution details, \EventTrendGraphBuilder\ to construct trend graphs for hits and failures, and \PieGraphChartVisitor\ to generate pie charts for event distributions.

cat-home/src/main/java/com/dianping/cat/report/page/event/transform · high confidence

New exception and utilization configuration interfaces

Added new JSP-based configuration interfaces for managing system exceptions and application resource weights. The exception module now provides dedicated pages for configuring exception thresholds (warning/error limits and alert toggles) and exception exclusions, allowing users to define which errors trigger alerts and which to filter out. Additionally, a new utilization configuration page was introduced to manage application ranking resource weights, enabling administrators to adjust the weightings used in application leaderboards.

cat-home/src/main/webapp/jsp/system/exception · high confidence

New heartbeat alerting implementation

The system now includes a new heartbeat alerting module, introducing \HeartbeatAlert\ for processing heartbeat data and generating alerts, \HeartbeatContactor\ to handle project-level contact, \HeartbeatDecorator\ to format alert titles and content, and \HeartbeatRuleConfigManager\ to manage alert rules. This adds the capability to monitor and alert on heartbeat metrics.

cat-home/src/main/java/com/dianping/cat/report/alert/heartbeat · high confidence

New heartbeat report model and analysis pipeline

The heartbeat module now includes a new \HeartbeatAnalyzer\ that processes incoming heartbeat messages and builds \HeartbeatReport\ objects. This report is managed by a new \HeartbeatDelegate\ which handles serialization (XML and binary via \DefaultNativeBuilder\/\DefaultNativeParser\) and task scheduling. A new \HeartbeatReportMerger\ is also introduced to combine periodic data from different sources. This change establishes the core infrastructure for collecting, storing, and merging heartbeat data, moving away from previous implementations to a more structured report-based approach.

cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat · high confidence

New heartbeat report service implementation

The heartbeat report functionality is now handled by a new set of services in the heartbeat package: CompositeHeartbeatService, HeartbeatReportService, HistoricalHeartbeatService, LocalHeartbeatService, and RemoteHeartbeatService. These classes implement the logic for aggregating, querying, and filtering heartbeat data from both local and remote sources, providing the backend support for the heartbeat monitoring feature.

cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/service · high confidence

New heartbeat rule configuration interface

A new JSP-based UI for managing heartbeat monitoring rules has been added. Users can now view a list of existing heartbeat rules, each showing the rule ID, project configuration, metric configuration, and an alert status toggle. A new 'Add/Edit' page allows users to define rule conditions by specifying project lines and metrics, with support for multiple metric conditions and an alert enable/disable switch. This provides a dedicated interface for configuring and maintaining heartbeat alert rules.

cat-home/src/main/webapp/jsp/system/heartbeat · high confidence

New log view pages for report logs

The logview JSP templates (logview.jsp, logview\_detail.jsp, logview\_no\_header.jsp) have been added to the report module. These pages render log data using the existing Cat report context, payload, and model beans, providing a text or graph view of log messages and handling archived message states.

cat-home/src/main/webapp/jsp/report/logview · medium confidence

New login page handler and supporting classes

The login page now uses a new \Action\ enum, \Handler\, \Context\, \Model\, \Payload\, and \JspViewer\ to manage the login and logout actions. The \Handler\ processes inbound login/logout requests, validates credentials via \SigninService\, and renders the login JSP. A \LoginAction\ annotation is introduced to mark methods that require login. The \JspViewer\ maps actions to JSP files, including \/jsp/system/login.jsp\ for login and the home page view for logout. SPI interfaces (\IContext\, \ICredential\, \ISession\, \ISessionManager\, \ISigninService\, \IToken\, \ITokenBuilder\, \ITokenManager\) are added to support the login functionality.

cat-home/src/main/java/com/dianping/cat/system/page/login · high confidence

New message analysis pipeline for real-time processing

The \cat-core\ module introduces a new message analysis pipeline to handle real-time data processing. This includes a \MessageHandler\ to receive incoming \MessageTree\ objects, a \MessageConsumer\ (implemented by \RealtimeConsumer\) that routes messages into time-based \Period\s, and a \MessageAnalyzerManager\ that manages the lifecycle of \MessageAnalyzer\ instances. The pipeline uses a \DefaultMessageQueue\ to buffer messages and \PeriodTask\ threads to process them, enabling the system to perform continuous, time-windowed analysis of incoming telemetry data.

cat-core/src/main/java/com/dianping/cat/analysis · high confidence

New message interfaces for tracing, metrics, and bulk operations

The \cat-client\ module introduces a comprehensive set of new interfaces in the \com.dianping.cat.message\ package, including \BulkEvent\, \BulkTransaction\, \ForkableTransaction\, \ForkedTransaction\, \Metric\, \MetricBag\, \Trace\, and \LogSegment\. These additions expand the client's ability to handle complex distributed tracing scenarios, such as forking transactions across threads, aggregating metrics, and managing bulk events, thereby enhancing the depth and granularity of application monitoring and performance data collection.

cat-client/src/main/java/com/dianping/cat/message · high confidence

New message storage interfaces for Hadoop integration

A new set of interfaces has been introduced in the \cat-hadoop\ module to support message storage and retrieval. This includes \Block\, \Bucket\, \Index\, \MessageDumper\, \MessageFinder\, \MessageProcessor\, \PathBuilder\, \TokenMapping\, and their respective managers (\BlockDumperManager\, \BucketManager\, \IndexManager\, \MessageDumperManager\, \MessageFinderManager\, \TokenMappingManager\). These interfaces define the contract for storing, finding, and processing messages, as well as managing file paths and token mappings. The \FileType\ enum defines file extensions for mapping, token, index, and data files. This change provides the foundational API for the CAT message storage system.

cat-hadoop/src/main/java/org/unidal/cat/message/storage · high confidence

New metric graph creator and data extraction components

The metric graphing subsystem in cat-home now includes an abstract base class (AbstractGraphCreator) that handles time-window data aggregation, flow-metric unit conversion, and chart data merging, alongside a DataExtractor interface and an Operation class for parsing and evaluating mathematical expressions used in metric calculations.

cat-home/src/main/java/com/dianping/cat/report/graph/metric · high confidence

New native and plain-text message encoders for messages and metrics

The \cat-client\ library introduces a new encoding architecture for serializing \MessageTree\ and \MetricBag\ objects. Two new interfaces, \MessageTreeEncoder\ and \MetricBagEncoder\, define the contract for serialization. Four new implementations are provided: \NativeMessageTreeEncoder\ and \NativeMetricBagEncoder\ use a compact, binary-friendly format (IDs 'NT1' and 'NM1' respectively), while \PlainTextMessageTreeEncoder\ and \PlainTextMetricBagEncoder\ generate human-readable, tab-separated text (IDs 'PT1' and 'PB1'). This change separates the encoding logic for message trees and metric bags, allowing the system to support both binary and plain-text serialization formats.

cat-client/src/main/java/com/dianping/cat/message/encoder · high confidence

New problem analysis and reporting framework

The system introduces a new problem analysis pipeline that processes and aggregates error, heartbeat, and long-execution events (such as long SQL, URL, service, cache, and call durations) into structured reports. This includes new handlers for default and long-execution problems, a central analyzer to process message trees, and a delegate to manage report lifecycle and merging, enabling users to view detailed breakdowns of system issues and performance bottlenecks.

cat-consumer/src/main/java/com/dianping/cat/consumer/problem · high confidence

New problem report page with group and thread-level analysis

A new problem report page has been added to the CAT home interface, introducing a dedicated handler, model, and JSP templates for viewing and analyzing application problems. Users can now view problem statistics, drill down into specific groups and threads, and access hourly and historical reports. The implementation includes new Java classes (Action, Context, Handler, Model, Payload, etc.) that support features like group-based filtering, thread-level details, and configurable thresholds for URL, SQL, and service calls.

cat-home/src/main/java/com/dianping/cat/report/page/problem · high confidence

New problem report views and history graphs

The problem report page now includes detailed views for individual problems, grouped problems, and historical trends. Users can now view problem details, group statistics, and interactive line/pie charts for error trends and distributions. The report also supports filtering by long URL, SQL, service, cache, and call thresholds, and includes a thread-level breakdown for deeper analysis.

cat-home/src/main/webapp/jsp/report/problem · high confidence

New project management interface with CMDB integration

A new project management interface has been introduced, providing forms to add and update project details including business unit (BU), product line, and level from CMDB. The project update form now includes fields for the project owner, email, and phone number, and features a delete function. The interface also supports searching for projects and displays operation status messages to the user.

cat-home/src/main/webapp/jsp/system/project · high confidence

New report builders and graph creators for cross, heartbeat, matrix, and problem reports

The system now includes new task builders and graph creators for cross, heartbeat, matrix, and problem reports. Specifically, CrossReportBuilder, HeartbeatReportBuilder, MatrixReportBuilder, and ProblemReportBuilder have been added to handle daily, weekly, and monthly report generation. Additionally, supporting classes like HeartbeatDailyMerger, HistoryProblemReportMerger, and various graph creators (e.g., ProblemReportDailyGraphCreator, ProblemReportHourlyGraphCreator) have been introduced to process and format report data. These changes enable the generation and storage of these specific report types.

(repo-wide) · high confidence

New report builders for heavy, jar, client, service, and utilization statistics

Added new task builders and associated visitor/merger classes to generate periodic reports (daily, hourly, monthly, weekly) for heavy, jar, client, service, and utilization metrics. Each builder implements the TaskBuilder interface to construct and persist report data, leveraging specific services (e.g., HeavyReportService, JarReportService) and domain-specific visitors (e.g., MatrixReportVisitor, HeartbeatReportVisitor) to aggregate and merge raw data into structured report entities.

cat-home/src/main/java/com/dianping/cat/report/page/statistics/task · high confidence

New report component configurators for all report types

The report module now registers explicit component configurators for each report domain (Dependency, Event, Heartbeat, Metric, Offline, Problem, Report, Storage, and Transaction). Each configurator defines the service, builder, and alerting components for its domain, establishing the internal wiring for report generation and alerting.

cat-home/src/main/java/com/dianping/cat/build/report · high confidence

New router page and API endpoints for domain/IP routing configuration

The system now includes a new router page and associated API endpoints that allow users to query and manage router configurations. The implementation introduces a new MVC structure (Action, Context, Handler, Model, Payload, JspFile, JspViewer) to handle router-related requests, supporting actions for API, JSON, BUILD, and MODEL responses. This enables users to retrieve router information, update configurations, and access JSON-based routing data, effectively adding a new capability for managing domain and IP-based routing within the CAT home interface.

cat-home/src/main/java/com/dianping/cat/system/page/router · high confidence

New status collection and extension mechanism in the CAT client

The CAT client now includes a new status collection system that gathers system-level metrics such as memory, disk, and garbage collection information, and supports pluggable status extensions. This is enabled by new classes in the \com.dianping.cat.status\ package: \StatusInfoCollector\ handles the actual data collection, \StatusUpdateTask\ schedules the periodic status updates, \StatusExtension\ and \StatusExtensionRegister\ provide an interface and registry for custom status extensions, and \MessageStatistics\ along with its default implementation \DefaultMessageStatistics\ track message-related statistics.

cat-client/src/main/java/com/dianping/cat/status · high confidence

New storage report dashboard and history views

Added new JSP views for the storage report feature, including a main dashboard (dashboard.jsp) that displays storage status, alerts, and alteration monitoring, a history view (historyStorage.jsp) for historical operation data, an hourly graphs view (hourlyGraphs.jsp) for visualizing error, response time, and operation trends, and a time navigation component (timeNavTab.jsp). These files implement the frontend for monitoring and analyzing storage-related metrics and changes.

cat-home/src/main/webapp/jsp/report/storage · high confidence

New storage report page with hourly, history, and dashboard views

The storage report page now supports four distinct views: an hourly storage view, an hourly graph view, a history storage report, and a dashboard. The implementation introduces a new MVC structure with dedicated Action, Context, Model, and Handler classes, along with JSP file mappings and a JSP viewer to render the corresponding pages. The handler processes storage data, including alert information, alterations, and department configurations, and builds line charts for count, average, error, and long metrics. Data transformation is handled by specialized visitors and merge helpers that aggregate storage metrics across domains and machines, and filter operations.

cat-home/src/main/java/com/dianping/cat/report/page/storage · high confidence

New summary report page with detail modal

The summary report view was restructured to include a main listing page (summary.jsp) that displays a date-time picker and form for querying summary data. Clicking a detail link opens a modal dialog (detail.jsp) via AJAX to show the summary content. This change introduces the JSP templates for the summary report feature.

cat-home/src/main/webapp/jsp/report/summary · high confidence

New top-level error analysis and reporting for CAT

A new 'top' report type has been introduced to the CAT monitoring system, enabling the aggregation and storage of error metrics. This includes a TopAnalyzer to process message trees and identify errors, a TopDelegate to handle serialization (XML and binary) and report merging, and a TopReportMerger to combine error counts across segments, domains, and machines. This provides users with a dedicated view of top-level errors and their distribution.

cat-consumer/src/main/java/com/dianping/cat/consumer/top · high confidence

New topology graph configuration pages for edges and nodes

Added new JSP pages for managing topology graph configurations, including edge and node settings. Users can now configure edge properties such as call type (PigeonCall or Database), project names, and various thresholds (min count, warning/error thresholds, response times). Node configurations allow setting similar thresholds for projects, with specific handling for Exception types. The interface provides forms for adding and editing these configurations, along with list views to manage existing settings.

cat-home/src/main/webapp/jsp/system/topology · high confidence

New transaction alerting system with configurable rules

A new transaction alerting system has been introduced, allowing users to configure rules for transaction metrics such as failure ratio, maximum values, and counts. The system includes a core alerting engine (TransactionAlert) that processes transaction data against defined conditions, a configuration manager (TransactionRuleConfigManager) to handle rule definitions, and a decorator (TransactionDecorator) to format alert notifications. This enables proactive monitoring and alerting for transaction performance and errors.

cat-home/src/main/java/com/dianping/cat/report/alert/transaction · high confidence

New transaction report pages and graphs

The transaction report interface has been restructured with new JSP templates for the main transaction view, group-based reporting, and historical analysis. The update introduces dedicated views for transaction history (\transactionHistoryReport.jsp\, \transactionHistoryGroupReport.jsp\) and their corresponding graph visualizations (\transactionHistoryGraphs.jsp\). Additionally, the primary \transaction.jsp\ now includes a pie chart for transaction events and statistics, while \transactionGraphs.jsp\ provides distribution charts. These changes enhance the user's ability to filter, sort, and visualize transaction metrics across different groupings and time periods.

cat-home/src/main/webapp/jsp/report/transaction · high confidence

New transaction report transformation and merging utilities

Added new classes in the transaction report transform package to handle data aggregation and visualization preparation. This includes \AllMachineMerger\ and \AllNameMerger\ to consolidate transaction data across all machines and names, a \TransactionMergeHelper\ to orchestrate the merging process, and specific visitors like \DistributionDetailVisitor\ and \PieGraphChartVisitor\ to extract distribution details and pie chart data. Additionally, \TransactionTrendGraphBuilder\ was introduced to construct trend line charts for transaction metrics over time.

cat-home/src/main/java/com/dianping/cat/report/page/transaction/transform · high confidence

Overload monitor page implementation

The overload monitor page is now implemented with a new MVC structure (Action, Context, Handler, JspFile, JspViewer, Model, Payload) in the cat-home module, enabling users to view overload reports with configurable time ranges and display options.

cat-home/src/main/java/com/dianping/cat/report/page/overload · high confidence

Updated Cat Client documentation and added Go v2 submodule

The lib directory now includes updated English and Chinese README files that clarify message types (Transaction, Event, Heartbeat, Metric) and properties (type, name, status, data, timestamp, duration, durationStart) for the Cat Client. Additionally, a new Go v2 submodule has been added to the lib directory, indicating support for Go version 2 of the client library.

lib · high confidence

Architecture

Centralized component configuration for consumer modules

A new \ComponentsConfigurator\ class has been introduced in the \cat-consumer\ module to centralize the registration of analyzer, delegate, and report manager components. This change consolidates the dependency injection setup for various consumer features—including cross-domain, dependency, dump, event, heartbeat, matrix, and state analysis—ensuring that each analyzer is correctly wired with its required dependencies such as \ReportManager\, \ReportBucketManager\, and \HourlyReportDao\. This structural update supports the broader refactoring of the consumer module to enable sequential initialization and improve maintainability.

cat-consumer/src/main/java/com/dianping/cat/consumer/build · high confidence

Behavioural changes

Added client configuration schema and default client config

Introduced a new XML schema (config.xsd) that defines the structure for CAT configuration files, including elements for base log directories, server lists, domains, bindings, and properties. Alongside the schema, a default client.xml configuration file was added, specifying the client mode and a default domain of 'Cat'. This change provides the structural definition and a baseline configuration for the client-side of the application.

cat-home/src/main/resources/META-INF/cat · high confidence

Added environment configuration and index redirect for CAT home

The CAT home module now includes an 'appenv' configuration file that defines the deployment environment as 'product' and specifies the ZooKeeper server addresses. Additionally, an 'index.html' file has been added to the webapp root, which automatically redirects users to the '/cat/r' path.

cat-home/src/main/webapp · medium confidence

CAT client API and bootstrap logic refactored into cat-client module

The CAT client library has been refactored to separate client-side concerns from the core. A new \cat-client\ module introduces a streamlined \Cat\ entry point and a \CatBootstrap\ for initialization, supporting configuration via \ClientConfig\ model, XML files, or domain/server strings. The public API is now guarded by an \@API\ annotation system (STABLE, EXPERIMENTAL, INTERNAL) to indicate stability levels. Additionally, message size control and truncation logic has been extracted into a new \MessageSizeControl\ component to manage transaction depth and prevent excessive memory usage.

cat-client/src/main/java/com/dianping/cat · high confidence

Centralized database and component configuration in cat-core

The database configuration logic has been moved from cat-consumer to cat-core, introducing CatCoreDatabaseConfigurator and CatDatabaseConfigurator to handle JDBC resource setup for the 'cat' and 'cat-core' schemas. Additionally, the ComponentsConfigurator in cat-core now explicitly registers core service components (such as ServerConfigManager, IpService, and TcpSocketReceiver) and storage components (LocalReportBucket, LocalMessageBucket), consolidating the initialization of these dependencies within the cat-core module.

cat-core/src/main/java/com/dianping/cat/build · high confidence

Introduce cached router configuration service

The system now uses a cached router configuration service (CachedRouterConfigService) that periodically refreshes and caches the latest router configuration. This service registers a background task to keep the cached configuration up-to-date, improving performance by avoiding repeated database queries for router config data.

cat-home/src/main/java/com/dianping/cat/system/page/router/service · medium confidence

Introduce new auto-generated configuration model classes for client settings

The client configuration model has been migrated to a new set of auto-generated Java classes in the \com.dianping.cat.configuration.model\ package. This includes new entity classes for \ClientConfig\, \Domain\, \Host\, \Property\, and \Server\, along with supporting interfaces (\IEntity\, \IVisitor\), a constants class, and a helper for XML serialization/deserialization. Users relying on the previous configuration model will need to update their code to use these new classes and their associated transformation utilities.

cat-client/src/main/java/com/dianping/cat/configuration/model · high confidence

Introduce new configuration model and network interface management

The client now uses a new configuration model, introducing interfaces like ConfigureManager, ConfigureProperty, and ConfigureSource to manage application settings. Additionally, a new NetworkInterfaceManager has been added to handle local IP address resolution, addressing previous issues with IP detection.

cat-client/src/main/java/com/dianping/cat/configuration · medium confidence

Introduced new message context implementations for metrics and traces

Added new classes to manage message context in the CAT client: DefaultMetricContext and DefaultTraceContext implement the new MetricContext and TraceContext interfaces respectively, enabling separate handling of metric and trace message trees. The TraceContext implementation now maintains a stack of transactions and a message tree to properly handle nested transactions and forked traces, while the MetricContext provides a simpler mechanism for adding metrics directly to the pipeline. A MessageIdFactory has been introduced to generate unique message IDs, and helper classes (MetricContextHelper, TraceContextHelper) manage initialization and thread-local context storage.

cat-client/src/main/java/com/dianping/cat/message/context · medium confidence

Introduces a new message processing pipeline

The client now processes messages through a new pipeline architecture defined in the \com.dianping.cat.message.pipeline\ package. This includes a \DefaultMessagePipeline\ that manages a chain of \MessageHandler\ components, each with a specific order. New handlers have been added to the pipeline: \MessageTreeSetHeader\ (order 100) to populate message metadata, \MessageTreeSampler\ (order 200) to handle blocking, \MetricAggregator\ (order 210) to aggregate metrics, \MessageSerializer\ (order 300) to encode messages, and \MessageConveyer\ (order 400) to queue messages for sending. This change restructures how messages are handled and sent from the client.

cat-client/src/main/java/com/dianping/cat/message/pipeline · high confidence

Introduces configurable authentication modes (LDAP, admin password, or no-op) for the login service

The login service now supports multiple authentication backends, allowing administrators to choose between LDAP, a simple admin password, or no authentication. The \SessionManager\ selects the authentication strategy based on the \CAT\_AUTH\_TYPE\ property (defaulting to \ADMIN\_PWD\), which can be set via environment variables or system properties. For LDAP, it uses \CAT\_LDAP\_URL\, \CAT\_LDAP\_USER\_DN\_TPL\, and \CAT\_LDAP\_USER\_DISPLAY\_ATTR\ to connect to an LDAP server. For admin password mode, it validates against \CAT\_ADMIN\_PWD\. A new \CatPropertyProvider\ interface and \DefaultCatPropertyProvider\ implementation handle property resolution from system properties and environment variables.

cat-home/src/main/java/com/dianping/cat/system/page/login/service · high confidence

New HDFS storage backend for CAT messages

The HDFS storage implementation for CAT messages has been completely rewritten. The new \HdfsBucket\ and \HdfsIndex\ classes now store and retrieve message data and indices directly from HDFS, replacing the previous mechanism. This change introduces new components including \HdfsBucketManager\, \HdfsIndexManager\, \HdfsFileBuilder\, and \HdfsTokenMapping\ to manage HDFS file paths, index lookups, and token mappings, enabling the system to store and retrieve message trees from Hadoop Distributed File System.

cat-hadoop/src/main/java/org/unidal/cat/message/storage/hdfs · high confidence

New MVC model and payload classes for report navigation and data handling

The cat-core module introduces new classes in the \com.dianping.cat.mvc\ package to support report data handling and navigation. \AbstractReportModel\ and \AbstractReportPayload\ provide the base structures for report actions and page contexts, managing date, domain, and IP address data. \PayloadNormalizer\ coordinates the normalization of these payloads, handling date calculations and history navigation logic. \HistoryNav\ and \UrlNav\ enums define the available time ranges for navigating between different periods (day, week, month) and specific hour/day offsets. \ApiPayload\ defines the structure for API request parameters. These changes refactor how report data is passed and processed within the MVC framework.

cat-core/src/main/java/com/dianping/cat/mvc · medium confidence

New SPI for message tree serialization and management

The message handling layer in cat-core has been refactored to introduce a new Service Provider Interface (SPI) for message tree operations. This includes a new MessageTree interface and a DefaultMessageTree implementation that manages message, event, transaction, and metric collections. Additionally, a MessageCodec interface and a BufReleaseHelper utility class have been added to handle the encoding and decoding of message trees to and from Netty ByteBufs, facilitating more robust message serialization and buffer management.

cat-core/src/main/java/com/dianping/cat/message/spi · high confidence

New build-time component configuration for the CAT home module

The CAT home module now includes a set of new Java classes in the \com.dianping.cat.build\ package that generate the application's component wiring at build time. Specifically, \ComponentsConfigurator\ orchestrates the registration of report reload tasks, table providers, and web modules, while \CatDatabaseConfigurator\ handles JDBC resource configuration, \HomeAlarmComponentConfigurator\ registers alarm-related components, and \WebComponentConfigurator\ defines the web module registry. This refactors how the home application assembles its services and UI components.

cat-home/src/main/java/com/dianping/cat/build · high confidence

New event report services for CAT 3.0

The event reporting subsystem has been refactored into a new set of service classes in the \cat-home\ module, introducing \CompositeEventService\, \EventReportService\, \HistoricalEventService\, \LocalEventService\, and \RemoteEventService\. These classes handle the aggregation, storage, and retrieval of event reports, supporting both local and remote data sources. This change aligns the event reporting architecture with the broader CAT 3.0 update, providing a more modular and maintainable structure for generating event reports.

cat-home/src/main/java/com/dianping/cat/report/page/event/service · medium confidence

New log view service implementations for message retrieval

The log view feature now uses newly introduced service classes to handle message data. LocalMessageService and HistoricalMessageService provide the core logic for fetching and formatting message trees (as HTML or waterfall views) from local and HDFS storage respectively. RemoteLogViewService and CompositeLogViewService handle remote fetching and result merging. This change restructures how log view data is retrieved and presented to the user.

cat-home/src/main/java/com/dianping/cat/report/page/logview/service · high confidence

New message codec and formatting logic

The message handling in cat-core has been refactored with new components: a CodecHandler that decodes messages based on header hints (PT1, NT1, NM1) using specific codecs; a MessageTreeFormat class that normalizes transaction names (e.g., URL paths and upload metrics) and handles duration truncation; and a PathBuilder interface with a DefaultPathBuilder implementation that generates logview and report file paths using date-based directory structures.

cat-core/src/main/java/com/dianping/cat/message · high confidence

New system module and page definitions for CAT administration

The system module has been refactored to include new page definitions and handlers for login, configuration, plugins, routing, projects, applications, business units, and permissions. This introduces a structured way to manage system-level settings and user authentication within the CAT home interface.

cat-home/src/main/java/com/dianping/cat/system · high confidence

New system monitoring report pages and updated datetimepicker configuration

The report section now includes new JSP templates for browser, business, external error, model, monitor, overload, server, and system monitoring. The system monitoring page (system.jsp) has been updated to use a minimized data model and includes JavaScript logic to handle IP address selection and domain search. Additionally, the datetimepicker configuration has been modified to set the step to 30 minutes and apply a new style.

cat-home/src/main/webapp/jsp/report · high confidence

Overload report page refactored with improved date picker and report filtering

The overload report JSP has been refactored to improve the user experience for viewing system overload reports. The date/time pickers for start and end times now use a 30-minute step interval, making it easier to select precise time ranges. The page also includes JavaScript logic to toggle the visibility of different report types (hourly, daily, weekly, monthly) via button clicks, allowing users to filter the report table content dynamically. Additionally, the page supports a full-screen mode that hides the navigation bar and footer, and the layout has been simplified to present a cleaner table of reports with their respective metadata.

cat-home/src/main/webapp/jsp/report/overload · high confidence

Redesign of the alert monitoring interface with modal details and type filtering

The alert monitoring page has been redesigned to improve usability and information density. The alert details are now displayed in interactive modals, allowing users to view specific alert content without leaving the main list. Additionally, the interface now supports filtering alerts by specific types (e.g., business, network, system, exception, heartbeat, third-party, front-end, app, web, Zabbix, database, and transaction), with a 'Select All' option for quick filtering. The date-time picker has also been updated to use a 30-minute step interval.

cat-home/src/main/webapp/jsp/report/alert · high confidence

Redesigned CAT home page and navigation structure

The CAT home page and sidebar navigation have been restructured. The new \home.tag\ provides a simplified sidebar with links to Project Home, Release Notes, and Plugin Extensions, while the \application.tag\ introduces a new main navigation menu with sections for Dashboard, Transaction, Event, Problem, Heartbeat, Cross, Business, and State reports. Additionally, new tag files (\base.tag\, \config.tag\, \historyReport.tag\, \hourlyReport.tag\, \historyStorageReport.tag\, and \hourlyStorageReport.tag\) have been added to support the updated UI layout, search functionality, and report display templates.

cat-home/src/main/webapp/WEB-INF/tags · high confidence

Redesigned Top Report page with new layout and styling

The Top Report page has been refactored to use a new layout structure. The main view now includes a time navigation bar (timeNav.jsp) for selecting time intervals, and the metric data is rendered via a separate template (topMetric.jsp) that displays error counts with color-coded rows (red for critical, yellow for warnings) and tooltips. The full-screen mode has been restructured to load specific CSS/JS assets and display the report in a full-screen container. The previous implementation has been replaced with this new modular JSP structure.

cat-home/src/main/webapp/jsp/report/top · medium confidence

Redesigned the CAT State Report and State History pages

The state report and state history JSP templates have been completely rewritten to improve the display of system metrics. The state report now presents key performance indicators—such as total messages, lost messages, average TPS, and compression stats—in a structured table with inline graph links. The state history page has been updated to show similar metrics over time, including message loss, block storage, and delay averages. These changes provide a clearer, more consistent view of system health and message processing status.

cat-home/src/main/webapp/jsp/report/state · high confidence

Refactor transaction report page into a new MVC structure

The transaction report page has been refactored into a new MVC (Model-View-Controller) structure. This introduces a new \Action\ enum to define page actions, a \Context\ and \Model\ for state and data, and a \Handler\ to process requests. The view layer is now split between \JspViewer\ and \XmlViewer\ for different response formats. This change reorganizes how transaction reports are generated and displayed, likely improving maintainability and separation of concerns within the CAT home module.

cat-home/src/main/java/com/dianping/cat/report/page/transaction · medium confidence

Refactored alert summary generation into a new builder architecture

The alert summary generation logic has been refactored into a new set of builder classes within the \cat-home\ module. This includes \AlertInfoBuilder\ for constructing alert data, \AlertSummaryVisitor\ for visiting and transforming the summary, and specific builders like \AlterationSummaryBuilder\, \FailureSummaryBuilder\, and \RelatedSummaryBuilder\ that each handle distinct aspects of the alert summary (alterations, failures, and related dependencies). The refactoring introduces a template-based HTML generation approach using FreeMarker, moving away from the previous implementation.

cat-home/src/main/java/com/dianping/cat/report/alert/summary/build · medium confidence

Refactored home page into new MVC components

The home page functionality has been refactored into a new set of MVC components (Action, Context, Handler, JspFile, JspViewer, Model, and Payload). This restructuring introduces a \threadDump\ action that allows users to view a sorted list of all active threads, and a \checkpoint\ action that triggers a message consumer checkpoint. The default page behavior and navigation have been updated to align with this new structure.

cat-home/src/main/java/com/dianping/cat/report/page/home · high confidence

Refactored log view page into new MVC components

The log view page in the CAT home module has been refactored to use a new MVC structure. This introduces dedicated classes for handling the request (Handler), managing state (Context, Model, Payload), and rendering the view (JspViewer, JspFile). The change also adds support for a 'waterfall' view mode and allows the header to be hidden, providing more control over the log view display.

cat-home/src/main/java/com/dianping/cat/report/page/logview · high confidence

Refactored report service architecture with new model service framework

The report service layer has been refactored to introduce a new model-based service architecture. This includes the addition of \ModelService\ and \ModelResponse\ interfaces and classes to standardize request/response handling, alongside new base classes (\BaseCompositeModelService\, \BaseHistoricalModelService\, \BaseRemoteModelService\, \LocalModelService\) that separate concerns between local and remote report generation. The \AbstractReportService\ has been updated to support these new models, and a \ModelPeriod\ enum was added to distinguish between current, last, and historical data queries.

cat-core/src/main/java/com/dianping/cat/report/service · high confidence

Refactored the state report page with a new MVC structure

The state report page in the Cat home module has been refactored to use a new MVC (Model-View-Controller) architecture. This introduces a set of new classes including \Action\, \Context\, \Handler\, \Model\, \Payload\, and \JspFile\ to manage the state report page's logic, data, and view mapping. The \Handler\ now coordinates with \StateReportService\, \StateGraphBuilder\, and \StateBuilder\ to fetch and process state report data, while \JspViewer\ maps actions to specific JSP files. This change reorganizes how the state report page handles requests and renders responses, potentially improving maintainability and separation of concerns.

(repo-wide) · high confidence

Refactored transaction report processing with new helper classes

The transaction report processing logic has been refactored into dedicated helper classes: TransactionAnalyzer now delegates report building, parsing, and merging to TransactionDelegate, TransactionReportMerger, and TransactionStatisticsComputer. This change introduces new classes for computing statistics (e.g., line values for percentiles), merging reports, and handling serialization, while removing the previous inline implementation within the analyzer.

cat-consumer/src/main/java/com/dianping/cat/consumer/transaction · high confidence

Refactored transaction report service architecture

The transaction reporting logic has been restructured into a new set of specialized service classes: CompositeTransactionService, HistoricalTransactionService, LocalTransactionService, RemoteTransactionService, and TransactionReportService. This change introduces a cleaner separation of concerns for fetching, merging, and filtering transaction reports, replacing the previous monolithic implementation with distinct handlers for local, remote, and historical data sources.

cat-home/src/main/java/com/dianping/cat/report/page/transaction/service · medium confidence

Rewrite of the CAT client message model with new internal implementations

The internal message model in the CAT client has been completely rewritten. This introduces new concrete implementations for core message types, including DefaultEvent, DefaultTransaction, DefaultForkableTransaction, DefaultForkedTransaction, DefaultMetric, and DefaultMessageTree. The changes also add support for forked transactions and bulk metrics, and introduce a new AbstractMessage base class to standardize message handling.

cat-client/src/main/java/com/dianping/cat/message/internal · high confidence

Rewrite of the message storage and dumper subsystem

The internal message storage and dumper components have been completely rewritten. This introduces new implementations for message processing, block dumping, and local file-based storage, including \DefaultMessageProcessor\, \DefaultBlockDumper\, and \LocalBucket\. The changes also add support for multiple compression types (GZIP, DEFLATE, SNAPPY) and a byte buffer cache to improve message handling and storage efficiency.

cat-hadoop/src/main/java/org/unidal/cat/message/storage/internals · high confidence

Rewritten message storage with new block-based architecture

The message storage subsystem has been completely rewritten to use a new block-based storage model. This introduces a new \LocalMessageBucket\ implementation that manages message blocks via dedicated writer and reader classes (\MessageBlockWriter\, \MessageBlockReader\) and a \MessageBlock\ data structure, alongside a \MessageBucketManager\ interface to coordinate storage operations.

cat-core/src/main/java/com/dianping/cat/message/storage · high confidence

Fixes

Added default implementation for CatPropertyProvider

A new service provider file was added at cat-home/src/main/resources/META-INF/services/com.dianping.cat.system.page.login.service.CatPropertyProvider, registering com.dianping.cat.system.page.login.service.DefaultCatPropertyProvider as the default implementation. This change ensures the system can locate and use the default property provider for login-related operations.

cat-home/src/main/resources/META-INF/services · low confidence

Test coverage

Added concurrent storage tests for ReportBucket; Added demo test cases for CAT message and metric monitoring; Added heartbeat test resources; Added performance tests for CAT consumer analyzers; Added test classes for alert summary HTML generation; Added test for external error reporting; Added test infrastructure for message and metric assertions; Added test resources for ServiceLoader component factory; Added test resources for consumer analyzers; Added test resources for transaction report analysis; Added unit test for StateReportMerger; Added unit tests for CAT client component lifecycle and context; Added unit tests for CAT event report tasks; Added unit tests for CAT message and storage components; Added unit tests for CAT report analyzers; Added unit tests for CatFilter and Splitters; Added unit tests for ClientTransportManager; Added unit tests for CompositeFormat; Added unit tests for HeavyReportBuilder; Added unit tests for JarReportBuilder; Added unit tests for LocalReportBucket; Added unit tests for MessageBlock serialization; Added unit tests for MockMessageBuilder; Added unit tests for ServerStatisticManager; Added unit tests for TaskManager; Added unit tests for TopAnalyzer and TopReportMerger; Added unit tests for ValueTranslater; Added unit tests for alert configuration validation; Added unit tests for alert sender components; Added unit tests for cached and project report builders; Added unit tests for core service and message components; Added unit tests for cross-domain analysis and reporting; Added unit tests for cross-report merging and message tree handling; Added unit tests for heartbeat report building and daily merging; Added unit tests for message pipeline and metric aggregation; Added unit tests for problem report merging and trend graph building; Added unit tests for report DAOs; Added unit tests for report task services; Added unit tests for server configuration and problem report builders; Added unit tests for state analysis and report merging; Added unit tests for task-related components; Added unit tests for the CAT consumer event analysis and merging logic; Added unit tests for the alerting subsystem; Added unit tests for the matrix consumer module; Added unit tests for the problem analysis and reporting components; Added unit tests for transaction analysis and reporting; Added unit tests for transaction and event report components; Added unit tests for utilization report building and merging; Consolidated test suite and added new test utilities; Consolidated test suite and test utilities for the consumer module; Consolidated test suite for cat-core; Expanded unit test coverage for the cat-client module.

Dependencies

Add CAT .NET client and integration modules

The repository now includes build manifests for the CAT .NET client library (Cat.Net and CatClient projects) and several integration modules, including Apache Dubbo, Elasticsearch/Jetty, Java agent client/plugin, Spring MVC URL rewriting, and a Python-based alerting tool. These additions provide C\# and Python tooling alongside existing Java-based integrations, expanding the ecosystem for monitoring and alerting.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 45 → 39 (-6.1)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 38 → 34 (-4.4)
  • Architecture 97 → 97 (+0.0)
  • Maturity 45 → 45 (+0.0)
  • Readiness 41 → 28 (-12.8)
  • Security 68 → 68 (-0.0)
  • Domain Modelling 77 (new)

Resolved (340)

  • Dependency hygiene not measured — no packages were read
  • Duplicated block (10 lines × 11) (cat-home/src/main/java/com/dianping/cat/report/task/reload/impl/BusinessReportReloader.java)
  • Duplicated block (10 lines × 2) (cat-alarm/src/main/java/com/dianping/cat/alarm/spi/decorator/RuleFTLDecorator.java)
  • Duplicated block (10 lines × 2) (cat-alarm/src/main/java/com/dianping/cat/alarm/spi/rule/RuleType.java)
  • Duplicated block (10 lines × 2) (cat-client/src/main/java/com/dianping/cat/support/log4j/CatAppender.java)
  • Duplicated block (10 lines × 2) (cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventAnalyzer.java)
  • Duplicated block (10 lines × 2) (cat-consumer/src/main/java/com/dianping/cat/consumer/storage/builder/StorageRPCBuilder.java)
  • Duplicated block (10 lines × 2) (cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionStatisticsComputer.java)
  • Duplicated block (10 lines × 2) (cat-core/src/main/java/com/dianping/cat/message/MessageTreeFormat.java)
  • Duplicated block (10 lines × 2) (cat-core/src/main/java/com/dianping/cat/message/codec/NativeMessageCodec.java)
  • Duplicated block (10 lines × 2) (cat-core/src/main/java/com/dianping/cat/message/codec/PlainTextMessageCodec.java)
  • Duplicated block (10 lines × 2) (cat-core/src/main/java/com/dianping/cat/message/codec/PlainTextMessageCodec.java)
  • Duplicated block (10 lines × 2) (cat-core/src/main/java/com/dianping/cat/message/codec/WaterfallMessageCodec.java)
  • Duplicated block (10 lines × 2) (cat-core/src/main/java/com/dianping/cat/message/storage/MessageBlockReader.java)
  • Duplicated block (10 lines × 2) (cat-home/src/main/java/com/dianping/cat/report/ReportContext.java)
  • Duplicated block (10 lines × 2) (cat-home/src/main/java/com/dianping/cat/report/alert/business/BusinessAlert.java)
  • Duplicated block (10 lines × 2) (cat-home/src/main/java/com/dianping/cat/report/alert/business/BusinessAlert.java)
  • Duplicated block (10 lines × 2) (cat-home/src/main/java/com/dianping/cat/report/alert/event/EventAlert.java)
  • Duplicated block (10 lines × 2) (cat-home/src/main/java/com/dianping/cat/report/alert/event/EventDecorator.java)
  • Duplicated block (10 lines × 2) (cat-home/src/main/java/com/dianping/cat/report/page/dependency/TopMetric.java)
  • …and 320 more

New (2564)

  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-c_cpp.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-coldfusion.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-csharp.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-css.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-curly.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-dart.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-django.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-dockerfile.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-ejs.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-glsl.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-golang.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-groovy.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-handlebars.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-haxe.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-html.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-html_ruby.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-jack.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-java.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-javascript.js)
  • (anonymous) (cognitive 128) (cat-home/src/main/webapp/assets/js/editor/mode-json.js)
  • …and 2544 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

dianping/cat was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 25 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e815e74d4c2dd74edac831241f1253fcc7d25381 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-f917f263222d.