@@ -346,3 +346,61 @@ func TestStatsPriorityQueueAPI(t *testing.T) {
346
346
require .Empty (t , snapshot .CurrentJobs )
347
347
require .Empty (t , snapshot .MustRetryTables )
348
348
}
349
+
350
+ // fix issue 53966
351
+ func TestLoadNullStatsFile (t * testing.T ) {
352
+ // Setting up the mock store
353
+ store := testkit .CreateMockStore (t )
354
+
355
+ // Creating a new TiDB driver and client
356
+ driver := server2 .NewTiDBDriver (store )
357
+ client := testserverclient .NewTestServerClient ()
358
+ cfg := util .NewTestConfig ()
359
+ cfg .Port = client .Port
360
+ cfg .Status .StatusPort = client .StatusPort
361
+ cfg .Status .ReportStatus = true
362
+ cfg .Socket = fmt .Sprintf ("/tmp/tidb-mock-%d.sock" , time .Now ().UnixNano ())
363
+
364
+ // Creating and running the server
365
+ server , err := server2 .NewServer (cfg , driver )
366
+ require .NoError (t , err )
367
+ defer server .Close ()
368
+
369
+ dom , err := session .GetDomain (store )
370
+ require .NoError (t , err )
371
+ server .SetDomain (dom )
372
+ go func () {
373
+ err := server .Run (nil )
374
+ require .NoError (t , err )
375
+ }()
376
+ <- server2 .RunInGoTestChan
377
+ client .Port = testutil .GetPortFromTCPAddr (server .ListenAddr ())
378
+ client .StatusPort = testutil .GetPortFromTCPAddr (server .StatusListenerAddr ())
379
+ client .WaitUntilServerOnline ()
380
+
381
+ // Creating the stats file
382
+ path := "/tmp/stats.json"
383
+ fp , err := os .Create (path )
384
+ require .NoError (t , err )
385
+ require .NotNil (t , fp )
386
+ defer func () {
387
+ require .NoError (t , fp .Close ())
388
+ require .NoError (t , os .Remove (path ))
389
+ }()
390
+ fp .Write ([]byte ("null" ))
391
+ require .NoError (t , err )
392
+
393
+ // Connecting to the database and executing SQL commands
394
+ db , err := sql .Open ("mysql" , client .GetDSN (func (config * mysql.Config ) {
395
+ config .AllowAllFiles = true
396
+ config .Params ["sql_mode" ] = "''"
397
+ }))
398
+ require .NoError (t , err , "Error connecting" )
399
+ tk := testkit .NewDBTestKit (t , db )
400
+ defer func () {
401
+ err := db .Close ()
402
+ require .NoError (t , err )
403
+ }()
404
+ tk .MustExec ("use test" )
405
+ tk .MustExec (fmt .Sprintf ("load stats '%s'" , path ))
406
+ }
0 commit comments