Skip to content

Commit a117f24

Browse files
committed
Update to version 1.14.6
1 parent bf2ecbf commit a117f24

File tree

4 files changed

+34
-50
lines changed

4 files changed

+34
-50
lines changed

Cargo.toml

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.foundation>"]
33
edition = "2021"
44
name = "solana-geyser-plugin-postgres"
55
description = "The Solana AccountsDb plugin for PostgreSQL database."
6-
version = "1.14.3"
6+
version = "1.14.6"
77
repository = "https://github.com/solana-labs/solana"
88
license = "Apache-2.0"
99
homepage = "https://solana.com/"
@@ -25,13 +25,13 @@ postgres-openssl = { version = "0.5.0"}
2525
serde = "1.0.145"
2626
serde_derive = "1.0.145"
2727
serde_json = "1.0.85"
28-
solana-geyser-plugin-interface = { version = "=1.14.3" }
29-
solana-logger = { version = "=1.14.3" }
30-
solana-measure = { version = "=1.14.3" }
31-
solana-metrics = { version = "=1.14.3" }
32-
solana-runtime = { version = "=1.14.3" }
33-
solana-sdk = { version = "=1.14.3" }
34-
solana-transaction-status = { version = "=1.14.3" }
28+
solana-geyser-plugin-interface = { version = "=1.14.6" }
29+
solana-logger = { version = "=1.14.6" }
30+
solana-measure = { version = "=1.14.6" }
31+
solana-metrics = { version = "=1.14.6" }
32+
solana-runtime = { version = "=1.14.6" }
33+
solana-sdk = { version = "=1.14.6" }
34+
solana-transaction-status = { version = "=1.14.6" }
3535
thiserror = "1.0.37"
3636
tokio-postgres = "0.7.7"
3737

@@ -40,11 +40,12 @@ libc = "0.2.134"
4040
libloading = "0.7.3"
4141
serial_test = "0.9.0"
4242
socket2 = { version = "0.4.7", features = ["all"] }
43-
solana-account-decoder = { version = "=1.14.3" }
44-
solana-core = { version = "=1.14.3" }
45-
solana-local-cluster = { version = "=1.14.3" }
46-
solana-net-utils = { version = "=1.14.3" }
47-
solana-streamer = { version = "=1.14.3" }
43+
44+
solana-account-decoder = { version = "=1.14.6" }
45+
solana-core = { version = "=1.14.6" }
46+
solana-local-cluster = { version = "=1.14.6" }
47+
solana-net-utils = { version = "=1.14.6" }
48+
solana-streamer = { version = "=1.14.6" }
4849
tempfile = "3.3.0"
4950

5051
[package.metadata.docs.rs]

scripts/create_schema.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ CREATE TABLE transaction (
167167
meta "TransactionStatusMeta",
168168
write_version BIGINT,
169169
updated_on TIMESTAMP NOT NULL,
170+
index BIGINT NOT NULL,
170171
CONSTRAINT transaction_pk PRIMARY KEY (slot, signature)
171172
);
172173

