@@ -169,11 +169,11 @@ cd contrib/
169
169
170
170
# Clone local-network repo if it doesn't exist
171
171
if [ ! -d " local-network" ]; then
172
- git clone https://github.com/semiotic-ai/local-network.git
172
+ # git clone https://github.com/semiotic-ai/local-network.git
173
+ git clone https://github.com/edgeandnode/local-network.git
173
174
cd local-network
174
175
# Checkout to the horizon branch
175
- # git checkout suchapalaver/test/horizon
176
- git checkout semiotic/horizon_upgrade
176
+ git checkout horizon
177
177
cd ..
178
178
fi
179
179
@@ -212,6 +212,42 @@ if [ -z "$code" ] || [ "$code" == "0x" ]; then
212
212
exit 1
213
213
fi
214
214
echo " Controller contract verified."
215
+
216
+ # Ensure HorizonStaking is deployed before proceeding (agent needs it at startup)
217
+ staking_address=$( jq -r ' ."1337".HorizonStaking.address' horizon.json)
218
+ echo " Checking HorizonStaking contract at $staking_address "
219
+
220
+ # Retry a few times in case chain is still settling
221
+ for i in {1..30}; do
222
+ code=$( docker exec chain cast code $staking_address --rpc-url http://localhost:8545 2> /dev/null || true)
223
+ if [ -n " $code " ] && [ " $code " != " 0x" ]; then
224
+ echo " HorizonStaking contract verified."
225
+ break
226
+ fi
227
+ echo " HorizonStaking not deployed yet (attempt $i /30), waiting..."
228
+ sleep 2
229
+ done
230
+
231
+ # If still no code, force a redeploy of graph-contracts and re-verify
232
+ if [ -z " $code " ] || [ " $code " = " 0x" ]; then
233
+ echo " HorizonStaking has no code; forcing graph-contracts redeploy..."
234
+ # Keep files as files (avoid bind mount turning into a directory)
235
+ echo " {}" > horizon.json
236
+ echo " {}" > subgraph-service.json
237
+ docker compose up -d --no-deps --force-recreate graph-contracts
238
+ # Wait for contracts to be deployed
239
+ interruptible_wait 300 ' docker ps -a | grep graph-contracts | grep -q "Exited (0)"' " Waiting for contracts to be deployed (redeploy)"
240
+
241
+ # Re-check the (possibly updated) staking address and code
242
+ staking_address=$( jq -r ' ."1337".HorizonStaking.address' horizon.json)
243
+ echo " Re-checking HorizonStaking contract at $staking_address "
244
+ code=$( docker exec chain cast code $staking_address --rpc-url http://localhost:8545 2> /dev/null || true)
245
+ if [ -z " $code " ] || [ " $code " = " 0x" ]; then
246
+ echo " ERROR: HorizonStaking still has no code after redeploy. Check 'docker logs graph-contracts'."
247
+ exit 1
248
+ fi
249
+ echo " HorizonStaking contract verified after redeploy."
250
+ fi
215
251
echo " Contract deployment successful."
216
252
217
253
docker compose up -d tap-contracts
@@ -224,43 +260,47 @@ interruptible_wait 300 'docker ps | grep block-oracle | grep -q healthy' "Waitin
224
260
225
261
# export INDEXER_AGENT_SOURCE_ROOT=/home/neithanmo/Documents/Work/Semiotic/indexer-rs/indexer-src
226
262
# If INDEXER_AGENT_SOURCE_ROOT is set, use dev override; otherwise start only indexer-agent
263
+ # export INDEXER_AGENT_SOURCE_ROOT=/home/neithanmo/Documents/Work/Semiotic/indexer-rs/indexer-agent
227
264
if [[ -n " ${INDEXER_AGENT_SOURCE_ROOT:- } " ]]; then
228
- echo " ***********INDEXER_AGENT_SOURCE_ROOT set; using dev override for indexer-agent...************"
229
- docker compose up -d indexer-agent
230
-
265
+ echo " INDEXER_AGENT_SOURCE_ROOT set; using dev override for indexer-agent."
266
+ docker compose -f docker-compose.yaml -f overrides/indexer-agent-dev/indexer-agent-dev.yaml up -d
231
267
else
232
- echo " ***** Starting indexer-agent from image... ***** "
268
+ echo " Starting indexer-agent from oficial release "
233
269
docker compose up -d indexer-agent
234
270
fi
235
271
236
272
echo " Waiting for indexer-agent to be healthy..."
237
273
# timeout 300 bash -c 'until docker ps | grep indexer-agent | grep -q healthy; do sleep 5; done'
238
274
interruptible_wait 300 ' docker ps | grep indexer-agent | grep -q healthy' " Waiting for indexer-agent to be healthy"
239
275
276
+ # Ensure indexer-agent DB migrations completed (denylist tables must exist)
277
+ echo " Waiting for indexer-agent DB migrations (denylist tables) ..."
278
+ # Use double-quoted outer string to avoid single-quote escaping issues in SQL
279
+ interruptible_wait 180 " docker exec postgres psql -U postgres -d indexer_components_1 -tAc \" SELECT to_regclass('public.scalar_tap_denylist')\" | grep -q scalar_tap_denylist" " Waiting for scalar_tap_denylist table"
280
+ interruptible_wait 180 " docker exec postgres psql -U postgres -d indexer_components_1 -tAc \" SELECT to_regclass('public.tap_horizon_denylist')\" | grep -q tap_horizon_denylist" " Waiting for tap_horizon_denylist table"
281
+
240
282
echo " Starting subgraph deployment..."
241
283
docker compose up --build -d subgraph-deploy
242
- sleep 10 # Give time for subgraphs to deploy
284
+ # Wait for subgraph-deploy job to complete successfully, mirroring docker-compose depends_on
285
+ interruptible_wait 600 ' docker ps -a | grep subgraph-deploy | grep -q "Exited (0)"' " Waiting for subgraph-deploy to complete successfully"
243
286
244
287
echo " Starting TAP services..."
288
+
289
+ # Ensure Redpanda is running before starting services that depend on it
290
+ echo " Ensuring redpanda is running..."
291
+ docker compose up -d redpanda
292
+ echo " Waiting for redpanda to be healthy..."
293
+ interruptible_wait 300 ' docker ps | grep redpanda | grep -q healthy' " Waiting for redpanda to be healthy"
294
+
245
295
echo " Starting tap-aggregator..."
246
296
docker compose up -d tap-aggregator
247
297
sleep 10
248
298
249
- # tap-escrow-manager requires subgraph-deploy
299
+ # tap-escrow-manager requires subgraph-deploy and redpanda
250
300
echo " Starting tap-escrow-manager..."
251
301
docker compose up -d tap-escrow-manager
252
- # timeout 90 bash -c 'until docker ps --filter "name=^tap-escrow-manager$" --format "{{.Names}}" | grep -q "^tap-escrow-manager$"; do echo "Waiting for tap-escrow-manager container to appear..."; sleep 5; done'
253
302
interruptible_wait 90 ' docker ps --filter "name=^tap-escrow-manager$" --format "{{.Names}}" | grep -q "^tap-escrow-manager$"' " Waiting for tap-escrow-manager container to appear"
254
303
255
- # Start redpanda if it's not already started (required for gateway)
256
- if ! docker ps | grep -q redpanda; then
257
- echo " Starting redpanda..."
258
- docker compose up -d redpanda
259
- echo " Waiting for redpanda to be healthy..."
260
- # timeout 300 bash -c 'until docker ps | grep redpanda | grep -q healthy; do sleep 5; done'
261
- interruptible_wait 300 ' docker ps | grep redpanda | grep -q healthy' " Waiting for redpanda to be healthy"
262
- fi
263
-
264
304
# Get the network name used by local-network
265
305
NETWORK_NAME=$( docker inspect graph-node --format=' {{range $net,$v := .NetworkSettings.Networks}}{{$net}}{{end}}' )
266
306
echo " Local-network is using Docker network: $NETWORK_NAME "
298
338
299
339
# Run the custom services using the override file
300
340
docker compose -f docker-compose.yml -f docker-compose.override.yml up --build -d
301
- rm docker-compose.override.yml
341
+
302
342
303
343
# Wait for indexer-service and tap-agent to be healthy with better timeouts
304
344
echo " Waiting for indexer-service to be healthy..."
345
385
# Gateway now generates config with increased max_lag_seconds in gateway/run.sh
346
386
# -v "$(pwd)/local-network/tap-contracts.json":/opt/tap-contracts.json:ro \
347
387
docker run -d --name gateway \
348
- --network local-network_default \
388
+ --network " $NETWORK_NAME " \
349
389
-p 7700:7700 \
350
390
-v " $( pwd) /local-network/horizon.json" :/opt/horizon.json:ro \
351
391
-v " $( pwd) /local-network/tap-contracts.json" :/opt/contracts.json:ro \
@@ -376,6 +416,7 @@ interruptible_wait 100 'curl -f http://localhost:7700/ > /dev/null 2>&1' "Waitin
376
416
# Build and start indexer-cli for integration testing (last container)
377
417
echo " Building and starting indexer-cli container for integration testing..."
378
418
docker compose -f docker-compose.yml -f docker-compose.override.yml up --build -d indexer-cli
419
+ rm -f docker-compose.override.yml
379
420
380
421
# Wait for indexer-cli to be ready
381
422
echo " Waiting for indexer-cli to be ready..."
0 commit comments