Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stringify fixes #6

Merged
merged 2 commits into from
Jun 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/log_server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { setupCollectorListener } from './log_subscription/CollectorListener'
import { evmLogSubscriptionHandler } from './log_subscription/Handler'
import { removeLogSubscriptionBySocketId } from './log_subscription/SocketManager'
import * as Storage from './storage'
import { Utils as StringUtils } from '@shardus/types'

const start = async (): Promise<void> => {
// Init dependencies
Expand Down Expand Up @@ -62,11 +63,11 @@ const evmLogSubscriptionController = (connection: SocketStream): void => {

connection.socket.on('message', (message) => {
try {
const payload = JSON.parse(message.toString())
const payload = StringUtils.safeJsonParse(message.toString())
evmLogSubscriptionHandler.onMessage(connection, payload, socketId)
return
} catch (e) {
connection.socket.send(JSON.stringify({ error: e.message }))
connection.socket.send(StringUtils.safeStringify({ error: e.message }))
return
}
})
Expand Down
5 changes: 3 additions & 2 deletions src/log_subscription/CollectorSocketconnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Server, Socket } from 'socket.io'
import { Data } from '../class/validateData'
import { config as CONFIG } from '../config'
import { Receipt } from '../types'
import { Utils as StringUtils } from '@shardus/types'

// constants
const ConnectionEvent = 'connection'
Expand Down Expand Up @@ -36,14 +37,14 @@ export const setupCollectorSocketServer = (): void => {

export const forwardCycleData = async (data: Data): Promise<void> => {
for (const socket of registeredLogServers.values()) {
socket.emit(CycleDataWsEvent, data)
socket.emit(CycleDataWsEvent, StringUtils.safeStringify(data))
}
console.log(`Forwarded cycle data to ${registeredLogServers.size} LogServers`)
}

export const forwardReceiptData = async (data: Receipt[]): Promise<void> => {
for (const socket of registeredLogServers.values()) {
socket.emit(ReceiptDataWsEvent, data)
socket.emit(ReceiptDataWsEvent, StringUtils.safeStringify(data))
}
/* prettier-ignore */ if (CONFIG.verbose) console.log(`Forwarded receipt data to ${registeredLogServers.size} LogServers`)
}
7 changes: 4 additions & 3 deletions src/storage/log.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import * as db from './sqlite3storage'
import { extractValues, extractValuesFromArray } from './sqlite3storage'
import { config } from '../config/index'
import { isArray } from 'lodash'
import { Utils as StringUtils } from '@shardus/types'

export interface Log<L = object> {
cycle: number
Expand Down Expand Up @@ -177,7 +178,7 @@ export async function queryLogs(
logs = await db.all(sql + sqlQueryExtension, inputs)
if (logs.length > 0) {
logs.forEach((log: DbLog) => {
if (log.log) (log as Log).log = JSON.parse(log.log)
if (log.log) (log as Log).log = StringUtils.safeJsonParse(log.log)
})
}
} catch (e) {
Expand Down Expand Up @@ -217,7 +218,7 @@ export async function queryLogsBetweenCycles(
logs = await db.all(sql, [startCycleNumber, endCycleNumber])
if (logs.length > 0) {
logs.forEach((log: DbLog) => {
if (log.log) (log as Log).log = JSON.parse(log.log)
if (log.log) (log as Log).log = StringUtils.safeJsonParse(log.log)
})
}
} catch (e) {
Expand Down Expand Up @@ -315,7 +316,7 @@ export async function queryLogsByFilter(logFilter: LogFilter, limit = 5000): Pro
logs = await db.all(sql, queryParams)
if (logs.length > 0) {
logs.forEach((log: DbLog) => {
if (log.log) (log as Log).log = JSON.parse(log.log)
if (log.log) (log as Log).log = StringUtils.safeJsonParse(log.log)
})
}

Expand Down
2 changes: 1 addition & 1 deletion src/utils/crypto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export const hashObj = core.hashObj
export type SignedMessage = SignedObject

export function sign<T>(obj: T): T & SignedObject {
const objCopy = JSON.parse(core.stringify(obj))
const objCopy = StringUtils.safeJsonParse(StringUtils.safeStringify(obj))
core.signObj(objCopy, COLLECTOR_CONFIG.collectorInfo.secretKey, COLLECTOR_CONFIG.collectorInfo.publicKey)
return objCopy
}
Expand Down
3 changes: 2 additions & 1 deletion src/utils/decodeEVMRawTx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { TransactionFactory, Transaction, TransactionType } from '@ethereumjs/tx
import { bytesToHex, toAscii, toBytes } from '@ethereumjs/util'
import { RawTxData } from '../types'
import { config } from '../config'
import { Utils as StringUtils } from '@shardus/types'

export type TransactionObj =
| Transaction[TransactionType.Legacy]
Expand Down Expand Up @@ -50,7 +51,7 @@ export type StakeTxBlobFromEVMTx =
export function getStakeTxBlobFromEVMTx(transaction: StakeTxBlobFromEVMTx): unknown {
try {
const stakeTxString = toAscii(bytesToHex(transaction.data))
return JSON.parse(stakeTxString)
return StringUtils.safeJsonParse(stakeTxString)
} catch (e) {
console.log('Unable to get stakeTxBlobFromEVMTx', e)
}
Expand Down
Loading