src/geyser_plugin_postgres.rs

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use {
1111
serde_json,
1212
solana_geyser_plugin_interface::geyser_plugin_interface::{
1313
GeyserPlugin, GeyserPluginError, ReplicaAccountInfoVersions, ReplicaBlockInfoVersions,
14-
ReplicaTransactionInfo, ReplicaTransactionInfoVersions, Result, SlotStatus,
14+
ReplicaTransactionInfoVersions, Result, SlotStatus,
1515
},
1616
solana_measure::measure::Measure,
1717
solana_metrics::*,
@@ -373,7 +373,7 @@ impl GeyserPlugin for GeyserPluginPostgres {
373373
)));
374374
}
375375
Some(client) => match transaction_info {
376-
ReplicaTransactionInfoVersions::V0_0_1(transaction_info) => {
376+
ReplicaTransactionInfoVersions::V0_0_2(transaction_info) => {
377377
if let Some(transaction_selector) = &self.transaction_selector {
378378
if !transaction_selector.is_transaction_selected(
379379
transaction_info.is_vote,
@@ -393,32 +393,10 @@ impl GeyserPlugin for GeyserPluginPostgres {
393393
});
394394
}
395395
}
396-
ReplicaTransactionInfoVersions::V0_0_2(transaction_info) => {
397-
if let Some(transaction_selector) = &self.transaction_selector {
398-
if !transaction_selector.is_transaction_selected(
399-
transaction_info.is_vote,
400-
Box::new(transaction_info.transaction.message().account_keys().iter()),
401-
) {
402-
return Ok(());
403-
}
404-
} else {
405-
return Ok(());
406-
}
407-
408-
let replication_transaction_info = ReplicaTransactionInfo {
409-
is_vote: transaction_info.is_vote,
410-
signature: transaction_info.signature,
411-
transaction: transaction_info.transaction,
412-
transaction_status_meta: transaction_info.transaction_status_meta,
413-
};
414-
415-
let result = client.log_transaction_info(&replication_transaction_info, slot);
416-
417-
if let Err(err) = result {
418-
return Err(GeyserPluginError::SlotStatusUpdateError{
419-
msg: format!("Failed to persist the transaction info to the PostgreSQL database. Error: {:?}", err)
420-
});
421-
}
396+
_ => {
397+
return Err(GeyserPluginError::SlotStatusUpdateError{
398+
msg: format!("Failed to persist the transaction info to the PostgreSQL database. Unsupported format.")
399+
});
422400
}
423401
},
424402
}

src/postgres_client/postgres_client_transaction.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use {
1010
postgres::{Client, Statement},
1111
postgres_types::{FromSql, ToSql},
1212
solana_geyser_plugin_interface::geyser_plugin_interface::{
13-
GeyserPluginError, ReplicaTransactionInfo,
13+
GeyserPluginError, ReplicaTransactionInfoV2,
1414
},
1515
solana_runtime::bank::RewardType,
1616
solana_sdk::{
@@ -149,6 +149,7 @@ pub struct DbTransaction {
149149
/// Given a slot, the transaction with a smaller write_version appears
150150
/// before transactions with higher write_versions in a shred.
151151
pub write_version: i64,
152+
pub index: i64,
152153
}
153154

154155
pub struct LogTransactionRequest {
@@ -487,7 +488,7 @@ impl From<&TransactionStatusMeta> for DbTransactionStatusMeta {
487488

488489
fn build_db_transaction(
489490
slot: u64,
490-
transaction_info: &ReplicaTransactionInfo,
491+
transaction_info: &ReplicaTransactionInfoV2,
491492
transaction_write_version: u64,
492493
) -> DbTransaction {
493494
DbTransaction {
@@ -521,6 +522,7 @@ fn build_db_transaction(
521522
.to_vec(),
522523
meta: DbTransactionStatusMeta::from(transaction_info.transaction_status_meta),
523524
write_version: transaction_write_version as i64,
525+
index: transaction_info.index as i64,
524526
}
525527
}
526528

@@ -530,8 +532,8 @@ impl SimplePostgresClient {
530532
config: &GeyserPluginPostgresConfig,
531533
) -> Result<Statement, GeyserPluginError> {
532534
let stmt = "INSERT INTO transaction AS txn (signature, is_vote, slot, message_type, legacy_message, \
533-
v0_loaded_message, signatures, message_hash, meta, write_version, updated_on) \
534-
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) \
535+
v0_loaded_message, signatures, message_hash, meta, write_version, index, updated_on) \
536+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) \
535537
ON CONFLICT (slot, signature) DO UPDATE SET is_vote=excluded.is_vote, \
536538
message_type=excluded.message_type, \
537539
legacy_message=excluded.legacy_message, \
@@ -540,6 +542,7 @@ impl SimplePostgresClient {
540542
message_hash=excluded.message_hash, \
541543
meta=excluded.meta, \
542544
write_version=excluded.write_version, \
545+
index=excluded.index,
543546
updated_on=excluded.updated_on";
544547

545548
let stmt = client.prepare(stmt);
@@ -580,6 +583,7 @@ impl SimplePostgresClient {
580583
&transaction_info.message_hash,
581584
&transaction_info.meta,
582585
&transaction_info.write_version,
586+
&transaction_info.index,
583587
&updated_on,
584588
],
585589
);
@@ -600,7 +604,7 @@ impl SimplePostgresClient {
600604
impl ParallelPostgresClient {
601605
fn build_transaction_request(
602606
slot: u64,
603-
transaction_info: &ReplicaTransactionInfo,
607+
transaction_info: &ReplicaTransactionInfoV2,
604608
transaction_write_version: u64,
605609
) -> LogTransactionRequest {
606610
LogTransactionRequest {
@@ -614,7 +618,7 @@ impl ParallelPostgresClient {
614618

615619
pub fn log_transaction_info(
616620
&mut self,
617-
transaction_info: &ReplicaTransactionInfo,
621+
transaction_info: &ReplicaTransactionInfoV2,
618622
slot: u64,
619623
) -> Result<(), GeyserPluginError> {
620624
self.transaction_write_version
@@ -1295,7 +1299,7 @@ pub(crate) mod tests {
12951299

12961300
fn check_transaction(
12971301
slot: u64,
1298-
transaction: &ReplicaTransactionInfo,
1302+
transaction: &ReplicaTransactionInfoV2,
12991303
db_transaction: &DbTransaction,
13001304
) {
13011305
assert_eq!(transaction.signature.as_ref(), db_transaction.signature);
@@ -1364,7 +1368,7 @@ pub(crate) mod tests {
13641368
.unwrap();
13651369

13661370
let transaction_status_meta = build_transaction_status_meta();
1367-
let transaction_info = ReplicaTransactionInfo {
1371+
let transaction_info = ReplicaTransactionInfoV2 {
13681372
signature: &signature,
13691373
is_vote: false,
13701374
transaction: &transaction,
@@ -1409,7 +1413,7 @@ pub(crate) mod tests {
14091413
.unwrap();
14101414

14111415
let transaction_status_meta = build_transaction_status_meta();
1412-
let transaction_info = ReplicaTransactionInfo {
1416+
let transaction_info = ReplicaTransactionInfoV2 {
14131417
signature: &signature,
14141418
is_vote: true,
14151419
transaction: &transaction,

0 commit comments

Comments
 (0)