Ash got out today — and he’s really afraid of us outside. Hopefully he’ll come in again when it starts to get cold in a few days (20’s and 30’s overnight!)
Pancake Molds
I had purchased silicone pancake molds a while ago — Anya likes to make fancy shaped pancakes, but I really do not like scrubbing cookie cutters that have been used as pancake forms. Finally tried them out today — they are really easy to use. If you put the part with the lip facing down, pour in some batter, and let them cook … you can pick up the mold and flip it to continue cooking the other side.
Voila — we’ve got heart and flower shaped pancakes:
Kitten Snuggles
Quiet Quitting, 87 hours, and employee exploitation
This past week, I’ve been reading about how Musk expects “dedication” from employees like 87 hour work-weeks and somehow that’s OK because it’s nothing he doesn’t do himself. I’m sure it’s willful ignorance, but how can he not see the difference between the owner of a company putting 80+ hours a week into their company and the person whose 40 hours his company bought being expected to donate another 40+ hours a week to his cause?! Does he get angry at the steel manufacturer because they only deliver five tonnes when he ordered and paid for five tonnes?
BBQ Ribs
Autumn Sunset
Kafka – Messages Not Appearing in Topic
I created a few new Kafka topics for a project today — but, in testing, messages sent to the topic weren’t there. I normally echo some string into “kafka-console-producer.sh” to test messages. Evidently, STDERR wasn’t getting rendered back to my screen this way. I ran the producer script to get the “>” prompt and tried again — voila, a useful error:
[2022-10-31 15:36:23,471] ERROR Error when sending message to topic MyTopic with key: null, value: 4 bytes with error: (org.apache.kafka.clients.pro.internals.ErrorLoggingCallback)
org.apache.kafka.common.InvalidRecordException: Compacted topic cannot accept message without key in topic partition MyTopic-0.
Ohhh — that makes sense! They’ve got an existing process on a different Kafka server, and I just mirrored the configuration without researching what the configuration meant. They use “compact” as their cleanup policy — so messages don’t really age out of the topic. They age out when a newer message with that key gets posted. It’s a neat algorithm that I remember encountering when I first started reading the Kafka documentation … but it’s not something I had a reason to use. The other data we have transiting our Kafka cluster is time-series data where we want all of the info for trending. Having just the most recent, say, CPU utilization on my server isn’t terribly useful. But it makes sense — if I instruct the topic to clean up old data but retain the most recent message for each key … I need to be giving it a key!
Adding a parameter to parse the string into a key/value pair and provide the separator led to data being published to the clients:
echo “test:EchoTest” | /kafka/bin/kafka-console-producer.sh –bootstrap-server $(hostname):9092 –topic MyTopic –property “parse.key=true” –property “key.separator=:”
Office Redesign
The office is almost done! We have most of the bookshelves completed and have started loading the shelves with books. We still need to find a smaller game table for the space between the family room and the office area.
Farm Kitten
This is Ash — our rescue kitten. The Cali-Kitty had four kittens. They were all around on the 27th playing and napping. The morning of the 28th, I woke up really early — just after sunrise. One of the gray kittens was sitting under our garden cart. When he saw me move, he came over to the door and started crying.
This was odd because, just the day before, Anya had observed that we’ve never heard any of these cats talk. I put his food outside (we take it in at night to avoid feeding the raccoons), and he ate while I let the ducks, chickens, and turkeys out. Throughout the day, he was staying near our house, all alone, and crying. But he was afraid of us so dart away any time we opened the door. Finally, we put the small trap out with his food in it. And, in the evening, we had a little gray kitten in the trap.
Scott spent some time getting the kitten to trust him while Anya and I got the birds into their coops. We brought him inside in a larger cage, gave him food and water, and a cat box. Anya sat next to the cage petting him (something that seemed to soothe him). By the next day, we could pick him up and hold him. He purrs when you cuddle and pet him. Anya has been taking him into the bathroom so he has a chance to explore without getting lost somewhere in the house.
Unable to Use JMX Remotely for Kafka Stats
I noticed, today, that our Kafka Manager interface only shows details from one server — the one where we run Kafka Manager. We’ve done everything that we need to do in order to get this working — the port shows as open with nmap, the command to run Kafka includes all of the settings. I’ve even tried setting the JMX hostname, but still there is just one server reporting data
Then I happened across an article online that detailed how JMX actually uses three ports — the configured port 9999 and two other randomly selected and non-configurable ports. I used netstat to list all of the ports in use by the Java PID running my Kafka server and, voila, there were two odd-ball high ports (30000’s and 40000’s). I added those additional ports to the firewall rules and … I’ve got data for all of the Kafka servers!
This is obviously a short-term solution as the two randomly selected ports will be different when I restart the service next time. I’d prefer to leave the firewall in place (i.e. not just open all ports >1024 between the Kafka Manager host and all of the Kafka servers) so might put together a script to identify the “oddball” ports associated to the Java pid and add them to transient firewalld rules. But the last server restart was back in 2021 … so I might just manually add them after the upgrade next week and worry about something ‘better’ next year!