forked from lix-project/lix
libstore: always wake up goals on EOF
all goals do this. it makes no sense to not notify a goal of EOF
conditions because this is the universal signal for "child done"
Change-Id: Ic3980de312547e616739c57c6248a8e81308b5ee
This commit is contained in:
parent
6c0dcd1220
commit
d9af753a7f
|
@ -1363,7 +1363,6 @@ void DerivationGoal::handleChildOutput(int fd, std::string_view data)
|
||||||
void DerivationGoal::handleEOF(int fd)
|
void DerivationGoal::handleEOF(int fd)
|
||||||
{
|
{
|
||||||
if (!currentLogLine.empty()) flushLine();
|
if (!currentLogLine.empty()) flushLine();
|
||||||
worker.wakeUp(shared_from_this());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -162,10 +162,5 @@ void DrvOutputSubstitutionGoal::work()
|
||||||
(this->*state)();
|
(this->*state)();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrvOutputSubstitutionGoal::handleEOF(int fd)
|
|
||||||
{
|
|
||||||
worker.wakeUp(shared_from_this());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,6 @@ public:
|
||||||
std::string key() override;
|
std::string key() override;
|
||||||
|
|
||||||
void work() override;
|
void work() override;
|
||||||
void handleEOF(int fd) override;
|
|
||||||
|
|
||||||
JobCategory jobCategory() const override {
|
JobCategory jobCategory() const override {
|
||||||
return JobCategory::Substitution;
|
return JobCategory::Substitution;
|
||||||
|
|
|
@ -145,7 +145,6 @@ public:
|
||||||
|
|
||||||
virtual void handleEOF(int fd)
|
virtual void handleEOF(int fd)
|
||||||
{
|
{
|
||||||
abort();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void trace(std::string_view s);
|
void trace(std::string_view s);
|
||||||
|
|
|
@ -294,12 +294,6 @@ void PathSubstitutionGoal::handleChildOutput(int fd, std::string_view data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PathSubstitutionGoal::handleEOF(int fd)
|
|
||||||
{
|
|
||||||
worker.wakeUp(shared_from_this());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void PathSubstitutionGoal::cleanup()
|
void PathSubstitutionGoal::cleanup()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -110,7 +110,6 @@ public:
|
||||||
* Callback used by the worker to write to the log.
|
* Callback used by the worker to write to the log.
|
||||||
*/
|
*/
|
||||||
void handleChildOutput(int fd, std::string_view data) override;
|
void handleChildOutput(int fd, std::string_view data) override;
|
||||||
void handleEOF(int fd) override;
|
|
||||||
|
|
||||||
/* Called by destructor, can't be overridden */
|
/* Called by destructor, can't be overridden */
|
||||||
void cleanup() override final;
|
void cleanup() override final;
|
||||||
|
|
|
@ -459,6 +459,7 @@ void Worker::waitForInput()
|
||||||
if (rd == 0 || (rd == -1 && errno == EIO)) {
|
if (rd == 0 || (rd == -1 && errno == EIO)) {
|
||||||
debug("%1%: got EOF", goal->getName());
|
debug("%1%: got EOF", goal->getName());
|
||||||
goal->handleEOF(k);
|
goal->handleEOF(k);
|
||||||
|
wakeUp(goal);
|
||||||
j->fds.erase(k);
|
j->fds.erase(k);
|
||||||
} else if (rd == -1) {
|
} else if (rd == -1) {
|
||||||
if (errno != EINTR)
|
if (errno != EINTR)
|
||||||
|
|
Loading…
Reference in a new issue